数字信号处理实验报告实验一熟悉MATLAB环境实验二信号的采样与重建实验三快速变换及其应用实验四IIR数字滤波器的设计实验五FIR数字滤波器的设计实验一熟悉MATLAB环境一、实验目的(1)熟悉MATLAB的主要操作命令。(2)学会简单的矩阵输入和数据读写。(3)掌握简单的绘图命令。(4)用MATLAB编程并学会创建函数。(5)观察离散系统的频率响应。二、实验内容认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。上机实验内容:(1)数组的加、减、乘、除和乘方运算。输入A=[1234],B=[3456],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。实验程序:A=[1234];B=[3456];n=1:4;C=A+B;D=A-B;E=A.*B;F=A./B;G=A.^B;subplot(4,2,1);stem(n,A,'fill');xlabel('时间序列n');ylabel('A');subplot(4,2,2);stem(n,B,'fill');xlabel('时间序列n');ylabel('B');subplot(4,2,3);stem(n,C,'fill');xlabel('时间序列n');ylabel('A+B');subplot(4,2,4);stem(n,D,'fill');xlabel('时间序列n');ylabel('A-B');subplot(4,2,5);stem(n,E,'fill');xlabel('时间序列n');ylabel('A.*B');subplot(4,2,6);stem(n,F,'fill');xlabel('时间序列n');ylabel('A./B');subplot(4,2,7);stem(n,G,'fill');xlabel('时间序列n');ylabel('A.^B');运行结果:(2)用MATLAB实现以下序列。a)x(n)=0.8n0≤n≤15实验程序:n=0:15;x=0.8.^n;stem(n,x,'fill');xlabel('时间序列n');ylabel('x(n)=0.8^n');b)x(n)=e(0.2+3j)n0≤n≤15实验程序:n=0:15;x=exp((0.2+3*j)*n);stem(n,x,'fill');xlabel('时间序列n');ylabel('x(n)=exp((0.2+3*j)*n)');运行结果:a)的时间序列b)的时间序列c)x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π)0≤n≤15实验程序:n=0:1:15;x=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi);stem(n,x,'fill');xlabel('时间序列n');ylabel('x(n)=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi)');运行结果:d)将c)中的x(n)扩展为以16为周期的函数x16(n)=x(n+16),绘出四个周期实验程序:n=0:1:63;x=3*cos(0.125*pi*rem(n,16)+0.2*pi)+2*sin(0.25*pi*rem(n,16)+0.1*pi);stem(n,x,'fill');xlabel('时间序列n');ylabel('x16(n)');e)将c)中的x(n)扩展为以10为周期的函数x10(n)=x(n+10),绘出四个周期实验程序:n=0:1:39;x=3*cos(0.125*pi*rem(n,10)+0.2*pi)+2*sin(0.25*pi*rem(n,10)+0.1*pi);stem(n,x,'fill');xlabel('时间序列n');ylabel('x10(n)');运行结果:d)的时间序列e)的时间序列(3)x(n)=[1,-1,3,5],产生并绘出下列序列的样本。a)x1(n)=2x(n+2)-x(n-1)-2x(n)实验程序:n=0:3;x=[1-135];x1=circshift(x,[0-2]);x2=circshift(x,[01]);x3=2*x1-x2-2*x;stem(x3,'fill');xlabel('时间序列n');ylabel('x1(n)=2x(n+2)-x(n-1)-2x(n)');b)51k2)kn(nx(n)x实验程序:n=0:3;x=[1-135];x1=circshift(x,[01]);x2=circshift(x,[02]);x3=circshift(x,[03]);x4=circshift(x,[04]);x5=circshift(x,[05]);xn=1*x1+2*x2+3*x3+4*x4+5*x5;stem(xn,'fill');xlabel('时间序列n');ylabel('x2(n)=x(n-1)+2x(n-2)+3x(n-3)+4x(n-4)+5x(n-5)');运行结果:a)的时间序列b)的时间序列(4)绘出时间函数的图形,对x轴、y轴图形上方均须加上适当的标注。a)x(t)=sin(2πt)0≤t≤10sb)x(t)=cos(100πt)sin(πt)0≤t≤4s实验程序:clc;t1=0:0.001:10;t2=0:0.01:4;xa=sin(2*pi*t1);xb=cos(100*pi*t2).*sin(pi*t2);subplot(2,1,1);plot(t1,xa);xlabel('t');ylabel('x(t)');title('x(t)=sin(2*pi*t)');subplot(2,1,2);plot(t2,xb);xlabel('t');ylabel('x(t)');title('x(t)=cos(100*pi*t2).*sin(pi*t2)');运行结果:(5)编写函数stepshift(n0,n1,n2)实现u(n-n0),n1n0n2,绘出该函数的图形,起点为n1,终点为n2。实验程序:clc;n1=input('请输入起点:');n2=input('请输入终点:');n0=input('请输入阶跃位置:');n=n1:n2;x=[n-n0=0];stem(n,x,'fill');xlabel('时间序列n');ylabel('u(n-n0)');请输入起点:2请输入终点:8请输入阶跃位置:6运行结果:(5)运行结果(6)运行结果(6)给一定因果系统)0.9z0.67z-1)/(1z2(1H(z)-2-1-1求出并绘制H(z)的幅频响应与相频响应。实验程序:a=[1-0.670.9];b=[1sqrt(2)1];[hw]=freqz(b,a);fp=20*log(abs(h));subplot(2,1,1);plot(w,fp);xlabel('时间序列t');ylabel('幅频特性');xp=angle(h);subplot(2,1,2);plot(w,xp);xlabel('时间序列t');ylabel('相频特性');运行结果:(右上图)实验二信号的采样与重建一、实验目的⑴学习本章内容的基础上,通过实验加强有关信号采样与重建的基本概念,熟悉相关的Matlab函数。⑵通过观察采样信号的混叠现象,进一步理解奈奎斯特采样频率的意义。⑶通过实验,了解数字信号采样率转换过程中的频率特征。⑷对实际的音频文件作内插和抽取操作,体会低通滤波器在内插和抽取中的作用。二、实验内容1.一个信号是三个正弦信号的和,正弦信号的频率为50Hz、500Hz、1000Hz,该信号以8kHz采样。用适当数量的样本画出该信号。2.一个信号是三个正弦信号的和,正弦信号的频率为50Hz、500Hz、1000Hz,该信号以800Hz采样。用适当数量的样本画出该信号,并讨论信号的混叠状况。3.令cos(2)sxnfnf,其中116sff,即每个周期内有16个点。试利用MATLAB编程实现:①作M=4倍的抽取,使每个周期变成4点。②作L=3倍的差值,使每个周期变成48点。4.输入信号x(n)为归一化频率分别是120.04,0.3ff,的正弦信号相加而成,N=50,内插因子为5,抽取因子为3,给出按有理因子5/3作采样率转换的输入输出波形。5.常见的音频文件采样率为44.1kHz。请找一个wav格式、采样率为44.1kHz的音频文件,用MATLAB编写程序,把它转换成采样率为48kHz、32kHz、22.05Khz、16kHz和8KHz的音频文件,用播放器分别进行播放,比较音质的变化,并解释原因。三、实验程序和结果分析1.一个信号是三个正弦信号的和,正弦信号的频率为50Hz、500Hz、1000Hz,该信号以8kHz采样。用适当数量的样本画出该信号。答:n=0:99;x=sin(0.00625*2*pi*n)+sin(0.0625*2*pi*n)+sin(0.125*2*pi*n);stem(n,x);title('抽样图像');xlabel('n');ylabel('幅值');[h,w]=freqz(x);figure(2);plot(w(1:256),abs(h(1:256)));title('幅频响应图像');xlabel('/omega');ylabel('幅度');分析:模拟信号(A/D)变换转换为数字信号,每隔一个采样频率fs=1/8k,为保证采样后信号的频谱形状不失真,采样频率必须大于信号中最高频率成分的两倍,该采样频率符合奈奎斯特抽样定理,抽样前后的频谱不会失真。由频谱图可以看出,当w=0,0.4,0.8处幅度最大值。n取值0:99范围,x(n)本身是一个带限信号,在w=0.8后幅度随着w的增大幅度逐渐衰减。2.一个信号是三个正弦信号的和,正弦信号的频率为50Hz、500Hz、1000Hz,该信号以800Hz采样。用适当数量的样本画出该信号,并讨论信号的混叠状况。Matlab编程:n=0:99;x=sin(0.0625*2*pi*n)+sin(0.625*2*pi*n)+sin(1.25*2*pi*n);stem(n,y);title('抽样图像');xlabel('n');ylabel('幅值');[h,w]=freqz(x);figure(2);plot(w(1:512),abs(h(1:512)));title('幅频响应图像');xlabel('/omega');ylabel('幅度');分析:对连续信号进行等间隔采样时,如果不能满足采样定理,采样后信号的频率就会重叠,即高于采样频率一半的频率成分将被重建成低于采样频率一半的信号。这种频谱的重叠导致的失真称为混叠,而重建出来的信号称为原信号的混叠替身,因为这两个信号有同样的样本值。在本实验中因为采样频率为800hz,所以会发生部分混叠,主要由500Hz、1000Hz的信号产生。因为采样频率小于奈奎斯特采样频率,引起混叠,采样后信号的频谱形状失真,如若要采样后的频谱不发生失真,采样频率必须大于信号中最高频率成分的两倍>2(或>2)。(对取样频率的要求,即取样频率要足够大,采得的样值要足够多,才能恢复原信号。)即采样频率最小要为2000Hz3.令cos(2)sxnfnf,其中116sff,即每个周期内有16个点。试利用MATLAB编程实现:①作M=4倍的抽取,使每个周期变成4点。②作L=3倍的插值,使每个周期变成48点。①clear;N=52;M=4;f=1;fs=16;n=0:N-1;x=cos(2*pi*(f/fs)*n);stem(n,x(1:N));grid;title('原图像');xlabel('n');ylabel('幅度');y=decimate(x,M);figure(2);m=0:N/M-1;stem(m,y(1:N/M));ti