數字信號處理matlab訓練第【3】彈--求取離散系統的輸出

1.LSI系統的轉移函數

對於一個線性時不變離散時間系統(如下圖所示),我們在之前就已經接觸到了4種不同的描述方法。

在這裏插入圖片描述

1.1 頻率響應

H(ejω)=n=0h(n)ejωn H(e^{j\omega})=\sum_{n=0}^{\infty}h(n)e^{-j\omega n}

1.2 轉移函數

H(z)=n=0h(n)zn H(z)=\sum_{n=0}^{\infty}h(n)z^{-n}

1.3 差分方程

y(n)=k=1Na(k)y(nk)+r=0Mb(r)x(nr) y(n)=-\sum_{k=1}^Na(k)y(n-k)+\sum_{r=0}^Mb(r)x(n-r)

1.4 卷積關係

y(n)=x(n)h(n)=k=x(k)h(nk) y(n)=x(n)*h(n)=\sum_{k=-\infty}^\infty x(k)h(n-k)
上邊的4種方法從不同的角度描述了一個LSI系統的物理特性,他們之間有着密切的聯繫,其聯繫的紐帶就是系統的單位衝激響應h(n)h(n)

1.5 系統的轉移函數H(Z)H(Z)

對上邊的第三式兩邊取Z變換,得
Y(z)=Y(z)k=1Na(k)zk+X(z)r=0Mb(r)zrY(z)[1+k=1Na(k)zk]=X(z)[b(0)+r=1Mb(r)zr] Y(z)=-Y(z)\sum_{k=1}^Na(k)z^{-k}+X(z)\sum_{r=0}^Mb(r)z^{-r}\\ \quad \\Y(z)[1+\sum_{k=1}^Na(k)z^{-k}]=X(z)[b(0)+\sum_{r=1}^Mb(r)z^{-r}]
對上邊的式子進行整理可得
H(z)=Y(z)X(z)=r=0Mb(r)zr1+k=1Na(k)zk H(z)=\frac{Y(z)}{X(z)}=\frac{\sum_{r=0}^Mb(r)z^{-r}}{1+\sum_{k=1}^Na(k)z^{-k}}
上式H(z)H(z)就被稱爲系統的轉移函數。它即可以定義爲系統單位抽樣響應h(n)h(n)的z變換,也可以 定義爲系統的輸出、輸入Z變換之比。

2.matlab編程訓練,求系統的階躍響應

我們之前學過的,如果已經知道系統的h(n)h(n),由於y(n)=x(n)h(n)y(n)=x(n)*h(n),則我們可以輕鬆的使用conv函數將其求得,但是如果我們不知道h(n)h(n),已知Y(z)Y(z)X(z)X(z),需要求y(n)y(n),則我們可以根據公式,
y(n)=k=1Na(k)y(nk)+r=0Mb(r)x(nr)=b(1)x(n)+b(2)x(n1)+...+b(nb+1)x(nnb)a(2)y(n1)...a(na+1)y(nna) y(n)=-\sum_{k=1}^Na(k)y(n-k)+\sum_{r=0}^Mb(r)x(n-r)\\ \quad \\=b(1)x(n)+b(2)x(n-1)+...+b(n_b+1)x(n-n_b)\\ \quad \\-a(2)y(n-1)-...-a(n_a+1)y(n-n_a)
求取我們的y(n)y(n),使用matlab內的一個函數y=filter(b,a,x)y=filter(b,a,x)其中xyabx、y、a和b都是向量。

2.1 編程實訓

已知一個系統的轉移函數如下所示:
H(z)=0.001836+0.007344z1+0.011016z2+0.007374z3+0.001836z413.0544z1+3.8291z22.2925z3+0.55075z4 H(z)=\frac{0.001836+0.007344z^{-1}+0.011016z^{-2}+0.007374z^{-3}+0.001836z^{-4}}{1-3.0544z^{-1}+3.8291z^{-2}-2.2925z^{-3}+0.55075z^{-4}}
求該系統的階躍響應。

%%轉移函數
clc;
clear;
x=ones(100,1);
%定義階躍輸入
t=1:100;
b=[0.001836,0.007344,0.011016,0.007374,0.001836];
%定義向量b
a=[1,-3.0544,3.8291,-2.2925,0.55075];
%定義向量a
y=filter(b,a,x);
%得到y(n)
hold on
h1=plot(t,x,'b');
h2=plot(t,y,'r');
hold off
%畫圖結束
legend([h1,h2],'階躍輸入','階躍響應');
%添加標註

其運行結果爲:
在這裏插入圖片描述

2.2 求取系統的單位抽樣響應h(n)

在我們得到上邊的情況下,如果我們想要得到該系統的單位抽樣響應,編輯mtalab代碼如下:

[h,t]=impz(b,a,40);
%h(n)的長度爲N=40
stem(t,h,'.');
%繪製離散的h(n)
grid on;

其顯示結果如下所示:
在這裏插入圖片描述

2.3 求上述系統的頻率響應

%%得到系統的頻率響應
[H,w]=freqz(b,a,256,'whole',1);
%whole 指定計算的頻率範圍是0-Fs,此處我們設置Fs=1
Hr=abs(H);
%得到絕對值,也就是幅度值
plot(w,Hr,'r','linewidth',2);
%繪製圖形,並且設置顏色和線寬
grid on;
%顯示方格
xlabel('\omega /2\pi');
ylabel('|H(e^{j\omega})|');
title('幅頻響應')
%座標軸設置

輸出圖像如下所示:
在這裏插入圖片描述

3.參考文章

數字信號處理理論、算法與實現(第三版)

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