资源描述:
《中北大学数字信号处理实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《数字信号处理》上机实验报告实验一、Z变换及离散时间系统分析(一)、实验目的1、通过本实验熟悉Z变换在离散时间系统分析中的地位和作用。2、掌握并熟练使用有关离散系统分析的MATLAB调用函数及格式,以深入理解离散时间系统的频率特性。(二)、实验内容及步骤对于一个给定的LSI系统,其转移函数H(z)习惯被定义为H(z)=B(z)/A(z),即:公式中和分别是H(Z)分子与分母多项式的阶次,在有关MATLAB的系统分析的文件中,分子和分母的系数被定义为向量,即并要求=1,如果≠1,则程序将自动的将其归一化为1。1、系统的阶跃响应调用格式
2、为:y=filter(b,a,x),其中x,y,a,b都是向量。3、求频率响应基本调用格式为:[H,w]=freqz(b,a,N,‘whole’,Fs)其中N是频率轴的分点数,建议N为2的整次幂;w是返回频率轴坐标向量,供绘图用;Fs是抽样频率,若Fs=1,频率轴给出归一化频率;whole指定计算的频率范围是从0~Fs,缺省时是从0~Fs/2。(三)、作业给定系统,编程并绘出系统的单位阶跃响应y(n),频率响应。给出实验报告。程序及结果如下:clear;x=ones(100);%x(n)=1,n=1~100;t=1:100;%t用于
3、后面的绘图;b=[0,0,-0.2];%形成向量b;a=[1,0,0.8];%形成向量a;y=filter(b,a,x);subplot(311)plot(t,x,'r.',t,y,'k-');gridon;%图上;ylabel('x(n)andy(n)')xlabel('1')clearall;b=[0,0,-0.2];%形成向量b;a=[1,0,0.8];%形成向量a;[H,w]=freqz(b,a,256,1);Hr=abs(H);%绝对值(幅值);Hphase=angle(H);%相位角;Hphase=unwrap(Hpha
4、se);%解卷绕subplot(312)plot(w,Hr);gridon;ylabel('AmplitudeFreq.Res.')subplot(313)plot(w,Hphase);gridon;ylabel('PhaseFreq.Res.')实验二、快速傅里叶变换(一)、实验目的1、通过本实验进一步加深对快速傅里叶变换的理解。2、会熟练运用fft,ifft,czt实现线性调频z变换。(二)、实验内容1、快速傅里叶变换(fft)调用格式为X=fft(x)或X=fft(x,N)对前者,若x的长度是2的整次幂,则按该长度实现x的快速
5、变换,否则,实现的是非2的整次幂的变换;对后者,N应为2的整次幂,若x得长度小于N,则补零,若超过N,则舍弃N以后的数据。ifft的调用格式与之相同。附:fftshift函数fftshift函数就是一个交换函数:交换规则如下:如:x=[12345678];y=fftshift(x);theny=[56781234];其在fft运算里的物理意义:把0频(低频)周围的频谱搬移到中频范围(采样频率的一半),只是形象化的展示FT变换后的低频成分(正负频率)。其实质是把Fs/2的右边频谱平移到Fs/2的左边,把低频平移到Fs/2的右边,各图象
6、间距不变。2、线性调频Z变换(CZT)CZT可用来计算单位圆上任一段曲线上的Z变换,做DFT时输入的点数N和输出的点数可以不相等,从而达到频域“细化”的目的。CZT在单位圆上的Z变换就是傅里叶变换。其调用格式为:X=czt(x,M,W,A)式中x是待变换的时域信号x(n),其长度设为N,M是变换的长度,W确定变换的步长,A确定变换的起点。若M=N,A=1,则CZT变成DFT。CZT应用举例:(三)、作业设x(n)由三个实正弦组成,频率分别是8Hz,9Hz,10Hz,抽样频率为60Hz,时域取256点,作CZT变换、IFFT变换和FF
7、T变换,观察波形,更改参数,得出不同参数下的CZT变换波形。给出实验报告。程序及结果如下:clearall;N=256;%2的8次幂,进行8级蝶形运算f1=8;f2=9;f3=10;fs=60;a1=1;a2=6;a3=8;stepf=fs/N;n=0:N-1;t=2*pi*n/fs;n1=0:stepf:fs/2-stepf;x=a1*sin(f1*t)+a2*sin(f2*t)+a3*sin(f3*t);M=N;W=exp(-j*2*pi/M);%三个不同频率的正弦信号;subplot(511);plot(n,x);gridon
8、;ylabel('one')%应用FFT求频谱;X=fft(x);%快速傅里叶变换;subplot(512);plot(n1,abs(X(1:N/2)));gridon;ylabel('two')y=ifft(X);%快速傅里叶逆变化