《数字信号处理》上机全部源代码调试通过,完整版
(高西全,第四版)
实验一
%实验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,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) 系统对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) 系统对u(n)的响应y2(n)')
%内容2: 调用conv函数计算卷积
x1n=[1 1 1 1 1 1 1 1]; %产生信号x1n=R8n
h1n=[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)与R8(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);    %产生信号un
n=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];
%系统差分方程系数向量B和A
y31n=filter(B,A,un);  %谐振器对un的响应y31n
y32n=filter(B,A,xsin);
%谐振器对正弦信号的响应y32n
figure(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');
%xlabel('n'  );ylabel(yn);
axis([0,n(end),min(xn),1.2*max(xn)]);

实验二
%时域采样理论验证程序exp2a.m
Tp=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*2^0.5; omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M);%M点FFT[xnt)]
yn='xa(nT)';subplot(3,2,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*FT[xa(nT)],Fs=1000Hz');
xlabel('f(Hz)'); ylabel('幅度');
axis([0,Fs,0,1.2*max(abs(Xk))])
%=================================
% Fs=300Hz和 Fs=200Hz的程序与上面Fs=1000Hz的程序完全相同。
%%%%%%%%%%%% fs=300Hz
Tp=64/1000;%观察时间Tp=64微秒
%产生M长采样序列x(n)
% Fs=1000; T=1/Fs;
Fs=300; T=1/Fs;
M=Tp*Fs; n=0:M-1;
A=444.128; alph=pi*50*2^0.5; omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M);%M点FFT[xnt)]
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(fk,abs(Xk));
title('(b) T*FT[xa(nT)],Fs=1000Hz');
xlabel('f(Hz)'); ylabel('幅度');
axis([0,Fs,0,1.2*max(abs(Xk))])
%%%%%%%%%%%%%%%%%%% fs=200Hz
Tp=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*2^0.5; omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M);%M点FFT[xnt)]
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*FT[xa(nT)],Fs=1000Hz');
xlabel('f(Hz)'); ylabel('幅度');
axis([0,Fs,0,1.2*max(abs(Xk))])
%频域采样理论验证程序exp2b.m
M=27;N=32;n=0:M;
%产生M长三角波序列x(n)
xa=0:floor(M/2);  xb= ceil(M/2)-1:-1:0; xn=[xa,xb];
Xk=fft(xn,1024);%1024点FFT[x(n)], 用于近似序列x(n)的TF
X32k=fft(xn,32);%32点FFT[x(n)]
x32n=ifft(X32k);%32点IFFT[X32(k)]得到x32(n)
X16k=X32k(1:2:N);%隔点抽取X32k得到X16(K)
x16n=ifft(X16k,N/2);    %16点IFFT[X16(k)]得到x16(n)
subplot(3,2,2);stem(n,xn,'.');box on
title('(b) 三角波序列x(n)');xlabel('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)FT[x(n)]');
xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');axis([0,1,0,200])
4k电影源代码
k=0:N/2-1;
subplot(3,2,3);stem(k,abs(X16k),'.');box on
title('(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,x16n,'.');box on
title('(d) 16点IDFT[X_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 on
title('(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 on