2016-12-06 6 views
1

:: 필터() 함수에서 I는 그 기능적 형태 지체 (2)의 이동 평균 (moving average) 모델을 구현하고자하는 다른 행동을

y[n] = h1*x[n] + h2*x[n-1] + h3*x[n-2] 

갖는 계수 h_true = [h1, h2, h3] 단계;

출력은 n의 스칼라 값입니다. Matlab에는 MA 또는 AR 모델을 구현하는 데 사용할 수있는 filter() 함수가 있습니다. 그러나 출력은 그대로 방정식을 구현했을 때와 filter() 함수를 사용할 때 출력이 다릅니다. 올바른 방법은 무엇입니까? 아래 코드를 찾으십시오. 일부 용어가 i<3에 대한 사라질 않지만

N = 10; 
x = rand(1,N); 
h_true = [1, 0.6, 0.3]; %h1 = 1, h2 = 0.6; h3 = 0.3 
y(1) = 0.0; 
y(2) = 0.0; 
for i =3 : N 
     y(i) = h_true(1)*x(i) + h_true(2)*x(i-1) + h_true(3)*x(i-2); 

    end 

filtered_y = filter(h_true,1,x); 

yfiltered_y

답변

1

다른 모든 조건은 실제로하지. 그러므로 y을 계산할 때 여전히 소멸되지 않는 용어를 고려해야합니다.

y(1) = h_true(1)*x(1); 
y(2) = h_true(1)*x(2) + h_true(2)*x(1); 
for i =3 : N 
    y(i) = h_true(1)*x(i) + h_true(2)*x(i-1) + h_true(3)*x(i-2); 
end