1

使用自迴歸(AR)濾波器在MATLAB一些隨機信號,如果我有一些信號x讓利說濾波MATLAB

x = rand(1,1000) 

,我想使用的自迴歸(AR)過濾器過濾x產生y訂單M。我怎樣才能找到y(n)?因爲自迴歸濾波器需要過去的輸出值進行計算,但我還沒有任何過去的輸出。我只有輸入樣本x

在移動平均線(MA)過濾器,我可以很容易地生成y(n)因爲它只需要過去的投入,我可以很容易地提供,因爲我們有x,如下

for n=1:1000 
    sum=0; 
    for k=1:M+1 
    if (n-k+1>0) 
     sum = sum + (1/M)*x(n-k+1); % MA depends on current & previous input 
    end 
    end 
    y(n)=sum; 
end 

任何人都可以請幫我生成相同的對於自迴歸濾波器?

回答

1

在移動平均濾波器中,您顯示您基本上能夠使用x(1)中第一個提供的值之前的過去輸入樣本爲零的假設來計算輸出。

for n=1:1000 

    % Add feedforward section for ARMA filter 
    % ... for an AR filter this is just sum=x(n) 
    sum = x(n); 

    % Feedback section  
    for k=2:M+1 % normalized AR (assuming a(1) equals 1) 
    if (n-k+1>0) 
     sum = sum + a(k)*y(n-k+1); 
    end 
    end 
    y(n) = sum; 
end 

更一般地,還可以通過接種計算輸出:

類似地,對於自迴歸濾波器你可以通過使假設過去的第一計算值y(1)之前輸出是零計算輸出過濾一些以前已知的初始條件(儘管在你的特定情況下,你指出那些初始條件是未知的)。

+0

謝謝,我知道了,請你回答我如何找到這些過濾水龍頭:a(k)? 是否有必要使用尤爾沃克公式找到(k)或有其他出路? –

+0

查找水龍頭'a(k)'相當於[數字濾波器設計](https://en.wikipedia.org/wiki/Filter_design#Digital_filters)。從試驗和錯誤極點到最小二乘法有很多方法。 Yule-Walker方程是給定某個數據序列(也可以用作濾波器設計方法)來估計a(k)的一種方法。 – SleuthEye

+0

@ SleuthEye:你能幫我回答一個類似的問題嗎?即使很少的提示將高度讚賞http://dsp.stackexchange.com/questions/27494/filtering-a-signal-using-autoregressive-ar-filter-and-finding-the-coeff-of-ar –