線性常係數差分方程的Matlab遞推求解

%Matlab信號處理工具箱提供了filter函數,可以實現線性常係數差分方程的遞推求解,調用格式如下:
    %yn=filter(B,A,xn,xi)
    %xi=filtic(B,A,ys,xs)
%調用參數xn是輸入信號向量,B和A是差分方程(2.5.1b)的係數向量,
%即Σ(k=0到N)ak*y(n-k)=Σ(i=0到M)bk*x(n-i),a0=1
    %B=[b0,b1,…,bM]
    %A=[a0,a1,…,aN]
%其中a0=1,如果a0≠1,則用a0對係數向量B和A歸一化。
%xi是與初始條件有關的向量,用xi=filtic(B,A,ys,xs)函數格式計算,
%其中ys和xs是初始化條件向量,即:
        %ys=[y(-1),y(-2),...,y(-N)]
        %xs=[x(-1),x(-2),...,x(-m)]
%如果xn是因果序列,則xs=0,調用時可默認xs,用filtic(B,A,ys,xs)函數
%計算出的xi被稱爲等效初始條件的輸入向量。(默認xs可用filtic(B,A,ys)計算)
%用filter(B,A,xn,xi)函數計算出的yn向量與輸入信號和系統的初始狀態有關,稱爲系統的全響應。如果
%系統的初始條件爲零,就默認xi=0,調用格式爲
        %yn=filter(B,A,xn)
%這樣計算出的yn稱爲系統的零狀態響應
    %例2.5.1的matlab程序:y(n)=a*y(n-1)+x(n);x(n)=δ(n),分別求不同初始條件的輸出序列yn(1)y(-1)=1;
    %(2)y(-1)=1;(3)y(n)=0(n>0)
a=0.8;ys=1;
xn=[1,zeros(1,30)];
B=1;A=[1,-a];
xi=filtic(B,A,xn);
yn=filter(B,A,xn,xi);
n=0:length(yn)-1;
subplot(1,2,1),stem(n,yn,'.');title('(a)');xlabel('n');ylabel('y(n)');
subplot(1,2,2),stem(n,hn,'.');title('(b)');xlabel('n');ylabel('h(n)');

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章