1、数字信号处理实验答案实验一 熟悉Matlab环境一、实验目的1. 熟悉MATLAB的主要操作命令。2. 学会简单的矩阵输入和数据读写。3. 掌握简单的绘图命令。4. 用MATLAB编程并学会创建函数。5. 观察离散系统的频率响应。二、实验内容认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。上机实验内容:(1)数组的加、减、乘、除和乘方运算。输入A=1 2 3 4,B=3 4 5 6,求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.B并用stem语句画出A、B、C、D、E、F、G。clear al
2、l;a=1 2 3 4; b=3 4 5 6;c=a+b;d=a-b;e=a.*b;f=a./b;g=a.b;n=1:4;subplot(4,2,1);stem(n,a);xlabel(n);xlim(0 5);ylabel(A);subplot(4,2,2);stem(n,b);xlabel(n);xlim(0 5);ylabel(B);subplot(4,2,3);stem(n,c);xlabel(n);xlim(0 5);ylabel(C);subplot(4,2,4);stem(n,d);xlabel(n);xlim(0 5);ylabel(D);subplot(4,2,5);stem
3、(n,e);xlabel(n);xlim(0 5);ylabel(E);subplot(4,2,6);stem(n,f);xlabel(n);xlim(0 5);ylabel(F);subplot(4,2,7);stem(n,g);xlabel(n);xlim(0 5);ylabel(G);(2)用MATLAB实现下列序列:a) x(n)=0.8n 0n15 b) x(n)=e(0.2+3j)n 0n15 c) x(n)=3cos(0.125n+0.2)+2sin(0.25n+0.1) 0n15 d) 将c)中的x(n)扩展为以16为周期的函数x16(n)=x(n+16),绘出四个周期。e)
4、将c)中的x(n)扩展为以10为周期的函数x10(n)=x(n+10),绘出四个周期。clear all;N=0:15;% a) x(n)=0.8n 0n15xa=0.8.N;figure;subplot(2,1,1);stem(N,xa); xlabel(n);xlim(0 16);ylabel(xa);% b) x(n)=e(0.2+3j)n 0n15xb=exp(0.2+3*j)*N);subplot(2,1,2);stem(N,xb);xlabel(n);xlim(0 16);ylabel(xb);figure;% c) x(n)=3cos(0.125n+0.2)+2sin(0.25n
5、+0.1) 0n15xc=3*cos(0.125*pi*N+0.2*pi)+2*sin(0.25*pi*N+0.1*pi);subplot(3,1,1);stem(N,xc);xlabel(n);xlim(0 16);ylabel(xc);% d) 将c)中的x(n)扩展为以16为周期的函数x16(n)=x(n+16),绘出四个周期。k=0:3;m=0;for i=1:4 for j=1:16 m=m+1; n(m)=N(j)+16*k(i); x16(m)=3*cos(0.125*pi*n(m)+0.2*pi)+2*sin(0.25*pi*n(m)+0.1*pi); endend subpl
6、ot(3,1,2);stem(n,x16);xlabel(n);ylabel(x16);% e) 将c)中的x(n)扩展为以10为周期的函数x10(n)=x(n+10),绘出四个周期。 for j=1:10 x10(j)=x16(j); end for i=1:3 for m=1:10 x10(i*10+m)=x10(m); end endn=1:40;subplot(3,1,3);stem(n,x10); xlabel(n);ylabel(x10);(3)x(n)=1,-1,3,5,产生并绘出下列序列的样本: a) x1(n)=2x(n+2)-x(n-1)-2x(n)b) clear all
7、n=1:4;T=4;x=1 -1 3 5;x(5:8)=x(1:4);subplot(2,1,1);stem(1:8,x);grid;for i=1:4 if i-10 x1(i)=2*x(i+2)-x(i-1)-2*x(i); else x1(i)=2*x(i+2)-x(i-1+T)-2*x(i); endendx1(5:8)=x1(1:4);subplot(2,1,2);stem(1:8,x1);grid; (4)绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注: a) x(t)=sin(2t) 0t10sb) x(t)=cos(100t)sin(t) 0t4s ta=0
8、:0.05:10;xa=sin(2*pi*ta);subplot(2,1,1);plot(ta,xa);xlabel(t);ylabel(幅度);tb=0:0.01:4;xb=cos(100*pi*tb).*sin(pi*tb);subplot(2,1,2);plot(tb,xb);xlabel(t);ylabel(幅度); (5)编写函数stepshift(n0,n1,n2)实现u(n-n0),n1n0=0;stem(n,x); (6)给一定因果系统求出并绘制H(z)的幅频响应与相频响应。 clear all;b=1,sqrt(2),1;a=1,-0.67,0.9;h,w=freqz(b,a
9、);am=20*log10(abs(h);subplot(2,1,1);plot(w,am);ph=angle(h);subplot(2,1,2);plot(w,ph); (7)计算序列8 -2 -1 2 3和序列2 3 -1 -3的离散卷积,并作图表示卷积结果。 clear all;a=8 -2 -1 2 3;b=2 3 -1 -3;c=conv(a,b); %计算卷积M=length(c)-1;n=0:1:M;stem(n,c);xlabel(n);ylabel(幅度); (8)求以下差分方程所描述系统的单位脉冲响应h(n),0n50 y(n)+0.1y(n-1)-0.06y(n-2)=x
10、(n)-2x(n-1)clear all;N=50;a=1 -2;b=1 0.1 -0.06;x=1 zeros(1,N-1);k=0:1:N-1;y=filter(a,b,x);stem(k,y);xlabel(n);ylabel(幅度 ); 实验二 信号的采样与重建一,实验目的(1)通过观察采样信号的混叠现象,进一步理解奈奎斯特采样频率的意义。(2)通过实验,了解数字信号采样转换过程中的频率特征。(3)对实际的 音频文件作内插和抽取操作,体会低通滤波器在内插和抽取中的作用。二,实验内容(1)采样混叠,对一个模拟信号Va(t)进行等间采样,采样频率为200HZ,得到离散时间信号V(n).Va
11、(t)由频率为30Hz,150Hz,170Hz,250Hz,330Hz的5个正弦信号的加权和构成。Va(t)=6cos(60pi*t)+3sin(300pi*t)+2cos(340pi*t)+4cos(500pi*t)+10sin(660pi*t)观察采样后信号的混叠效应。程序:clear,close all,t=0:0.1:20;Ts=1/2;n=0:Ts:20;V=8*cos(0.3*pi*t)+5*cos(0.5*pi*t+0.6435)-10*sin(0.7*pi*t);Vn=8*cos(0.3*pi*n)+5*cos(0.5*pi*n+0.6435)-10*sin(0.7*pi*n)
12、;subplot(221)plot(t,V),grid on,subplot(222)stem(n,Vn,.),grid on,(2)输入信号X(n)为归一化频率f1=0.043,f2=0.31的两个正弦信号相加而成,N=100,按因子M=2作抽取:(1)不适用低通滤波器;(2)使用低通滤波器。分别显示输入输出序列在时域和频域中的特性。程序:clear;N=100;M=2;f1=0.043;f2=0.31;n=0:N-1;x=sin(2*pi*f1*n)+sin(2*pi*f2*n);y1=x(1:2:100);y2=decimate(x,M,fir);figure(1);stem(n,x(1
13、:N);title(input sequence);xlabel(n);ylabel(fudu);figure(2);n=0:N/2-1;stem(n,y1);title(output sequence without LP);xlabel(n);ylabel(fudu);figure(3);m=0:N/M-1;stem(m,y2(1:N/M);title(output sequence with LP);xlabel(n);ylabel(fudu);figure(4);h,w=freqz(x);plot(w(1:512),abs(h(1:512);title(frequency spectr
14、um of the input sequence);xlabel(w);ylabel(fudu);figure(5);h,w=freqz(y1);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the output sequence without LP);xlabel(w);ylabel(fudu);figure(6);h,w=freqz(y2);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the output sequence without LP);xlabel
15、(w);ylabel(fudu);(3)输入信号X(n)为归一化频率f1=0.043,f2=0.31的两个正弦信号相加而成,长度N=50,内插因子为2.(1)不适用低通滤波器;(2)使用低通滤波器。分别显示输入输出序列在时域和频域中的特性。程序:clear,close all,N=50;L=2;f1=0.043;f2=0.31;n=0:N-1;x=sin(2*pi*f1*n)+sin(2*pi*f2*n);figure(1);stem(n,x(1:N);title(input sequence);xlabel(n);ylabel(fudu);y1=zeros(1,N*2);y1(1:2:N*2
16、)=x;figure(2);m=0:N*L-1;stem(m,y1(1:N*L);title(output sequence );xlabel(n);ylabel(fudu);y2=interp(x,L);figure(3);m=0:N*L-1;stem(m,y2(1:N*L);title(output sequence);xlabel(n);ylabel(fudu);figure(4);h,w=freqz(x);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the input sequence);xlabel(w);ylabel
17、(fudu);figure(5);h,w=freqz(y1);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the output sequence);xlabel(w);ylabel(fudu);figure(6);h,w=freqz(y2);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the output sequence );xlabel(w);ylabel(fudu);2(3)令x(n)=cos(2*pi*f*n/fs),其中f/fs=1/16,即每个周期内有
18、16个点。试用MATLAB编程实现:1).作M=4倍的抽取,使每个周期变成4点。程序:clear,close all,N=100;M=4;n=0:N-1;x=cos(2*pi*n*(1/16);stem(n,x(1:N);title(input sequence);xlabel(n);ylabel(fudu);y1=x(1:4:100);y2=decimate(x,M,fir);figure(2);m=0:N/4-1;stem(m,y1); title(output sequence );xlabel(n);ylabel(fudu);figure(3);m=0:N/M-1;stem(m,y2(
19、1:N/M);title(output sequence);xlabel(n);ylabel(fudu);figure(4);h,w=freqz(x);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the input sequence);xlabel(w);ylabel(fudu);figure(5);h,w=freqz(y1);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the output sequence);xlabel(w);ylabel(fudu);fig
20、ure(6);h,w=freqz(y2);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the output sequence );xlabel(w);ylabel(fudu);2).作L=3倍的插值,使每个周期变成48点。程序:clear,close all,N=50;L=3;n=0:N-1;x=cos(2*pi*n*(1/16);figure(1);stem(n,x(1:N);title(input sequence);xlabel(n);ylabel(fudu);y1=zeros(1,N*3);y1(1:3:N*3)=x;f
21、igure(2);m=0:N*3-1;stem(m,y1(1:N*3);title(output sequence );xlabel(n);ylabel(fudu);y2=interp(x,L);figure(3);m=0:5:N*L-1;stem(m,y2(1:5:N*L);title(output sequence);xlabel(n);ylabel(fudu);figure(4);h,w=freqz(x);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the input sequence);xlabel(w);ylabel(
22、fudu);figure(5);h,w=freqz(y1);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the output sequence);xlabel(w);ylabel(fudu);figure(6);h,w=freqz(y2);plot(w(1:64),abs(h(1:64);title(frequency spectrum of the output sequence );xlabel(w);ylabel(fudu);(4).输入信号x(n)为归一化频率分别是f1=0.04,f2=0.3的正弦信号相加而成,N=50
23、,内插因子为5,抽取因子为3,给出按有理因子5/3做采样率转换的输入输出波形。程序:clear,close all,N=50;M=3;L=5;f1=0.04;f2=0.3;n=0:N-1;x=sin(2*pi*f1*n)+sin(2*pi*f2*n);y=resample(x,L,M);figure(1);stem(n,x(1:N);title(input sequence);xlabel(n);ylabel(fudu);figure(2);m=0:N-1;stem(m,y(1:N); title(output sequence );xlabel(n);ylabel(fudu);figure(
24、3);h,w=freqz(x);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the input sequence);xlabel(w);ylabel(fudu);figure(4);h,w=freqz(y);plot(w(1:512),abs(h(1:512);title(frequency spectrum of the output sequence );xlabel(w);ylabel(fudu);实验三 快速Fourier变换(FFT)及其应用一、实验目的 1 在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉FF
25、T子程序。 2 熟悉应用FFT对典型信号进行频谱分析的方法。 3. 了解应用FFT进行信号频谱分析过程中可能出现的问题以便在实际中正确应用FFT。 4 熟悉应用FFT实现两个序列的线性卷积的方法。 5 初步了解用周期图法作随机信号谱分析的方法。二、实验原理与方法 在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier变换(DFT)。这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为:反变换为: 有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,
26、因此可以用于序列的谱分析。 FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。常用的FFT是以2为基数的,其长度 。它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。 (一)、在运用DFT进行频谱分析的过程中可能产生三种误差: (1) 混叠 序列的频谱时被采样信号的周期延拓,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。避免混叠现象
27、的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。 (2) 泄漏 实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。为了减少泄漏的影响,可以选择适当的窗函数使频谱的扩散减至最小。 (3) 栅栏效应 DFT是对单
28、位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数,就一定意义上看,用DFT来观察频谱就好像通过一个栅栏来观看一个图景一样,只能在离散点上看到真实的频谱,这样就有可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所拦住,不能别我们观察到。 减小栅栏效应的一个方法就是借助于在原序列的末端填补一些零值,从而变动DFT的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或谷点暴露出来。 (二)、用FFT计算线性卷积 用FFT可以实现两个序列的圆周卷积。在一定的条件下,可以使圆周卷积等于线性卷积。一般情况,设两个序列的长度分别为N1和N2,要使圆周卷积等于线性卷积的充要条件是FFT的长度NN1N2对于长度不足N的两个序列,分别将他们补零延长到N。 当两个序列中有一个序列比较长的时候,我们可以采用分段卷积的方法。有两种方法:重叠相加法。将长序列分成与短序列相仿的片段,分别用FFT对它们作线性卷积,再将分段卷积各段重叠的部分相加构成总的卷积输出。 重叠保留法。这种方法在长序列分段时,段与段之间保留有互相重叠的部分,在构成总的卷
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1