数字信号处理上机实验题目答案实验报告.docx
《数字信号处理上机实验题目答案实验报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理上机实验题目答案实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
数字信号处理上机实验题目答案实验报告
上机实验
实验一:
实验内容和步骤:
(1)已知A=[1234],B=[3456].C=A+B;D=A-B;E=A.*B;F=A./B;G=A.^B.
求出C、D、E、F、G,并用绘图函数stem绘出A、B、C、D、E、F、G的序列图。
(2)已知序列
;
;
要求用绘图函数stem画出x(n)的序列图。
(3)已知
;
要求用绘图函数stem画出x(n)的序列图。
作业1.1:
closeall;clearall;clc;
A=[1234];B=[3456];
C=A+B;D=A-B;E=A.*B;F=A./B;G=A.^B;
subplot(2,4,1);stem(A,'.');subplot(2,4,2);stem(B,'.');
subplot(2,4,3);stem(C,'.');subplot(2,4,4);stem(D,'.');
subplot(2,4,5);stem(E,'.');subplot(2,4,6);stem(F,'.');
subplot(2,4,7);stem(G,'.');
作业1.2:
closeall;clearall;clc;
n=0:
15;
x1n=0.8.^n;
x2n=exp((0.2+3*1i)*n);
x3n=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi);
subplot(2,2,1);stem(n,x1n,'.');
subplot(2,2,2);stem(n,abs(x2n),'.');
subplot(2,2,3);stem(n,angle(x2n),'.');
subplot(2,2,4);stem(n,x3n,'.');
作业1.3
clearall;closeall;clc;
m=0:
0.01:
10;
n=0:
0.01:
4;
x1t=sin(2*pi*m);
x2t=cos(100*pi*n).*sin(pi*n);
subplot(2,1,1);plot(m,x1t);
subplot(2,1,2);plot(n,x2t);
实验二
1、实验报告
(1)简述在时域求系统响应的方法。
(2)简述通过实验判断系统稳定性的方法。
分析上面第三个实验的稳定的输出的波形。
(3)对实验所得结果进行简单的分析和解释
(4)简要回答思考题
(5)打印程序的清单和要求的各信号波形。
答:
(1)在计算机上适合用递推法求差分方程的解,最简单的方法是采用MATLAB语言的工具箱函数filter函数。
也可以用MATLAB语言的工具箱函数conv函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。
(2)实际中检查系统是否稳定,不可能检查系统对所有有界的输入信号,输出是否都是有界输出,或者检查系统的单位脉冲响应满足绝对可和的条件。
可行的方法是在系统的输入端加入单位阶跃序列,如果系统的输出趋近一个常数(包括零),就可以断定系统是稳定的[19]。
系统的稳态输出是指当
时,系统的输出。
如果系统稳定,信号加入系统后,系统输出的开始一段称为暂态效应,随n的加大,幅度趋于稳定,达到稳态输出。
注意在以下实验中均假设系统的初始状态为零。
(4)如果输入信号为无限长序列,系统的单位脉冲响应是有限长序列,可否用线性卷积法求系统的响应。
①对输入信号序列分段;②求单位脉冲响应h(n)与各段的卷积;③将各段卷积结果相加。
如果信号经过低通滤波器,把信号的高频分量滤掉,时域信号的剧烈变化将被平滑。
(5)
作业2.1
closeall;clearall;clc;
n=0:
20;
A=[1-0.9];
B=[0.050.05];
x1=((n>=0)==1)-((n-8>=0)==1);%R8(n)序列
x2=((n>=0)==1);%单位阶跃序列
h1=(n>=0)-(n-10>=1);%R10(n)序列
h2=(n==0)+2.5*(n-1==0)+2.5*(n-2==0)+(n-3==0);%任意序列
subplot(4,2,1);stem(n,x1,'.');
subplot(4,2,2);stem(n,x2,'.');
y1=filter(B,A,x1);
y2=filter(B,A,x2);
subplot(4,2,3);stem(n,y1,'.');
subplot(4,2,4);stem(n,y2,'.');
x=[1zeros(1,20)];
y=filter(B,A,x);
subplot(4,2,5);stem(n,x,'.');subplot(4,2,6);stem(n,y,'.');
subplot(4,2,7);stem(n,h1,'.');
subplot(4,2,8);stem(n,h2,'.');
作业2.2
clearall;closeall;clc;
n=0:
20
h1=(n>=0)-((n-10)>=0)
h2=(n==0)+2.5*(n-1==0)+2.5*(n-2==0)+(n-3==0)
x1=(n>=0)-((n-8)>=0)
y1=conv(x1,h1)
y2=conv(x1,h2)
subplot(2,2,1)
stem(0:
(length(x1)-1),x1,'.')
subplot(2,2,2)
stem(0:
(length(y1)-1),y1,'.')
subplot(2,2,3)
stem(0:
(length(y2)-1),y2,'.')
作业2.3
clearall;closeall;clc;
n=0:
100;
b0=1/100.49;
A=[1-1.82370.9801];
B=[b00-b0];
x1=(n>=0);
x2=sin(0.014*n)+sin(0.4*n);
y1=filter(B,A,x1);
y2=filter(B,A,x2);
subplot(2,2,1);stem(n,x1,'.')
subplot(2,2,2);stem(n,y1,'.')
subplot(2,2,3);stem(n,x2,'.')
subplot(2,2,4);stem(n,y2,'.')
实验三
1、实验报告:
(1)运行程序,打印要求显示的图形
(2)分析比较结果,简述有实验得到的主要理论
(3)简要回答思考题
(4)附上程序清单和有关曲线
答:
(2)采样序列的频谱的确是以采样频率为周期对模拟信号频谱的周期延拓。
当采样频率为1000Hz时频谱混叠很小;当采样频率为300Hz时,在折叠频率150Hz附近频谱混叠很严重;当采样频率为200Hz时,在折叠频率110Hz附近频谱混叠更很严重。
(3)先对原序列x(n)以N为周期进行周期延拓后取主值区序列,再计算N点DFT则得到N点频域采样:
(4)作业3.1
closeall;clearall;clc;
A=444.128;
Tp=0.064;
alpha=50*sqrt
(2)*pi;
omega=50*sqrt
(2)*pi;
Fs1=1000;
Fs2=300;
Fs3=200;
T1=1/Fs1;
T2=1/Fs2;
T3=1/Fs3;
n1=0:
Tp*Fs1-1;
n2=0:
Tp*Fs2-1;
n3=0:
Tp*Fs3-1;
x1n=A*exp(-alpha.*n1*T1).*sin(omega*n1*T1);
X1=fft(x1n,Tp*Fs1);
x2n=A*exp(-alpha.*n2*T2).*sin(omega*n2*T2);
X2=fft(x2n,Tp*Fs2);
x3n=A*exp(-alpha.*n3*T3).*sin(omega*n3*T3);
X3=fft(x3n,Tp*Fs3);
subplot(3,2,1);
stem(n1,x1n,'.');
title('(a)Fs=1000Hz');
subplot(3,2,2);
plot(n1/Tp,abs(X1));
title('(a)FT[x1n(nT)],Fs=1000Hz');
xlabel('f(Hz)');
ylabel('幅度');
axis([0,Fs1,0,1.2*max(abs(X1))])
subplot(3,2,3);
stem(n2,x2n,'.');
title('(a)Fs=300Hz');
subplot(3,2,4);
plot(n2/Tp,abs(X2));
title('(a)FT[x2n(nT)],Fs=300Hz');
xlabel('f(Hz)');
ylabel('幅度');
axis([0,Fs2,0,1.2*max(abs(X2))])
subplot(3,2,5);
stem(n3,x3n,'.');
title('(a)Fs=200Hz');
subplot(3,2,6);
plot(n3/Tp,abs(X3));
title('(a)FT[x3n(nT)],Fs=200Hz');
xlabel('f(Hz)');
ylabel('幅度');
axis([0,Fs3,0,1.2*max(abs(X3))])
作业3.2:
closeall;clearall;clc;
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,'.');
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])
k=0:
N/2-1;
subplot(3,2,3);stem(k,abs(X16k),'.');
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,'.');
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),'.');
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,'.');
title('(f)32点IDFT[X_3_2(k)]');xlabel('n');ylabel('x_3_2(n)');axis([0,32,0,20])
实验四
实验报告:
(1)完成各个实验任务和要求,附上程序清单和有关曲线。
(2)简要回答思考题。
答:
(2)
1.周期信号的周期预先不知道时,可先截取N点进行FFT,再将截取长度扩大1倍截取,比较结果,如果二者的差别满足分析误差要求,则可以近似表示该信号的频谱,如果不满足误差要求就继续将截取长度加倍,重复比较,直到结果满足要求
2.周期:
长度越长,变换出来的结果越精细,所以在运算量可以满足的条件下取的点数越多越好。
如果本身信号的长度有限,比如只有32个点,你又想要更精细的结果,可以在原信号后面补2^n个0。
非周期:
只要其选择的点数满足频率采样定理,同时又能保证频率的分辨率。
(1)作业4.1
clearall;closeall;clc;
n=0:
7;
x1=(n>=0)-((n-4)>=0);
X8k=fft(x1,8);
subplot(2,1,1);
stem(abs(X8k),'.')
X16k=fft(x1,16);
subplot(2,1,2);
stem(abs(X16k),'.')
作业4.2
clearall;closeall;clc;
n=0:
7;
x1=(n>=0)-((n-4)>=0);
X8k1=fft(x1,8);
subplot(3,2,1);
stem(abs(X8k1),'.');
X16k1=fft(x1,16);
subplot(3,2,2);
stem(abs(X16k1),'.');
x2=[12344321];
X8k2=fft(x2,8);
subplot(3,2,3);
stem(abs(X8k2),'.');
X16k2=fft(x2,16);
subplot(3,2,4);
stem(abs(X16k2),'.');
x3=[4321123];
X8k3=fft(x3,8);
subplot(3,2,5);
stem(abs(X8k3),'.');
X16k3=fft(x3,16);
subplot(3,2,6);
stem(abs(X16k3),'.');
clearall;closeall;clc;
n=0:
20;
x1=cos((pi/4)*n);
X8k1=fft(x1,8);
subplot(2,2,1);
stem(abs(X8k1),'.');
X16k1=fft(x1,16);
subplot(2,2,2);
stem(abs(X16k1),'.');
x2=cos((pi/4)*n)+cos((pi/8)*n);
X8k2=fft(x2,8);
subplot(2,2,3);
stem(abs(X8k2),'.');
X16k2=fft(x2,16);
subplot(224);
stem(abs(X16k2),'.');
clearall;closeall;clc;
Fs=64;T=1/Fs;
N1=16;n1=0:
(N1-1);
N2=32;n2=0:
(N2-1);N3=16;
n3=0:
(N3-1);
x1=cos((8*pi*n1*T))+cos((16*pi*n1*T))+cos((20*pi*n1*T));
y1=fft(x1,16);
subplot(3,1,1);
stem(abs(y1),'.')
x2=cos((8*pi*n2*T))+cos((16*pi*n2*T))+cos((20*pi*n2*T));
y2=fft(x2,16);
subplot(3,1,2);
stem(abs(y2),'.');
x3=cos((8*pi*n3*T))+cos((16*pi*n3*T))+cos((20*pi*n3*T));
y3=fft(x3,16);
subplot(3,1,3);
stem(abs(y3),'.');
实验五
实验报告
(1)简述实验目的及原理
(2)画出实验主程序框图,打印程序清单
(3)绘制三个分离滤波器的损耗函数曲线。
(4)绘制经过滤波器分离出的三路调幅信号的时域波形
(5)简要回答思考题
答:
1.实验目的
(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法;
(2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
(3)掌握IIR数字滤波器的MATLAB实现方法。
(4)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。
实验原理
设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。
基本设计过程是:
①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。
MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。
第六章介绍的滤波器设计函数butter、cheby1、cheby2和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。
本实验要求读者调用如上函数直接设计IIR数字滤波器。
本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。
2、信号产生函数mstg清单
functionst=mstg
%产生信号序列向量st,并显示st的时域波形和频谱
%st=mstg返回三路调幅信号相加形成的混合信号,长度N=1600
N=1600%N为信号st的长度。
Fs=10000;T=1/Fs;Tp=N*T;%采样频率Fs=10kHz,Tp为采样时间
t=0:
T:
(N-1)*T;k=0:
N-1;f=k/Tp;
fc1=Fs/10;%第1路调幅信号的载波频率fc1=1000Hz,
fm1=fc1/10;%第1路调幅信号的调制信号频率fm1=100Hz
fc2=Fs/20;%第2路调幅信号的载波频率fc2=500Hz
fm2=fc2/10;%第2路调幅信号的调制信号频率fm2=50Hz
fc3=Fs/40;%第3路调幅信号的载波频率fc3=250Hz,
fm3=fc3/10;%第3路调幅信号的调制信号频率fm3=25Hz
xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);%产生第1路调幅信号
xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);%产生第2路调幅信号
xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);%产生第3路调幅信号
st=xt1+xt2+xt3;%三路调幅信号相加
fxt=fft(st,N);%计算信号st的频谱
====以下为绘图部分,绘制st的时域波形和幅频特性曲线====================
subplot(3,1,1)
plot(t,st);grid;xlabel('t/s');ylabel('s(t)');
axis([0,Tp/8,min(st),max(st)]);title('(a)s(t)的波形')
subplot(3,1,2)
stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的频谱')
axis([0,Fs/5,0,1.2]);
xlabel('f/Hz');ylabel('幅度')
实验程序框图如图所示。
(3)
(4)
(5)第三题:
因为信号st是周期序列,谱分析时要求观察时间为整数倍周期。
所以,本题的一般解答方法是,先确定信号st的周期,在判断所给采样点数N对应的观察时间Tp=NT是否为st的整数个周期。
但信号产生函数mstg产生的信号st共有6个频率成分,求其周期比较麻烦,故采用下面的方法解答。
分析发现,st的每个频率成分都是25Hz的整数倍。
采样频率Fs=10kHz=25×400Hz,即在25Hz的正弦波的1个周期中采样400点。
所以,当N为400的整数倍时一定为st的整数个周期。
因此,采样点数N=800和N=2000时,对st进行N点FFT可以得到6根理想谱线。
如果取N=1000,不是400的整数倍,不能得到6根理想谱线。
作业5.1
functionst=mstg
%产生信号序列向量st,并显示st的时域波形和频谱
%st=mstg返回三路调幅信号相加形成的混合信号,长度N=1600
clearall;closeall;clc;
N=1600;%N为信号st的长度
Fs=10000;T=1/Fs;Tp=N*T;%采样频率Fs=10kHz,Tp为采样时间
t=0:
T:
(N-1)*T;k=0:
N-1;f=k/Tp;
fc1=Fs/10;%第1路调幅信号的载波频率fc1=1000Hz
fm1=fc1/10;%第1路调幅信号的调制信号频率fm1=100Hz
fc2=Fs/20;%第2路调幅信号的载波频率fc2=500Hz
fm2=fc2/10;%第2路调幅信号的调制信号频率fm2=50Hz
fc3=Fs/40;%第3路调幅信号的载波频率fc3=250Hz
fm3=fc3/10;%第3路调幅信号的调制信号频率fm3=25Hz
xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);%产生第1路调幅信号
xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);%产生第2路调幅信号
xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);%产生第3路调幅信号
st=xt1+xt2+xt3;%三路调幅信号相加
fxt=fft(st,N);%计算信号st的频谱
%====以下为绘图部分,绘制st的时域波形和幅频特性曲线====
subplot(3,1,1);
plot(t,st);grid;xlabel('t/s');ylabel('s(t)');
axis([0,Tp/8,min(st),max(st)]);title('(a)s(t)的波形');
subplot(3,1,2);
stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的频谱');
axis([0,Fs/5,0,1.2]);
xlabel('f/Hz');ylabel('幅度');
作业5.2
clearall;closeall;clc;
Fs=10000;T=1/Fs;%采样频率
st=mstg;%调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st
%低通滤波器设计与实现
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和通带截止频率wp
[B,A]=ellip(N,rp,rs,wp);%调用ellip计算椭圆带通DF系统函数系数向量B和A
y1t=filter(B,A,st);
%低通滤波器设计与实现绘图部分
subplot(2,1,1);