第一篇:實驗二離散時間信號分析
實驗二離散時間信號分析
一、實驗目的1.掌握各種常用的序列,理解其數學表達式和波形表示。
2.掌握在計算機中生成及繪制數字信號波形的方法。
3.掌握序列的相加、相乘、移位、反褶等基本運算及計算機實現與作用。
4.掌握線性卷積軟件實現的方法。
5.掌握計算機的使用方法和常用系統軟件及應用軟件的使用。
6.通過編程,上機調試程序,進一步增強使用計算機解決問題的能力。
二、實驗原理
1.序列的基本概念
離散時間信號在數學上可用時間序列{x(n)}來表示,其中x(n)代表序列的第n個數字,n代表時間的序列,n的取值范圍為???n??的整數,n取其它值x(n)沒有意義。離散時間信號可以是由模擬信號通過采樣得到,例如對模擬信號xa(t)進行等間隔采樣,采樣間隔為T,得到{xa(nT)}一個有序的數字序列就是離散時間信號,簡稱序列。
2.常用序列
常用序列有:單位脈沖序列(單位抽樣)?(n)、單位階躍序列u(n)、矩形序列RN(n)、實指數序列、復指數序列、正弦型序列等。
3.序列的基本運算
序列的運算包括移位、反褶、和、積、標乘、累加、差分運算等。
4.序列的卷積運算
y(n)?
m????x(m)h(n?m)?x(n)?h(n)?
上式的運算關系稱為卷積運算,式中?代表兩個序列卷積運算。兩個序列的卷積是一個序列與另一個序列反褶后逐次移位乘積之和,故稱為離散卷積,也稱兩序列的線性卷積。其計算的過程包括以下4個步驟。
(1)反褶:先將x(n)和h(n)的變量n換成m,變成x(m)和h(m),再將h(m)以縱軸為對稱軸反褶成h(?m)。
(2)移位:將h(?m)移位n,得h(n?m)。當n為正數時,右移n位;當n為負數時,左移n位。
(3)相乘:將h(n?m)和x(m)的對應點值相乘。
(4)求和:將以上所有對應點的乘積累加起來,即得y(n)。
5.matlab命令
1、單位采樣序列:可用MATLAB中的zeros函數實現;
X=[1 zeros(1,n-1)]
2、單位階躍序列:這一序列可用MATLAB中的zeros函數實現;
X=ones(1,N)
3、實指數序列;
n=0:N-1;
x=a.^n;
4、正弦波:
t=0:0.01*pi:2*pi
x=sin(2*pi*t);
plot(t,x);
xlabel(‘時間t’);
ylabel(‘幅值y’);
5、移位
用MATLAB編寫一個移位函數sigshift()
function [y,m]=sigshift(x,n,k)
%implements y(m+k)=x(n)
m=n+k;
y=x;
把上面的矩形序列右移3位
n0=0;
n1=-10;
n2=10;
n=[n1:n2];
x=[(n-n0)>=0&(n-4)<=0];
k=3;
[y,n]=sigshift(x,n,k);
stem(n,y);
xlabel('n');ylabel('x(n)');
title('step sequence');
grid6、翻褶
用MATLAB編寫一個翻褶函數sigfold()
function [y,n]=sigfold(x,m,k)
y=fliplr(x);
n=-fliplr(n);
用MATLAB編寫一個程序把上面的矩形序列翻褶
三、主要實驗儀器及材料
微型計算機、Matlab6.5教學版、TC編程環境。
四、實驗內容
1.知識準備
認真復習以上基礎理論,理解本實驗所用到的實驗原理。
2.離散時間信號(序列)的產生。
利用MATLAB編程產生和繪制下列有限長序列:
(1)單位脈沖序列?(n)
(2)單位階躍序列u(n)
(3)矩形序列R8(n)
(4)正弦型序列x(n)?Asin((5)任意序列 ?5n??3)
x(n)??(n)?2?(n?1)?3?(n?2)?4?(n?3)?5?(n?4)
h(n)??(n)?2?(n?1)??(n?2)?2?(n?3)
3.序列的運算
利用MATLAB編程完成上述兩序列的移位、反褶等運算,并繪制運算后序列的波形。
4.卷積運算
利用MATLAB編制一個計算兩個序列線性卷積的通用程序,計算上述兩序列x(n)?h(n),并繪制卷積后序列的波形。
5.上機調試并打印或記錄實驗結果。
6.完成實驗報告。
五、實驗報告要求
1.簡述實驗原理及目的。
2.列出計算卷積的公式,畫出程序框圖,并列出實驗程序清單(可略)(包括必要的程序說明)。
3.記錄調試運行情況及所遇問題的解決方法。
4.給出實驗結果,并對結果作出分析。
第二篇:實驗七離散時間信號和系統
實驗七 離散時間信號和系統
§7.1離散時間正弦信號
目的學習創建和分析離散時間正弦信號。
相關知識
離散時間正弦和余弦信號能夠用復指數信號表示,即
1j?n(e?e?j?n)21j?n?j?nsinn?()?(e?e)2jcosn?()?
基本題
1.考慮下面離散時間信號:xM[n]?sin??2?Mn??,假設?N?N=12。對于M=4,5,7
和10,在0?n?2N?1區間上畫出xM[n]。用stem創建這些圖,并在圖的各坐標軸上給出適當標注。每一個信號的基波周期是什么?由任意的整數M和N值,一般如何來確定信號的基波周期?務必考慮M?N的情況。
§7.2離散時間信號時間變量的變換
目的主要研究離散時間信號的延時與反褶運算。
基本題
1.定義一個MATLAB向量nx是在?3?n?7上的時間變量,而MATLAB向量x是信號x[n]在這些樣本上的值,x[n]給出如下:
?2,n?0?1,n?2??x[n]???1,n?
3?3,n?4???0,其余n
請正確定義x[n],用stem(nx,x)畫出該離散時間序列。
2.定義MATLAB向量y1~y4,來表示下列離散時間信號:
y1[n]?x[n?2]
y2[n]?x[n?1]
y3[n]?x[?n]
y4[n]?x[?n?1]
為此,應該定義y1~y4,關鍵是要正確定義標號向量ny1~ny4。首先應判斷當變換到yi[n]時,一個給定的x[n]樣本的變量時如何改變的。標號向量不必要跨于和nx相同的一組變量值,但至少都是11個樣本長,并包含了與有關信號全部非零樣本的變量值。
§7.3離散時間系統的性質
目的懂得如何來證明一個系統滿足或不滿足某一給定性質。
相關知識
本課程研究的離散時間系統通常是用幾個性質來表征的,如線性、時不變、穩定性、因果性及可逆性等。
基本題
1.系統y[n]?sin??2x[n]?不是線性的。利用信號x1[n]??[n]和x2[n]?2?[n]來證明該系統是如何違反線性性質的。
2.系統y[n]?x[n]?x[n?1]不是因果的。利用信號x[n]?u[n]證明它。定義MATLAB向量x和y分別代表?5?n?9上的輸入和?6?n?9上的輸出。
中等題
3.系統y[n]?log?x[n]?不是穩定的。
§7.4實現一階差分方程
目的學習求解自遞歸差分方程。
相關知識
離散時間系統往往用線性常系數差分方程來實現。兩種最簡單的差分方程是一階移動平均y[n]?x[n]?bx[n?1]和一階自遞歸y[n]?ay[n?1]?x[n],能用這些簡單系統對許多實際系統進行建模或近似。例如,一階自遞歸可以用于銀行帳戶建模,x[n]是第n次的存款或取款,這時y[n]就是第n次的結余,而a?1?r就是利率為r的復利。
深入題
1.寫出一個函數y=diffeqn(a,x,yn1),該函數計算y[n]?ay[n?1]?x[n]所描述的因果系統的輸出y[n]。輸入向量x包含0?n?N?1內的x[n],yn1提供y[-1]的值。輸出向量y包含0?n?N?1內的y[n]。M文件的第一行應該讀出function y=diffeqn(a,x,yn1)
提示:從y[-1]計算y[0]是自遞歸的第一步。在M文件中利用for循環從n?0開始依次計算到較大n值的y[n]。
2.假設a?1,y[?1]?0,而且僅關心0?n?30內的輸出。利用這個函數計算x1[n]??[n]和x2[n]?u[n]時的響應,用stem畫出每個響應。
第三篇:武漢工程大學matlab實驗二離散時間信號的分析實驗
武漢工程大學
數字信號處理實驗報告二
專業班級:
14級通信03班 學生姓名:秦重雙 學號:
1404201114 實驗時間:
2017年5月3日 實驗地點:
4B315 指導老師:楊述斌
實驗一離散時間信號的分析實驗
一、實驗目的
① 認識常用的各種信號,理解其數學表達式和波形表示。② 掌握在計算機中生成及繪制數值信號波形的方法。③ 掌握序列的簡單運算及計算機實現與作用。
④ 理解離散時間傅里葉變換、Z變換及它們的性質和信號的頻域特性。
二、實驗設備
計算機,MATLAB語言環境。
三、實驗基礎理論
1、序列的相關概念
離散時間信號用一個稱為樣本的數字序列來表示。一般用{x[n]}表示,其中自變量n的取值范圍是﹣∞到﹢∞之間的整數。為了表示方便,序列通常直接用x[n]表示。
離散時間信號可以是一個有限長序列,也可以是一個無限長序列。有限長(也稱為有限時寬)序列僅定義在有限的時間間隔中:﹣∞≤N1 ≤N2 ≤+∝.有限長序列的長度或時寬為N=N1-N2+1。
滿足x[n+kN]=x[n](對于所有n)的序列稱為周期為N的周期序列,其中N取任意正整數;k取任意整數;
2、常見序列
常見序列有單位取樣值信號、單位階躍序列、矩形序列、斜變序列、單邊指數序列、正弦序列、復指數序列等。
3、序列的基本運算
序列的基本運算有加法、乘法、倒置(反轉)、移位、尺度變換、卷積等。
4、離散傅里葉變換的相關概念
5、Z變換的相關概念
四.實驗內容與步驟
1、知識準備
認真復習以上基礎理論,理解本實驗所用到的實驗原理。
2、離散時間信號(序列)的產生
利用MATLAB語言編程和繪制單位樣值信號、單位階躍序列、指數序列、正弦序列及隨機離散信號的波形,以加深對離散信號時域表示的理解。① 單位取樣值信號
Matlab程序
x=0;y=1;stem(x,y);title('單位樣值');axis([-2,2,0,1]);
② 單位階躍序列 Matlab程序
n0=0;n1=-5;n2=5;n=[n1:n2];x=[(n-n0)>=0];stem(n,x);xlabel('n');ylabel('x(n)');title('單位階躍序列');
③ 指數序列、正弦序列 Matlab程序
n=[0:10];x=(1/3).^n;stem(n,x);xlabel('n');ylabel('x(n)');title('指數序列');
n=[-20:20];x=2*sin(0.5.*n);stem(n,x);xlabel('n');ylabel('x(n)');axis([-20,20,-3,3]);title('正弦序列');
④ 隨機離散信號矩形序列 Matlab程序
n=[1:10];x=rand(1,10);stem(n,x);xlabel('n');ylabel('x(n)');title('隨機序列');
3、序列的運算
數字信號處理的目的,就是從一個或幾個給定的離散時間信號中產生一個具有所需性質的信號。處理算法由加法、乘法、倒置(反轉)、移位、尺度變換、卷積等基本運算組合構成。此部分實驗將通過幾個簡單常見的例子說明這些基本運算的實際運用,以便進一步理解序列的簡單運算及計算機實現與作用。(1)信號平滑 利用MATLAB語言編程實現信號平滑運算。信號平滑是數字信號處理應用中的一個常見的算法,以慮出被加性噪聲污染的信號中的噪聲。假定信號s[n]被噪聲d[n]所污染,得到了一個含有加性噪聲的信號x[n]=s[n]+d[n]。要得到無污染的信號,可用簡單的信號平滑即信號的加法實現。例如,采用三點(可選,以信號特點來定)平滑來實現。y[n]=(x[n-1]+x[n]+x[n+1])/3 由此可以理解平滑濾波的處理方法。
Matlab程序
r=65;
d=0.8*(rand(r,1)-0.5);m=0:r-1;s=2*m.*(0.9.^m);x=s+d';subplot(2,1,1);
plot(m,d','r-',m,s,'g--',m,x,'b-.');xlabel('n');ylabel('振幅');
legend('d[n]','s[n]','x[n]');x1=[0 0 x];x2=[0 x 0];x3=[x 0 0];y=(x1+x2+x3)/3;subplot(2,1,2);
plot(m,y(2:r+1),'r-',m,s,'g--');legand('y[n]','s[n]');xlabel('n');ylabel('振幅');
(2)調制信號的產生
利用MATLAB語言編程實現信號的調制。調制信號是工程應用中常用的一類信號,調制信號的產生可以通過序列的乘法運算得到。例如,用低頻調制信號xL[n]=cos(wln)來調制高頻正弦信號xH[n]=cos(wHn),就可得到振幅調制信號y[n]。
y[n]=A(1+m*xL[n])xH[n]=A(1+mcos(wLn))cos(wHn)其中m稱為調制指數,用來確保(1+m*xL[n])在所有可能的n的情況下m都是正數。以上式進行編程即可實現調制的目的。
Matlab程序
Fm=10;Fc=100;Fs=500;k=0:199;t=k/Fs;x=sin(2*pi*Fm*t);y=x.*cos(2*pi*Fc*t);X=fft(x,256);Y=fft(y,256);subplot(2,2,1);plot(x);
xlabel('t(s)');ylabel('x');title('原信號');
subplot(2,2,2);plot(X);
plot([-128:127],fftshift(abs(X)));xlabel('w');ylabel('X(jw)');title('原信號頻譜');
subplot(2,2,3);plot(y);xlabel('t(s)');ylabel('y');title('調制信號');subplot(2,2,4);
plot(Y);plot([-128:127],fftshift(abs(Y)));xlabel('w');ylabel('Y(jw)');title('調制信號頻譜');
(3)卷積的計算
用MATLAB語言編程可實現信號卷積運算。卷積是數字信號處理中非常重要的一個運算,用卷積可以計算一個序列通過離散系統后的響應信息。如可以編程實現9點對7點(序列長度可以自己設定)的序列卷積運算。
Matlab程序
x=[0 0.5 1 1.5 0];nx=0:4;h=[1 1 1 0 0];nh=0:4;[y,ny]=conv_m(x,nx,h,nh);subplot(2,2,1);stem(nx,x);title('序列x');xlabel('n');ylabel('x(n)');subplot(2,2,2);stem(nh,h);title('序列h');xlabel('n');ylabel('h(n)');subplot(2,2,3);stem(ny,y);title('');xlabel('n');ylabel('y(n)');
conv_m函數程序
function[y,ny]=conv_m(x,nx,h,nh)%信號處理的卷積程序
%[y,ny]=conv_m(x,nx,h,nh)%y=卷積結果
%ny=y的基底(support);%nx=x的基底;%h=基底nh上的第二個信號 %nh=h的基底 nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv(x,h);end
兩
序
列
卷
積
(4)序列的離散傅里葉變換,Z變換及信號頻域特性 ? 用MATLAB語言編程實現信號離散傅里葉的正反變換。Matlab程序
xn=[1,1,1,1];N=4;k=dft(xn,N)' Xk=[4,0,0,0];N=4;Xk=idft(xn,N)' xn=[1,1,1,1];N=length(xn);n=0:N-1;k=0:N-1;Xk=xn*exp(-j*2*pi/N).^(n'*k);x=(Xk*exp(j*2*pi/N).^(n'*k))/N;subplot(1,2,2);stem(k,abs(Xk));grid on;title('|X(k)|');axis([-1,N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]);subplot(1,2,1);stem(n,xn);grid;title('x(n)');axis([-1,N,1.1*min(xn),1.1*max(xn)]);
dft函數程序
function[Xk]=dft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;end
idft函數程序
function[Xk]=idft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);Xk=xn*WNnk/N;
end
? 用MATLAB語言編程實現信號的圓周移位、圓周卷積、驗證DFT的圓周時移、圓周卷積性質和圓周卷積與線性卷積的關系。
圓周移位 Matlab程序
n=[0:10];M=6;N=11;x=10*0.8.^n;y=cirshift(x,M,N);subplot(2,1,1);stem(n,x);
title('?-DòáD2¨D?');xlabel('n');ylabel('x(n)');subplot(2,1,2);stem(n,y);
title('?2?üò???DòáD2¨D?');xlabel('n');ylabel('y(n)');
sigmod函數程序
function[ m ]= sigmod(n,N);m=rem(n,N);m=m+N;m=rem(m,N);end
cirshift函數程序
function[ y ]= cirshift(x,m,N);if length(x)>N
error('N must be greater than length(x)');end
x=[x zeros(1,N-length(x))];n=[0:N-1];n=sigmod(n-m,N);y=x(n+1);end
圓周卷積
Matlab程序
x1=[1 2 2];n1=[0:2];x2=[1 2 3 4];n2=[0:3];disp('N=5');n3=[0:4];N=5;y=circonvt(x1,x2,N)subplot(3,1,1);stem(n1,x1);title('x1');xlabel('n1');ylabel('x1(n)');subplot(3,1,2);stem(n2,x2);title('x2');xlabel('n2');ylabel('x2(n)');subplot(3,1,3);stem(n3,y);title('圓周卷積');xlabel('n3');ylabel('y(n)');
circonvt函數程序
function [y] = circonvt(x1,x2,N);if length(x1)>N error('Length(x1)is not great than N');end if length(x2)>N error('Length(x2)is not great than N');end x1=[x1, zeros(1,N-length(x1))];x2=[x2, zeros(1,N-length(x2))];m=[0:N-1];x2=x2(mod(-m,N)+1);H=zeros(N,N);for n=1:N;H(n,:)=cirshift(x2,n-1,N);end y=x1*H';end
? 驗證一個實周期序列奇偶部分的DFT與此序列本身的DFT之間的關系。Matlab程序
function[xe,xo,m]=evenodd(x,n)if any(imag(x)~=0)error end
m=-fliplr(n);m1=min([m,n]);m2=max([m,n]);m=m1:m2;
nm=n(1)-m(1);n1=1:length(n);x1=zeros(1,length(m));x1(n1+nm)=x;x=x1;xe=0.5*(x+fliplr(x));xo=0.5*(x-fliplr(x));n=[0:10];x=stepseq(0,0,10)-stepseq(10,0,10);[xe,xo,m]=evenodd(x,n);
subplot(2,2,2);stem(m,xe);title('偶部');xlabel('n');ylabel('xe(n)');subplot(2,2,4);stem(m,xo);title('奇部');xlabel('n');ylabel('xo(n)');
? 用MATLAB語言編程實現信號的Z變換及其反變換、Z變換的零極點分布。
a=[1 1-6];b=[0 5 0];
[r,p,k]=residuez(b,a);subplot(121);zplane(b,a);
title('零極點分布圖');[H,w]=freqz(b,a,100);magH=abs(H);phaH=angle(H);figure(2)
subplot(222);plot(w/pi,magH);grid xlabel('frequency in pi units');title('magnitude part');
subplot(223),plot(w/pi,phaH/pi);grid xlabel('frequency in pi units');title('Angle part');
五、實驗擴展思考
① 編程產生方波信號序列和鋸齒波信號序列。
x=[0:1/256:8];y1=square(pi*x);
subplot(2,1,1);plot(x,y1);axis([0,8,-2,2]);title('方波');xlabel('x');ylabel('y1');grid on;y2=sawtooth(pi*x);subplot(2,1,2);plot(x,y2);title('鋸齒波');xlabel('x');ylabel('y2');grid on;
② 實驗中所產生的正弦序列的頻率是多少?怎樣才能改變它?分別是哪些參數控制該序列的相位、振幅和周期?
正弦序x[n=]Asin(w0n+Φ)頻率f=w0/2pi通過改變w0改變頻率f;Φ控制序列相位,A控制序列振幅,w0控制序列周期。
③ 編程實現序列長度為N的L點的正反離散傅里葉變換,并分析討論所得出的結果,其中L≧N,如L=8,N=6。
function[Xk]=dft(xn,N)n=[0:1:8-1];k=n;WN=exp(-1j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;
function[Xk]=idft(xn,N)n=[0:1:8-1];k=n;WN=exp(-1j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);Xk=xn*WNnk/N;
④ 由實驗說明離散傅里葉變換的對稱關系,說明序列的時域和頻域的關聯特性。
離散傅里葉變換具有共軛對稱性
(1)復共軛序列的DFT。設x*(n)為x(n)的復共軛序列,長度為N,X(k)=DFT[x(n)],則DFT[x*(n)]=X*(N-K),0<=k<=N-1(2)DFT的共軛對稱性。
定義圓周共軛對稱分量xep(n)和圓周共軛反對稱分量xop(n)xep(n)=1/2[x(n)+x*(N-n)],xop(n)=1/2[x(n)-x*(N-n)]則 DFT[xep(n)]=Re[X(k)], DFT[xop(n)]=jIm[X(k)] 序列的時域和頻域的關聯特性(1)時域卷積對應頻域相乘
設f[x(n)]=X(ejw),f[h(n)]=H(ejw),y(n)=x(n)*h(n), 則Y(e^jw)=1/2pi[X(e^jw)*H(e^jw)](2)時域相乘對應于1/2*pi的頻域卷積 設f[x(n)]=X(e^jw),f[h(n)]=H(e^jw),y(n)=x(n)h(n),則Y(e^jw)=1/2*pi[X(e^jw)*H(e^jw)] ?
六、實驗報告要求
1、實驗中的主要結論:圓周卷積與線性卷積之間的關系。
設圓周卷積y(n)=∑x1(m)x2(n-m)LRL(n),線性卷積y1(n)=x1(n)*x2(n),則y(n)=[∑y1(n+rL)]Rl(n),及當L>=N1+N2-1,y(n)=y1(n)。
2、通過編寫程序,讓我更熟練的使用MATLAB,能更好的理解書本所學的內容
3、心得體會:在使用matlab軟件定義函數時,必須對函數的含義理解清楚,要不然很容易定義函數出現錯誤。其次要對matlab自帶函數的含義用法理解清楚。這次實驗我最大的收獲就是對離散時間序列的理論基礎的概念有了一個很好的復習和更深刻的認識。遇到最大的問題就是定義函數時考慮不夠全面。但是我相信隨著后面實驗的進行,我能將matlab這個工具與課本的理論基礎知識完美的結合起來。??
第四篇:實驗二 離散時間信號與系統的Z變換分析
實驗二 離散時間信號與系統的Z變換分析
一、實驗目的
1、熟悉離散信號Z變換的原理及性質
2、熟悉常見信號的Z變換
3、了解正/反Z變換的MATLAB實現方法
4、了解離散信號的Z變換與其對應的理想抽樣信號的傅氏變換和拉氏變換之間的關系
5、了解利用MATLAB實現離散系統的頻率特性分析的方法
二、實驗原理
1、正/反Z變換
Z變換分析法是分析離散時間信號與系統的重要手段。如果以時間間隔Ts對連續時間信號f(t)進行理想抽樣,那么,所得的理想抽樣信號f?(t)為:
?f?(t)?f(t)*?Ts(t)?f(t)*??(t?kTs)
k???理想抽樣信號f?(t)的雙邊拉普拉斯變換F?(s)為:
?????stF?(s)???f(t)*??(t?kTs)?edt??f(kTs)e?ksTs
??k???k??????若令f(kTs)?f(k),z?esTs,那么f?(t)的雙邊拉普拉斯變換F?(s)為:
F?(s)?k??????f(k)z?k?F(z)z?esTs
則離散信號f(k)的Z變換定義為:
F(z)?k????f(k)z?k
從上面關于Z變換的推導過程中可知,離散信號f(k)的Z變換F(z)與其對應的理想抽樣信號f?(t)的拉氏變換F?(s)之間存在以下關系:
F?(s)?F(z)z?esTs
同理,可以推出離散信號f(k)的Z變換F(z)和它對應的理想抽樣信號f?(t)的傅里葉變換之間的關系為 F?(j?)?F(z)z?ej?Ts
如果已知信號的Z變換F(z),要求出所對應的原離散序列f(k),就需要進行反Z變換,反Z變換的定義為: f(k)??F(z)z2?j?1k?1dz 的所有極點的閉合積分路線。其中,C為包圍F(z)z如下:
k?1在MATLAB語言中有專門對信號進行正反Z變換的函數ztrans()和itrans()。其調用格式分別? F=ztrans(f)對f(n)進行Z變換,其結果為F(z)? F=ztrans(f,v)
對f(n)進行Z變換,其結果為F(v)? F=ztrans(f,u,v)對f(u)進行Z變換,其結果為F(v)? f=itrans(F)對F(z)進行Z反變換,其結果為f(n)? f=itrans(F,u)對F(z)進行Z反變換,其結果為f(u)? f=itrans(F,v,u)
對F(v)進行Z反變換,其結果為f(u)注意: 在調用函數ztran()及iztran()之前,要用syms命令對所有需要用到的變量(如t,u,v,w)等進行說明,即要將這些變量說明成符號變量。
例①.用MATLAB求出離散序列f(k)?(0.5)k?(k)的Z變換 MATLAB程序如下:
syms k z f=0.5^k;%定義離散信號
Fz=ztrans(f)%對離散信號進行Z變換 運行結果如下:
Fz = 2*z/(2*z-1)例②.已知一離散信號的Z變換式為F(z)?MATLAB程序如下:
syms k z Fz=2* z/(2*z-1);%定義Z變換表達式 fk=iztrans(Fz,k)%求反Z變換 運行結果如下:
fk =(1/2)^k
例③:求序列f(k)??(k?1)??(t?4)的Z變換.clc;clear all syms n
hn=sym('kroneckerDelta(n, 1)+ kroneckerDelta(n, 2)+ kroneckerDelta(n, 3)')Hz=ztrans(hn)Hz=simplify(Hz)
2z,求出它所對應的離散信號f(k)2z?
12、離散系統的頻率特性
同連續系統的系統函數H(s)類似,離散系統的系統函數H(z)也反映了系統本身固有的特性。對于離散系統來說,如果把其系統函數H(z)中的復變量z換成ej??ej?Ts(其中???Ts),那么所得的函數H(ej?)就是此離散系統的頻率響應特性,即離散時間系統的頻率響應為:
H(ej?)?H(ej?)?ej?(?)?H(z)z?ej? j?其中,H(e)稱為離散系統的幅頻特性,?(?)稱為系統的相頻特性。同連續系統一樣,離散時間系統的幅頻特性也是頻率的偶函數,相頻特性也是頻率的齊函數。
由于ej?是頻率?的周期函數,所以離散系統的頻率響應特性也是頻率?的周期函數,其周期為2?,或者角頻率周期為?T?2?。實際上,這就是抽樣系統的抽樣頻率,而其中的T則是系統的抽樣周期。Ts頻率響應呈現周期性是離散系統特性區別于連續系統特性的重要特點。因此,只要分析H(ej?)在??2?范圍內的情況,便可分析出系統的整個頻率特性。
H(ej?)函數來表示離散系統的頻率響應特性,H(ej?)表示幅頻特性,而相頻特性仍用?(?)來表示。應該特別注意的是,雖然這里的變量?仍然稱為頻率變量,但是它已經不是原來意義上的角頻率概念,而實際上是表示角度的概念。我們稱之為數字頻率。它與原來角頻率的關系為:???Ts。也就是說,根據離散系統的系統函數H(z),令其中的z?ej?,并且代入0~2?范圍內不同的頻率值(實際上是角度值),就可以逐個計算出不同頻率時的響應,求出離散系統的頻率響應特性。再利用離散系統頻率特性的周期性特點(周期為2?),求出系統的整個頻率特性。
離散系統的幅頻特性曲線和相頻特性曲線能夠直觀地反映出系統對不同頻率的輸入序列的處理情況。在函數H(ej?)隨?的變換關系中,在?=0附近,反映了系統對輸入信號低頻部分的處理情況,而在?=?附近,則反映了系統對輸入信號高頻部分的處理情況。
一般來說,分析離散系統頻率響應特性就要繪制頻率響應曲線,而這是相當麻煩的。雖然可以通過幾何矢量法來定性畫出頻率響應特性曲線,但一般來說這也是很麻煩的。值得慶幸的是,MATLAB為我們提供了專門用于求解離散系統頻率響應的函數freqz(),其調用格式如下:
? [H,w]=freqz(B,A,N)其中,B和A分別是表示待分析的離散系統的系統函數的分子,分母多項式的向量,N為正整數,返回向量H則包含了離散系統頻率響應函數H(e)在0~?范圍內的N個頻率等分點的值。向量?則包含0~?范圍內的N個頻率等分點。在默認情況下N=512。
? [H,w]=freqz(B,A,N,'whole')其中,B,A和N的意義同上,而返回向量H包含了頻率響j?應函數H(e)在0~2?范圍內N個頻率等分點的值。
j?由于調用freqz()函數只能求出離散系統頻率響應的數值,不能直接繪制曲線圖,因此,我們可以先用freqz()函數求出系統頻率響應的值,然后再利用MATLAB的abs()和angle()函數以及plot()命令,即可繪制出系統在0~?或0~2?范圍內的幅頻特性和相頻特性曲線。例①.若離散系統的系統函數為H(z)?率響應H(e)的樣值。
MATLAB程序如下:
A=[1 0];
%分母多項式系數向量 B=[1-0.5];
%分子多項式系數向量
[H,w]=freqz(B,A,10)%求出對應0~?范圍內10個頻率點的頻率響應樣值 運行結果如下: H = j?z?0.5,請用MATLAB計算0~?頻率范圍內10個等分點的頻z 0.5000
0.5245 + 0.1545i 0.5955 + 0.2939i 0.7061 + 0.4045i 0.8455 + 0.4755i 1.0000 + 0.5000i 1.1545 + 0.4755i 1.2939 + 0.4045i 1.4045 + 0.2939i 1.4755 + 0.1545i w = 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 例②.用MATLAB計算前面離散系統在0~2?頻率范圍內200個頻率等分點的頻率響應值,并繪出相應的幅頻特性和相頻特性曲線。MATLAB程序如下:
A=[1 0];B=[1-0.5];[H,w]=freqz(B,A,200);[H,w]=freqz(B,A,200,'whole');%求出對應0~2?范圍內200個頻率點的頻率響%應樣值 HF=abs(H);%求出幅頻特性值 HX=angle(H);%求出相頻特性值 subplot(2,1,1);plot(w,HF)%畫出幅頻特性曲線 subplot(2,1,2);plot(w,HX)%畫出相頻特性曲線
運行結果如下:
運行結果分析:從該系統的幅頻特性曲線可以看出,該系統呈高通特性,是一階高通濾波器。
三、實驗內容
1. 求出下列離散序列的Z變換
k?① f1(k)?(1)cos(k2)?(k)2k② f2(k)?k(k?1)(2 3)?(k)③ f3(k)??(k)??(k?5)
④ f4(k)?k(k?1)??(k)??(k?5)?
2. 已知下列單邊離散序列的z變換表達式,求其對應的原離散序列。
z2?z?1①F1(z)?
2z?z?2②F2(z)?1?1111?2?3?4 zzzz2(z2?3z?6)③F3(z)?
4zz(z2?z?1)④ F4(z)?
(z?1)(z?2)(z?3)3.已知離散系統的系統函數H(z)如下,請繪出系統的幅頻和相頻特性曲線,并說明系統的作用 ① H(z)?4z?4 12(z?2)(z?3)z2?1② H(z)?
2z?0.814.已知描述離散系統的差分方程為:
y(k)?1.2y(k?1)?0.35y(k?2)?e(k)?0.25e(k?1)
請繪出系統的幅頻和相頻特性曲線,并說明系統的作用。
四、預習要求
1、熟悉正反z變換的意義及用MATLAB軟件實現的方法
2、熟悉離散系統的頻率響應特性及用MATLAB軟件實現的方法
3、編寫MATLAB程序
五、實驗報告要求
1、簡述實驗目的及實驗原理
2、計算相應z變換或反z變換的理論值,并與實驗結果進行比較
3、記錄離散系統的頻率響應特性曲線,分析系統作用
4、寫出程序清單
5、收獲與建議
%參考程序 %三 1.① clc;clear all syms k z f1=0.5^k*cos(k*pi/2);%定義離散信號 Fz1=ztrans(f1)%對離散信號進行Z變換 % 實驗二 1.②
f2=k*(k-1)*(2/3)^k;%定義離散信號 Fz2=ztrans(f2)%對離散信號進行Z變換 % 實驗二 1.③
f3=sym('kroneckerDelta(n, 1)+ kroneckerDelta(n, 2)+ kroneckerDelta(n, 3)')Fz3=ztrans(f3)Fz3=simplify(Fz3)% 實驗二 1.④
f4=k*(k-1)*sym('kroneckerDelta(k, 1)+ kroneckerDelta(k, 2)+ kroneckerDelta(k, 3)');%定義離散信號 Fz4=ztrans(f4)Fz4=simplify(Fz4)
第五篇:DSP實驗5利用SPTool工具分析離散時間信號
實驗5 利用SPTool工具分析離散時間信號
目標:利用sptool工具觀察信號波形、頻譜和濾波。
要求:
1.系統采樣率2048,產生噪聲信號,觀察信號波形和頻譜;
設計低通濾波器去除高頻分量,觀察濾波后的信號波形和頻譜。
注:噪聲產生可用randn命令
2.系統采樣率2048Hz,產生300Hz、500Hz和800Hz的合成正弦波,系統包含高斯噪聲信號,觀察總的信號波形和頻譜;設計濾波器提取500Hz分量,觀察濾波后的信號波形和頻譜。調整各信號的頻率分量以及噪聲的幅值,重復上面的步驟。