您的当前位置:首页正文

matlab实验指导2

2024-01-25 来源:年旅网
《数字信号处理》MATLAB实验指导

实验一:离散时间信号和离散时间系统

一、实验目的:1、以MATLAB为工具学习离散时间信号的图形表示;2、以课本提供的例程,练习、理解典型离散信号及其基本运算;3、通过MATLAB仿真简单的离散时间系统,研究其时域特性;4、加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。二、实验内容:1、典型序列的产生与显示;2、序列的简单运算;3、复合和复杂信号的产生与显示;4、离散时间系统的仿真:线性和非线性系统、时变和非时变系统的仿真;5、线性时不变离散时间系统:系统冲激响应、卷积运算、系统的级联、系统的稳定性;三、实验例程:1、参照课本例程产生下列序列,并用plot、stem好人subplot命令绘出其图形:①单位取样序列n;②单位阶跃序列n;③矩形序列RN(n),④斜变序列nn。所需输入的数据是产生序列的长度L和抽样频率FT。%ProgramP1_1%GenerationofaUnitSampleSequenceclf;%Generateavectorfrom-10to20n=-10:20;%Generatetheunitsamplesequenceu=[zeros(1,10)1zeros(1,20)];%Plottheunitsamplesequencestem(n,u);xlabel('Timeindexn');ylabel('Amplitude');title('UnitSampleSequence');axis([-102001.2]);2、编写MATLAB实指数序列程序,%ProgramP1_3%Generationofarealexponentialsequenceclf;n=0:35;a=1.2;K=0.2;x=K*a.^n;stem(n,x);xlabel('Timeindexn');ylabel('Amplitude');3、编写产生sweptfrequencysinusoidal序列的程序。%ProgramP1_7%Generationofasweptfrequencysinusoidalsequencen=0:100;a=pi/2/100;b=0;arg=a*n.*n+b*n;x=cos(arg);clf;stem(n,x);axis([0,100,-1.5,1.5]);title('Swept-FrequencySinusoidalSignal');xlabel('Timeindexn');ylabel('Amplitude');grid;axis;>>4、产生正弦振幅调制序列%Generationofamplitudemodulatedsequenceclf;n=0:100;m=0.4;fH=0.1;fL=0.01;xH=sin(2*pi*fH*n);xL=sin(2*pi*fL*n);y=(1+m*xL).*xH;stem(n,y);grid;xlabel('Timeindexn');ylabel('Amplitude');5、用滑动平均滤波器平滑带噪信号,讨论滤波器长度对平滑效果、输出平滑后信号与输入带噪信号之间延时的影响。%ProgramP1_5%SignalSmoothingbyAveragingclf;R=51;d=0.8*(rand(R,1)-0.5);%Generaterandomnoisem=0:R-1;s=2*m.*(0.9.^m);%Generateuncorruptedsignalx=s+d';%Generatenoisecorruptedsignalsubplot(2,1,1);plot(m,d','r-',m,s,'g--',m,x,'b-.');xlabel('Timeindexn');ylabel('Amplitude');legend('d[n]','s[n]','x[n]');x1=[00x];x2=[0x0];x3=[x00];y=(x1+x2+x3)/3;subplot(2,1,2);plot(m,y(2:R+1),'r-',m,s,'g--');legend('y[n]','s[n]');xlabel('Timeindexn');ylabel('Amplitude');6、编写输入序列、计算输出序列、差分输出并画出输出序列。%ProgramP2_4%Generatetheinputsequencesclf;n=0:40;D=10;a=3.0;b=-2;x=a*cos(2*pi*0.1*n)+b*cos(2*pi*0.4*n);xd=[zeros(1,D)x];num=[2.24032.49082.2403];den=[1-0.40.75];ic=[00];%Setinitialconditions%Computetheoutputy[n]y=filter(num,den,x,ic);%Computetheoutputyd[n]yd=filter(num,den,xd,ic);%Computethedifferenceoutputd[n]d=y-yd(1+D:41+D);%Plottheoutputssubplot(3,1,1)stem(n,y);ylabel('Amplitude');title('Outputy[n]');grid;subplot(3,1,2)stem(n,yd(1:41));ylabel('Amplitude');title(['OutputduetoDelayedInputx[n?',num2str(D),']']);grid;subplot(3,1,3)stem(n,d);xlabel('Timeindexn');ylabel('Amplitude');title('DifferenceSignal');grid;7、编写输入序列和系统单位脉冲响应的卷积程序并画出图形。%ProgramP2_7clf;h=[321-210-403];%impulseresponsex=[1-23-4321];%inputsequencey=conv(h,x);n=0:14;subplot(2,1,1);stem(n,y);xlabel('Timeindexn');ylabel('Amplitude');title('OutputObtainedbyConvolution');grid;x1=[xzeros(1,8)];y1=filter(h,1,x1);subplot(2,1,2);stem(n,y1);xlabel('Timeindexn');ylabel('Amplitude');title('OutputGeneratedbyFiltering');grid;8、编写输入信号经滤波形成的系统输出信号。%ProgramP2_9%Generatetheinputsequenceclf;n=0:299;x1=cos(2*pi*10*n/256);x2=cos(2*pi*100*n/256);x=x1+x2;%Computetheoutputsequencesnum1=[0.50.270.77];y1=filter(num1,1,x);%OutputofSystem#1den2=[1-0.530.46];num2=[0.450.50.45];y2=filter(num2,den2,x);%OutputofSystem#2%Plottheoutputsequencessubplot(2,1,1);plot(n,y1);axis([0300-22]);ylabel('Amplitude');title('OutputofSystem#1');grid;subplot(2,1,2);plot(n,y2);axis([0300-22]);xlabel('Timeindexn');ylabel('Amplitude');title('OutputofSystem#2');grid;9、四、本实验用到的matlab命令Stemplotsinabscosconvclfsubplotfilterimpz实验二:时域连续时间信号和频域抽样理论的验证与观察

一、实验目的:1、理解并掌握信号时域采样和频率抽样理论涉及的过程和效果;2、通过编程加深理解奈奎斯特采样定理,理解不满足采样条件的对时域和频域采样造成的混叠现象。二、实验内容:1、时域的采样过程、采样定理和混叠效果;2、频域中的采样效果;3、学习buttworth模拟低通滤波器的设计命令;三、实验例程1、连续时间信号的理想抽样及其混叠效果clf;T=0.4;f=25;n=(0:T:1)';xs=cos(2*pi*f*n);t=linspace(-0.5,1.5,500)';ya=sinc((1/T)*t(:,ones(size(n)))-(1/T)*n(:,ones(size(t)))')*xs;plot(n,xs,'o',t,ya);grid;xlabel('Time,msec');ylabel('Amplitude');title('Reconstructedcontinuous-timesignaly_{a}(t)');axis([01-1.21.2])2、.频率抽样及其混叠效果clf;t=0:0.002:50;xa=2*t.*exp(-t);subplot(4,2,1)plot(t,xa);gridxlabel('Time,msec');ylabel('Amplitude');title('Continuous-timesignalx_{a}(t)');subplot(4,2,2)wa=0:10/511:10;ha=freqs(2,[121],wa);plot(wa/(2*pi),abs(ha));grid;xlabel('Frequency,kHz');ylabel('Amplitude');title('|X_{a}(j\\Omega)|');axis([05/pi02]);subplot(4,2,3)T=1;n=0:T:10;xs=2*n.*exp(-n);k=0:length(n)-1;stem(k,xs);grid;xlabel('Timeindexn');ylabel('Amplitude');title('Discrete-timesignalx[n]');subplot(4,2,4)wd=0:pi/255:pi;hd=freqz(xs,1,wd);plot(wd/(T*pi),T*abs(hd));grid;xlabel('Frequency,kHz');ylabel('Amplitude');title('|X(e^{j\\omega})|');axis([01/T02])3、buttworth模拟低通滤波器的设计命令并画出该滤波器图形。clf;Fp=3500;Fs=4500;Wp=2*pi*Fp;Ws=2*pi*Fs;[N,Wn]=buttord(Wp,Ws,0.5,30,'s');[b,a]=butter(N,Wn,'s');wa=0:(3*Ws)/511:3*Ws;h=freqs(b,a,wa);plot(wa/(2*pi),20*log10(abs(h)));gridxlabel('Frequency,Hz');ylabel('Gain,dB');title('Gainresponse');axis([03*Fs-605]);四、本实验用到的matlab命令Butterbuttordfreqsfreqzsinchist实验三:离散时间信号与离散时间系统系统的频域分析

一、实验目的:1、掌握matlab编写基于离散时间傅立叶变换(DTFT)、z变换和离散傅立叶变换(DFT)的程序,并通过本训练加深对这些概念和算法的理解;2、理解DTFT、ZT和DFT的相互关系。3、掌握离散系统的频率响应分析;4、理解零、极点分布的概念。5、理解帕斯瓦尔定理。二、实验内容:1、离散时间傅立叶变换(DTFT)的定义、计算和基本性质;2、Z变换分析;3、系统传输函数和频率响应;4、系统传输函数的类型;5、系统稳定性测试;6、离散傅立叶变换(DFT)的计算和基本性质;7、利用FFT实现线性卷积;8、利用FFT显示理解帕斯瓦尔定理。三、实验例程1、用MATLAB编写离散时间信号的傅里叶变换(DTFT)并绘出8点幅频和相频曲线。%ProgramP3_1%EvaluationoftheDTFTclf;%ComputethefrequencysamplesoftheDTFTw=-4*pi:8*pi/511:4*pi;num=[21];den=[1-0.6];h=freqz(num,den,w);%PlottheDTFTsubplot(2,1,1)plot(w/pi,real(h));gridtitle('RealpartofH(e^{j\\omega})')xlabel('\\omega/\\pi');ylabel('Amplitude');subplot(2,1,2)plot(w/pi,imag(h));gridtitle('ImaginarypartofH(e^{j\\omega})')xlabel('\\omega/\\pi');ylabel('Amplitude');pausesubplot(2,1,1)plot(w/pi,abs(h));gridtitle('MagnitudeSpectrum|H(e^{j\\omega})|')xlabel('\\omega/\\pi');ylabel('Amplitude');subplot(2,1,2)plot(w/pi,angle(h));gridtitle('PhaseSpectrumarg[H(e^{j\\omega})]')xlabel('\\omega/\\pi');ylabel('Phaseinradians');2、MATLAB验证实序列的离散时间傅立叶变换的对称关系。N=8;k=0:N-1;gamma=0.5;x=exp(gamma*k);y=exp(gamma*fliplr(k));xev=0.5*([zeros([1,N-1])x]+[yzeros([1,N-1])]);xod=0.5*([zeros([1,N-1])x]-[yzeros([1,N-1])]);[X,w]=freqz(x,1,512);[Xev,w]=freqz(xev,1,512);[Xod,w]=freqz(xod,1,512);Xev=exp(j*w*(N-1)).*Xev;Xod=exp(j*w*(N-1)).*Xod;%Verifyreal(X)=Xev,andimag(X)=Xodr=0:511;w0=-pi*r/512;X1=freqz(x,1,w0');%VerifyX=conj(X1)%real(X)=real(X1)andimag(X)=-imag(X1)%abs(X)=abs(X1)andangle(X)=-angle(X1)3、用MATLAB计算序列ModulationPropertyofDTFT并给出其调制图形。%ProgramP3_5%ModulationPropertyofDTFTclf;w=-pi:2*pi/255:pi;x1=[1357911131517];x2=[1-11-11-11-11];y=x1.*x2;h1=freqz(x1,1,w);h2=freqz(x2,1,w);h3=freqz(y,1,w);subplot(3,1,1)plot(w/pi,abs(h1));gridtitle('MagnitudeSpectrumofFirstSequence')subplot(3,1,2)plot(w/pi,abs(h2));gridtitle('MagnitudeSpectrumofSecondSequence')subplot(3,1,3)plot(w/pi,abs(h3));gridtitle('MagnitudeSpectrumofProductSequence')n1

4、用MATLAB计算序列y2nN

0

5,7,9。比较在2k/N,

N=16;clf;N=input('ThevalueofN=');k=-N:N;y1=ones([1,2*N+1]);y2=y1-abs(k)/N;w=0:2*pi/255:2*pi;Y2=freqz(y2,1,w);Y2dft=fft(y2);k=0:1:2*N;NnN的N点离散傅立叶变换,N取3,otherwise

k0,1,,N1时计算得到的离散时间傅立叶变换的结果。plot(w/pi,abs(Y2),k*2/(2*N+1),abs(Y2dft),'o');xlabel('Normalizedfrequency');ylabel('Amplitude');4、用MATLAB研究滤波器的系统函数及其冲激响应,产生零极点图,最终显示出零点的位置。clf;b=[1-8.530.5-63];num1=[b81fliplr(b)];num2=[b8181fliplr(b)];num3=[b0-fliplr(b)];num4=[b81-81-fliplr(b)];n1=0:length(num1)-1;n2=0:length(num2)-1;subplot(2,2,1);stem(n1,num1);xlabel('Timeindexn');ylabel('Amplitude');grid;title('Type1FIRFilter');subplot(2,2,2);stem(n2,num2);xlabel('Timeindexn');ylabel('Amplitude');grid;title('Type2FIRFilter');subplot(2,2,3);stem(n1,num3);xlabel('Timeindexn');ylabel('Amplitude');grid;title('Type3FIRFilter');subplot(2,2,4);stem(n2,num4);xlabel('Timeindexn');ylabel('Amplitude');grid;title('Type4FIRFilter');pausesubplot(2,2,1);zplane(num1,1);title('Type1FIRFilter');subplot(2,2,2);zplane(num2,1);title('Type2FIRFilter');subplot(2,2,3);zplane(num3,1);title('Type3FIRFilter');subplot(2,2,4);zplane(num4,1);title('Type4FIRFilter');disp('ZerosofType1FIRFilterare');disp(roots(num1));disp('ZerosofType2FIRFilterare');disp(roots(num2));disp('ZerosofType3FIRFilterare');disp(roots(num3));disp('ZerosofType4FIRFilterare');disp(roots(num4));4.用MATLAB产生序列的圆周移位,并画图观察该现象,clf;x=[0246810121416];N=length(x)-1;n=0:N;y=circshift(x,5);XF=fft(x);YF=fft(y);subplot(2,2,1)stem(n,abs(XF));gridtitle('MagnitudeofDFTofOriginalSequence');subplot(2,2,2)stem(n,abs(YF));gridtitle('MagnitudeofDFTofCircularlyShiftedSequence');subplot(2,2,3)stem(n,angle(XF));gridtitle('PhaseofDFTofOriginalSequence');subplot(2,2,4)stem(n,angle(YF));gridtitle('PhaseofDFTofCircularlyShiftedSequence');5、用MATLAB编写快速傅里叶变换,并实现偶序列的DFT的虚实部,采用图形表示。%ProgramP3_11%RelationsbetweentheDFTsofthePeriodicEven%andOddPartsofaRealSequencex=[1242632642zeros(1,247)];x1=[x(1)x(256:-1:2)];xe=0.5*(x+x1);XF=fft(x);XEF=fft(xe);clf;k=0:255;subplot(2,2,1);plot(k/128,real(XF));grid;ylabel('Amplitude');title('Re(DFT\\{x[n]\\})');subplot(2,2,2);plot(k/128,imag(XF));grid;ylabel('Amplitude');title('Im(DFT\\{x[n]\\})');subplot(2,2,3);plot(k/128,real(XEF));grid;xlabel('Timeindexn');ylabel('Amplitude');title('Re(DFT\\{x_{e}[n]\\})');subplot(2,2,4);plot(k/128,imag(XEF));grid;xlabel('Timeindexn');ylabel('Amplitude');title('Im(DFT\\{x_{e}[n]\\})');6、编写稳定性测试程序%ProgramP4_4%StabilityTestclf;den=input('Denominatorcoefficients=');ki=poly2rc(den);disp('Stabilitytestparametersare');disp(ki);7、用MATLABD编写基于FFT的帕斯瓦尔定理。%ProgramP3_12%Parseval'sRelationx=[(1:128)(128:-1:1)];XF=fft(x);a=sum(x.*x)b=round(sum(abs(XF).^2)/256)四、本实验用到的matlab命令filterFreqzimpzfilrfiltresidueztf2zpzp2soszplanefftsinczplane实验四:IIR&FIR数字滤波器的设计

一、实验目的:1、熟悉无限冲激响应(IIR)和有限冲激响应(FIR)网络结构,对比学习模拟滤波器和数字滤波器的常用指标;2、熟悉冲激响应不变法和双线性变换法设计低通滤波器的程序编写,并深化理解;3、熟悉FIR线性相位滤波器的概念及其表示;4、熟悉FIR滤波器窗函数设计法;5、熟悉两种滤波器设计过程,并可修改其设计指标,对比输出效果。二、实验内容:1、IIR(无限冲激响应滤波器)阶数估计及其buttworth和chybyshev滤波器设计;2、冲激响应不变法和双线性变换法设计;3、FIR滤波器设计中出现频域出现吉布斯现象的来由;3、有限冲激响应滤波器窗函数设计法;三、实验计算及例程1、设低通DF的3dB带宽频率wc=0.2π,止带频率ws=0.4π,在w=ws处的止带衰减20lg|H(ejws)|=-15dB,试用脉冲响应不变法(冲激不变法)设计一个Butterworth低通DF。(设采样频率fs=20kHz)

Wp=input('Normalizedpassbandedge=');Ws=input('Normalizedstopbandedge=');Rp=input('PassbandrippleindB=');Rs=input('MinimumstopbandattenuationindB=');[N,Wn]=buttord(Wp,Ws,Rp,Rs);[b,a]=butter(N,Wn);[h,omega]=freqz(b,a,512);plot(omega/pi,20*log10(abs(h)));grid;xlabel('\\omega/\\pi');ylabel('GaindB');title('IIRButterworthLowpassFilter');2无限冲激响应滤波器阶数估计和滤波器设计巴特沃兹带阻滤波器Ws=[0.40.6];Wp=[0.20.8];Rp=0.4;Rs=50;%EstimatetheFilterOrder[N1,Wn1]=buttord(Wp,Ws,Rp,Rs);%DesigntheFilter[num,den]=butter(N1,Wn1,'stop');%Displaythetransferfunctiondisp('NumeratorCoefficientsare');disp(num);disp('DenominatorCoefficientsare');disp(den);%Computethegainresponse[g,w]=gain(num,den);%Plotthegainresponseplot(w/pi,g);gridaxis([01-605]);xlabel('\\omega/\\pi');ylabel('GainindB');title('GainResponseofaButterworthBandstopFilter')3、吉布斯环的生成;在FIR窗函数设计法中,频域傅立叶变换的无限振荡谐波数列叠加合成时,会产生尖锐不连续的区间,好比方波的下降及上升,这就是吉布斯现象,这种现象产生的不仅与谐波的叠加合成的数量有关,而且其变化的宽度随合成的个数增加而变窄。单位方波:傅立叶级数表示:functiony=gibbs(x,M,duty)%GIBBS%x:待估价的值(0已知低通DF的3dB带宽频率

c0.2,止带起始频率

s处的止带衰减

20lgH(ejws)15dB

要求进行计算机MATLAB仿真并得出结果。

解:使用Matlab软件仿真仿真的程序如下:s0.4,在

clc;clearall;OmegaP=2*pi*2000;OmegaS=2*pi*4000;Rp=3;As=15;g=sqrt((10^(As/10)-1)/(10^(Rp/10)-1));OmegaR=OmegaS/OmegaP;N=ceil(log10(g+sqrt(g*g-1))/log10(OmegaR+sqrt(OmegaR*OmegaR-1)));OmegaC=OmegaS;[z0,p0,k0]=cheb2ap(N,As);a0=real(poly(p0));aNn=a0(N+1);p=p0*OmegaC;a=real(poly(p));aNu=a(N+1);b0=real(poly(z0));M=length(b0);bNn=b0(M);z=z0*OmegaC;b=real(poly(z));bNu=b(M);k=k0*(aNu*bNn)/(aNn*bNu);b=k*bw0=[OmegaP,OmegaS];[H,w]=freqs(b,a);Hx=freqs(b,a,w0);dbHx=-20*log10(abs(Hx)/max(abs(H)))plot(w/(2*pi)/1000,20*log10(abs(H)));xlabel('f(kHz)');ylabel('dB');axis([-1,12,-55,1]);set(gca,'xtickmode','manual','xtick',[0,1,2,3,4,5,6,7,8,9]);set(gca,'ytickmode','manual','ytick',[-50,-40,-30,-20,-10,0]);grid;6、设计一线性相位

FIR数字滤波器截止频率wc=0.2π,过滤带宽度△

w<0.4π,阻带衰减As>40db,用Hanning汉宁窗、hamming汉明窗以及Blackman窗设计(可以查阅相关表格),并用MATLAB软件实现(包括画图)。

解:查资料有如下表1各种窗函数的基本参数窗函数矩形窗三角形窗旁瓣峰值幅度/dB-13-25过渡带宽4π/N8π/N阻带最小衰减/dB-12-25汉宁窗哈明窗布莱克窗凯塞窗(α=7.865)-31-41-57-578π/N8π/N12π/N10π/N-44-53-74-80由上表并经计算可知N的取值为N=20表2不同的β值对应的凯塞窗β2.2103.3844.5385.6586.764由表可知β=3.384则用Matlab软件仿真的程序如下:clc;clearall;N=20;n=1:N;beta=3.384;wdhn=hanning(N);wdhm=hamming(N);wdbl=blackman(N);wdks=kaiser(N,beta);plot(n',[wdhn,wdhm,wdbl,wdks])legend('hn','hm','bl','ks')仿真的结果如下图:过渡带宽B/rad3.004,465.867.2412.8阻带最小衰减/dB3040506070四、本实验用到的matlab命令Blackmanbutterbuttordchebwinchev1ordchev2ordcheby1cheby2ellipellipordfreqzsincfir1fir2hanninghammingKaiserremezremezordfreqs

因篇幅问题不能全部显示,请点此查看更多更全内容