2017-09-10 2 views
-1

나는 디지털 신호 처리 과정을 택하고 있는데,이 과정에서 Matlab을 사용해야한다. 나는 아직도 아주 초보자이기 때문에 이것은 매우 기본적인 것이지만 미안하다. 그러나 나는 이것을 위해 어떻게 구글을 해야할지 모른다.Matlab에서 벡터의 이전 요소를 사용하는 방법은 무엇입니까?

선형성을 검사해야합니다. 나는 randn(1,100)로 만든 벡터의 몇 가지를 가지고 있고 나는

F{a·x1 [n]+b·x2 [n]} = a·F{x1 [n]}+b·F{x2 [n]} 

이 때 벡터에 추가 예를 F{x[n]} = x[n] + 2 쉽게 있는지 확인하는 데 사용할 예정하고있다.

문제 중 하나는 F{x[n]} = ¼ (x[n]+2·x[n-1]+x[n-2])이며 벡터의 이전 2 개 요소에 액세스해야합니다. 어떻게해야합니까? 하나는 F{x[n]} = n·x[n]입니다. 여기에도 요소의 특정 인덱스가 필요합니다.

편집 : 답장을 보내 주셔서 감사합니다. 나는 이것에 접근하는 방법을 정말로 모르기 때문에 나는 시도 할 샘플 코드를 생각할 수 없었다. 나는 n-1과 n-2 값에 대해 이동 된 벡터를 만들고 n * x [n]에 대해 별도의 인덱스 벡터를 사용해야한다고 생각했습니다. 그래서 나는 잘못된 각도에서이 모든 문제에 접근하고있었습니다. 이것은 아마도 가장 우아한 해결책은 아니지만 작동합니다. 누군가의 시간을 낭비해서 죄송합니다.

+0

난 당신이있어 실현 (https://www.mathworks.com/help/matlab/math/matrix-indexing.html) –

+1

에서 [* 문서 *]를 읽고 초보자이지만 모든 MATLAB 문법에 맞지 않는 코드 형식을 사용하여이 질문을 약간 분명하게 만들었습니다. 가장 기본적인 수준에서 대괄호가 아닌 괄호를 사용하여 배열 요소에 액세스하고 중괄호는 함수를 호출하지 않는 셀 배열에 액세스하기위한 것입니다. 나는 종이 *에서 이것을 어떻게 할 것인가를 정의함으로써 시작하고, 수학적으로 무엇을하려고하는지, 그리고 어떤 코드를 시도했는지 명확하게 보여줍니다. – Wolfie

답변

1

간단합니다.

>> x=[1,2,3,4] 
>> x(2-1) 
ans = 
    1 

제한을 초과하지 않도록하십시오 (예 : 색인은 1부터 시작해야하므로 x (0)은 오류가 발생합니다).

매트랩
0
x = randn(1,1000); 
res = f(x,5); 

function res = f(x,n) 
    if ((n < 3) || (n > numel(x)) 
     error('Be careful with index overflows!'); 
    end 

    res = 0.25 * (x(n) + (2 * x(n - 1)) + x(n - 2)); 
end 

는 숫자 배열 (후자 당신은 또한 그래서 당신은 그것의 검색하기 위해 배열의 길이를 알 필요가 없습니다 end을 사용할 수 있습니다 1length 사이의 값으로 인덱싱 할 수 있습니다 마지막 값). 예 :

>> x = [1 4 7 3 2 9] 

x = 

    1  4  7  3  2  9 

>> x(1) 

ans = 

    1 

>> x(2) 

ans = 

    4 

>> x(5-2) % the index is 3 here 

ans = 

    7 

>> x(6) 

ans = 

    9 

>> x(end) 

ans = 

    9 

Matrix Indexing In Matlab

관련 문제