1、数字信号处理上机全部源代码调试通过,完整版(高西全,第四版)实验一%实验 1:系统响应及系统稳定性close all;clear all%调用 fliter 解差分方程,由系统对 un 的响应判断稳定性%内容 1: 调用 filter 解差分方程, 由系统对 u(n)的响应判断稳定性A=1,-0.9;B=0.05,0.05;x1n=1 1 1 1 1 1 1 1 zeros(1,50);x2n=ones(1,128);hn=impz(B,A,58);subplot(2,2,1);y=h(n);tstem(hn,y);title(a) 系统单位脉冲响应 h(n)y1n=filter(B,A,x1
2、n);subplot(2,2,2);y=y1(n);tstem(y1n,y);title(b) 系统对 R8(n)的响应 y1(n)y2n=filter(B,A,x2n);subplot(2,2,4);y=y2(n);tstem(y2n, y);title(c) 系统对 u(n)的响应 y2(n)y1n=filter(B,A,x1n);subplot(2,2,2);y=y1(n);tstem(y1n,y);title(b) 系统对 R8(n)的响应 y1(n)y2n=filter(B,A,x2n);subplot(2,2,4);y=y2(n);tstem(y2n, y);title(c) 系统
3、对 u(n)的响应 y2(n)%内容 2: 调用 conv 函数计算卷积x1n=1 1 1 1 1 1 1 1; %产生信号 x1n=R8nh1n=ones(1,10) zeros(1,10);h2n=1 2.5 2.5 1 zeros(1,10)y21n=conv(h1n,x1n);y22n=conv(h2n,x1n);figure(2)subplot(2,2,1);y=h1(n);tstem(h1n,y); %调用函数 tstem 绘图title(d) 系统单位脉冲响应 h1(n)subplot(2,2,2);y=y21(n);tstem(y21n,y);title(e) h1(n)与 R
4、8(n)的卷积 y21(n)subplot(2, 2,3); y=h2(n);tstem(h2n,y); %调用函数 tstem 绘图title(f) 系统单位脉冲响应 h2(n)subplot(2, 2, 4); y=y22(n);tstem(y22n, y);title(g) h2(n)与 R8(n)的卷积 y22(n)%=%内容 3: 谐振器分析un=ones(1, 256); %产生信号 unn=0:255;xsin=sin(0.014*n)+sin(0.4*n); %产生正弦信号A=1,-1.8237,0.9801;B=1/100.49,0,-1/100.49; %系统差分方程系数向
5、量 B 和 Ay31n=filter(B,A,un); %谐振器对 un 的响应 y31ny32n=filter(B,A,xsin);%谐振器对正弦信号的响应 y32nfigure(3)subplot(2,1,1);y=y31(n);tstem(y31n,y)title(h) 谐振器对 u(n)的响应 y31(n)subplot(2,1,2);y=y32(n);tstem(y32n,y);title(i) 谐振器对正弦信号的响应 y32(n)function tstem(xn,yn)n = 0:length(xn)-1;stem(n,xn,.);xlabel(n);ylabel(yn);%xl
6、abel(n );ylabel(yn);axis(0,n(end),min(xn),1.2*max(xn);实验二%时域采样理论验证程序 exp2a.mTp=64/1000;%观察时间 Tp=64 微秒%产生 M 长采样序列 x(n)% Fs=1000; T=1/Fs;Fs=1000; T=1/Fs;M=Tp*Fs; n=0:M-1;A=444.128; alph=pi*50*20.5; omega=pi*50*20.5; xnt=A*exp(-alph*n*T).*sin(omega*n*T);Xk=T*fft(xnt,M);%M 点 FFTxnt)yn=xa(nT);subplot(3,2
7、,1);tstem(xnt,yn); %调用自编绘图函数 tstem 绘制序列图box on; title(a) Fs=1000Hz);k=0:M-1; fk=k/Tp;subplot(3,2,2); plot(fk,abs(Xk); title(a) T*FTxa(nT),Fs=1000Hz);xlabel(f(Hz); ylabel(幅度); axis(0,Fs,0,1.2*max(abs(Xk)%=% Fs=300Hz 和 Fs=200Hz 的程序与上面 Fs=1000Hz 的程序完全相同。% fs=300HzTp=64/1000;%观察时间 Tp=64 微秒%产生 M 长采样序列 x(
8、n)% Fs=1000; T=1/Fs;Fs=300; T=1/Fs;M=Tp*Fs; n=0:M-1;A=444.128; alph=pi*50*20.5; omega=pi*50*20.5; xnt=A*exp(-alph*n*T).*sin(omega*n*T);Xk=T*fft(xnt,M);%M 点 FFTxnt)yn=xa(nT);figure(2);subplot(3,2,1);tstem(xnt,yn); %调用自编绘图函数 tstem 绘制序列图box on; title(b) Fs=300Hz);k=0:M-1; fk=k/Tp;subplot(3,2,2); plot(f
9、k,abs(Xk); title(b) T*FTxa(nT),Fs=1000Hz);xlabel(f(Hz); ylabel(幅度); axis(0,Fs,0,1.2*max(abs(Xk)% fs=200HzTp=64/1000;%观察时间 Tp=64 微秒%产生 M 长采样序列 x(n)% Fs=1000; T=1/Fs;Fs=200; T=1/Fs;M=Tp*Fs; n=0:M-1;A=444.128; alph=pi*50*20.5; omega=pi*50*20.5; xnt=A*exp(-alph*n*T).*sin(omega*n*T);Xk=T*fft(xnt,M);%M 点
10、FFTxnt)yn=xa(nT);figure(3);subplot(3,2,1);tstem(xnt,yn); %调用自编绘图函数 tstem 绘制序列图box on; title(c) Fs=200Hz);k=0:M-1; fk=k/Tp;subplot(3,2,2); plot(fk,abs(Xk); title(c) T*FTxa(nT),Fs=1000Hz);xlabel(f(Hz); ylabel(幅度); axis(0,Fs,0,1.2*max(abs(Xk)%频域采样理论验证程序 exp2b.mM=27;N=32;n=0:M;%产生 M 长三角波序列 x(n)xa=0:floo
11、r(M/2); xb= ceil(M/2)-1:-1:0; xn=xa,xb;Xk=fft(xn,1024);%1024 点 FFTx(n), 用于近似序列 x(n)的 TFX32k=fft(xn,32);%32 点 FFTx(n)x32n=ifft(X32k);%32 点 IFFTX32(k)得到 x32(n)X16k=X32k(1:2:N);%隔点抽取 X32k 得到 X16(K)x16n=ifft(X16k,N/2); %16 点 IFFTX16(k)得到 x16(n)subplot(3,2,2);stem(n,xn,.);box ontitle(b) 三角波序列 x(n);xlabel
12、(n);ylabel(x(n);axis(0,32,0,20)k=0:1023;wk=2*k/1024; %subplot(3,2,1);plot(wk,abs(Xk);title(a)FTx(n);xlabel(omega/pi);ylabel(|X(ejomega)|);axis(0,1,0,200)k=0:N/2-1;subplot(3,2,3);stem(k,abs(X16k),.);box ontitle(c) 16 点频域采样);xlabel(k);ylabel(|X_1_6(k)|);axis(0,8,0,200)n1=0:N/2-1;subplot(3,2,4);stem(n1
13、,x16n,.);box ontitle(d) 16 点 IDFTX_1_6(k);xlabel(n);ylabel(x_1_6(n);axis(0,32,0,20)k=0:N-1;subplot(3,2,5);stem(k,abs(X32k),.);box ontitle(e) 32 点频域采样 );xlabel(k);ylabel(|X_3_2(k)|);axis(0,16,0,200)n1=0:N-1;subplot(3,2,6);stem(n1,x32n,.);box ontitle(f) 32 点 IDFTX_3_2(k);xlabel(n);ylabel(x_3_2(n);axis
14、(0,32,0,20)function tstem(xn,yn)n = 0:length(xn)-1;stem(n,xn,.);xlabel(n);ylabel(yn);%xlabel(n );ylabel(yn);axis(0,n(end),min(xn),1.2*max(xn);实验三%实验三程序 exp3.m%用 FFT 对信号作频谱分析%clear all;close all%实验内容(1)=x1n=ones(1,4);%产生序列向量 x1(n)=R4(n)M=8;xa=1:(M/2); xb=(M/2):-1:1; x2n=xa,xb; %产生长度为 8 的三角波序列 x2(n)x3
15、n=xb,xa;X1k8=fft(x1n,8); %计算 x1n 的 8 点 DFTX1k16=fft(x1n,16); %计算 x1n 的 16 点 DFTX2k8=fft(x2n,8); %计算 x1n 的 8 点 DFTX2k16=fft(x2n,16); %计算 x1n 的 16 点 DFTX3k8=fft(x3n,8); %计算 x1n 的 8 点 DFTX3k16=fft(x3n,16); %计算 x1n 的 16 点 DFT%以下绘制幅频特性曲线subplot(2,2,1);mstem(X1k8); %绘制 8 点 DFT 的幅频特性图title(1a) 8 点 DFTx_1(n
16、);xlabel(/ );ylabel(幅度);axis(0,2,0,1.2*max(abs(X1k8)subplot(2,2,3);mstem(X1k16); %绘制 16 点 DFT 的幅频特性图title(1b)16 点 DFTx_1(n);xlabel(/ );ylabel(幅度);axis(0,2,0,1.2*max(abs(X1k16)figure(2)subplot(2,2,1);mstem(X2k8); %绘制 8 点 DFT 的幅频特性图title(2a) 8 点 DFTx_2(n);xlabel(/ );ylabel(幅度);axis(0,2,0,1.2*max(abs(X
17、2k8)subplot(2,2,2);mstem(X2k16); %绘制 16 点 DFT 的幅频特性图title(2b)16 点 DFTx_2(n);xlabel(/ );ylabel(幅度);axis(0,2,0,1.2*max(abs(X2k16)subplot(2,2,3);mstem(X3k8); %绘制 8 点 DFT 的幅频特性图title(3a) 8 点 DFTx_3(n);xlabel(/ );ylabel(幅度);axis(0,2,0,1.2*max(abs(X3k8)subplot(2,2,4);mstem(X3k16); %绘制 16 点 DFT 的幅频特性图title
18、(3b)16 点 DFTx_3(n);xlabel(/ );ylabel(幅度);axis(0,2,0,1.2*max(abs(X3k16)%实验内容(2) 周期序列谱分析=N=8;n=0:N-1; %FFT 的变换区间 N=8x4n=cos(pi*n/4);x5n=cos(pi*n/4)+cos(pi*n/8);X4k8=fft(x4n); %计算 x4n 的 8 点 DFTX5k8=fft(x5n); %计算 x5n 的 8 点 DFTN=16;n=0:N-1; %FFT 的变换区间 N=16x4n=cos(pi*n/4);x5n=cos(pi*n/4)+cos(pi*n/8);X4k16
19、=fft(x4n); %计算 x4n 的 16 点 DFTX5k16=fft(x5n); %计算 x5n 的 16 点 DFTfigure(3)subplot(2,2,1);mstem(X4k8); %绘制 8 点 DFT 的幅频特性图title(4a) 8 点 DFTx_4(n);xlabel(/);ylabel(幅度);axis(0,2,0,1.2*max(abs(X4k8)subplot(2,2,3);mstem(X4k16); %绘制 16 点 DFT 的幅频特性图title(4b)16 点 DFTx_4(n);xlabel(/);ylabel(幅度);axis(0,2,0,1.2*m
20、ax(abs(X4k16)subplot(2,2,2);mstem(X5k8); %绘制 8 点 DFT 的幅频特性图title(5a) 8 点 DFTx_5(n);xlabel(/ );ylabel(幅度);axis(0,2,0,1.2*max(abs(X5k8)subplot(2,2,4);mstem(X5k16); %绘制 16 点 DFT 的幅频特性图title(5b)16 点 DFTx_5(n);xlabel(/ );ylabel(幅度);axis(0,2,0,1.2*max(abs(X5k16)%实验内容(3) 模拟周期信号谱分析=figure(4)Fs=64;T=1/Fs;N=1
21、6;n=0:N-1; %FFT 的变换区间 N=16x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);%对 x6(t)16 点采样X6k16=fft(x6nT); %计算 x6nT 的 16 点 DFTX6k16=fftshift(X6k16); %将零频率移到频谱中心 Tp=N*T;F=1/Tp; %频率分辨率 Fk=-N/2:N/2-1;fk=k*F; %产生 16 点 DFT 对应的采样点频率(以零频率为中心)subplot(3,1,1);stem(fk,abs(X6k16),.);box on %绘制 8 点 DFT 的幅频特性图titl
22、e(6a) 16 点|DFTx_6(nT)|);xlabel(f(Hz);%ylabel(幅度);axis(-N*F/2-1,N*F/2-1,0,1.2*max(abs(X6k16)N=32;n=0:N-1; %FFT 的变换区间 N=16x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T); %对 x6(t)32 点采样X6k32=fft(x6nT); %计算 x6nT 的 32 点 DFTX6k32=fftshift(X6k32); %将零频率移到频谱中心 Tp=N*T;F=1/Tp; %频率分辨率 Fk=-N/2:N/2-1;fk=k*F; %
23、产生 16 点 DFT 对应的采样点频率(以零频率为中心)subplot(3, 1, 2);stem(fk, abs(X6k32), .);box on %绘制 8 点 DFT 的幅频特性图title(6b) 32 点|DFTx_6(nT)|);xlabel(f(Hz);ylabel(幅度);axis(-N*F/2-1, N*F/2-1,0, 1.2*max(abs(X6k32)N=64;n=0:N-1; %FFT 的变换区间 N=16x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);%对 x6(t)64 点采样X6k64=fft(x6nT);
24、%计算 x6nT 的 64 点 DFTX6k64=fftshift(X6k64); %将零频率移到频谱中心 Tp=N*T;F=1/Tp; %频率分辨率 Fk=-N/2:N/2-1;fk=k*F; %产生 16 点 DFT 对应的采样点频率(以零频率为中心)subplot(3,1,3);stem(fk,abs(X6k64),.); box on%绘制 8 点 DFT 的幅频特性图title(6a) 64 点|DFTx_6(nT)|);xlabel(f(Hz);ylabel(幅度);axis(-N*F/2-1,N*F/2-1,0, 1.2*max(abs(X6k64)function mstem(
25、Xk)%mstem(Xk)绘制频域采样序列向量 Xk 的幅频特性图M=length(Xk);k=0:M-1;wk=2*k/M;%产生 M 点 DFT 对应的采样点频率(关于 pi 归一化值)stem(wk,abs(Xk),.);box on;%绘制 M 点 DFT 的幅频特性图 ?xlabel(w/pi);ylabel(幅度);axis(0,2,0,1.2*max(abs(Xk);实验四%实验四程序 exp4.m% IIR 数字滤波器设计及软件实现%clear all; close allFs=10000; T=1/Fs; %采样频率%调用信号产生函数 mstg 产生由三路抑制载波调幅信号相加
26、构成的复合信号 st st=mstg;%低通滤波器设计与实现=fp=280; fs=450;wp=2*fp/Fs; ws=2*fs/Fs; rp=0.1; rs=60; %DF 指标(低通滤波器的通、 阻带边界频率)N,wp=ellipord(wp,ws,rp,rs); %调用 ellipord 计算椭圆 DF 阶数 N 和通带截止频率 wpB,A=ellip(N,rp,rs,wp); %调用 ellip 计算椭圆带通 DF 系统函数系数向量 B 和 Ay1t=filter(B,A,st); %滤波器软件实现% 低通滤波器设计与实现绘图部分figure(2); subplot(3,1,1);m
27、yplot(B,A);%调用绘图函数 myplot 绘制损耗函数曲线yt=y_1(t);subplot(3,1,2); tplot(y1t,T,yt); %调用绘图函数 tplot 绘制滤波器输出波形%=%带通滤波器设计与实现=fpl=440; fpu=560; fsl=275; fsu=900;wp=2*fpl/Fs,2*fpu/Fs; ws=2*fsl/Fs,2*fsu/Fs; rp=0.1; rs=60; N,wp=ellipord(wp,ws,rp,rs);%调用 ellipord 计算椭圆 DF 阶数 N 和通带截止频率 wpB,A=ellip(N,rp,rs,wp); %调用 ellip 计算椭圆带通 DF 系统函数系数向量 B 和 Ay2t=filter(B,A,st); %滤波器软件实现% 带通滤波器设计与实现绘图部分(省略)%补充 1figure(2); subplot(3,1,3);myplot(B,A);%-figure(3);