第一题.docx
《第一题.docx》由会员分享,可在线阅读,更多相关《第一题.docx(29页珍藏版)》请在冰豆网上搜索。
第一题
数字信号处理实验报告
班级:
测控0901
学号:
3090302003
姓名:
张瑞芳
练习一
第一题
clear
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,'.');
title('A');
subplot(2,4,2)
stem(B,'.');
title('B');
subplot(2,4,3)
stem(C,'.');
title('C');
subplot(2,4,4)
stem(D,'.');
title('D');
subplot(2,4,5)
stem(E,'.');
title('E');
subplot(2,4,6)
stem(F,'.');
title('F');
subplot(2,4,7)
stem(G,'.')
title('G');
第二题
clearall;closeall;
n=[0:
15]
x1=0.8.^n
subplot(2,3,1)
stem(n,x1,'.')
x2=exp((0.2+3*i).*n)
subplot(2,3,2)
stem(n,x2,'.')
subplot(2,3,3)
x21=abs(x2)
stem(n,x21,'.')
subplot(2,3,4)
x22=angle(x2)
stem(n,x22,'.')
x3=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi)
subplot(2,3,5)
stem(n,x3,'.')
第三题
(1)clc;clear;
t=0:
0.01:
10;
x=sin(2*pi*t);
plot(t,x);
xlabel('t');
ylabel('x(t)');t=t
(2)t=0:
0.001:
4
x=cos(100*pi*t).*sin(pi*t);
plot(t,x);
xlabel('t');
ylabel('x(t)');
第四题
functionstepshift(n0,n1,n2)
n0=input('请输入位移值:
n0=');
n1=input('请输入序列起点值:
n1=');
n2=input('请输入序列终点值:
n2=');
if((n0n2)|(n1>n2))error('n0,n1,n2的关系必须满足n1else
n=n1:
n2;
u=[(n-n0)>=0];
stem(n,u,'.');
title('产生单位阶跃序列');
xlabel('n'),ylabel('u(n-n0)');
axis([n1,n2,0,1]);
end
实验一
1.实验目的
(1)掌握求系统响应的方法。
(2)掌握时域离散系统的时域特性。
(3)分析、观察及检验系统的稳定性。
2.实验原理与方法
在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。
已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。
在计算机上适合用递推法求差分方程的解,最简单的方法是采用MATLAB语言的工具箱函数filter函数。
也可以用MATLAB语言的工具箱函数conv函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。
系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。
重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。
系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。
或者系统的单位脉冲响应满足绝对可和的条件。
系统的稳定性由其差分方程的系数决定。
实际中检查系统是否稳定,不可能检查系统对所有有界的输入信号,输出是否都是有界输出,或者检查系统的单位脉冲响应满足绝对可和的条件。
可行的方法是在系统的输入端加入单位阶跃序列,如果系统的输出趋近一个常数(包括零),就可以断定系统是稳定的[19]。
系统的稳态输出是指当
时,系统的输出。
如果系统稳定,信号加入系统后,系统输出的开始一段称为暂态效应,随n的加大,幅度趋于稳定,达到稳态输出。
注意在以下实验中均假设系统的初始状态为零。
3程序及波形
第一题
clearall
clc
closeall;
n=0:
20;
A=[1-0.9];
B=[0.050.05];
x1=[11111111]
x2=((n>=0)==1);
x3=[1zeros(1,10)];
subplot(3,2,1)
stem(0:
(length(x1)-1),x1,'.')
y1=filter(B,A,x1);
subplot(3,2,2)
stem(0:
(length(y1)-1),y1,'.')
subplot(3,2,3)
stem(0:
(length(x2)-1),x2,'.')
y2=filter(B,A,x2)
subplot(3,2,4)
stem(0:
(length(y2)-1),y2,'.')
subplot(3,2,5)
stem(0:
(length(x3)-1),x3,'.')
h=filter(B,A,x3);
subplot(3,2,6)
stem(0:
(length(h)-1),h,'.')
第二题
closeall
clearall
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,'.')
第三题
clearall;
closeall;
A=[1-1.82370.9801]
B=[1/100.490-1/100.49]
n=0:
100
x=(n>=0);
y1=filter(B,A,x)
subplot(2,2,1)
stem(0:
(length(x)-1),x,'.')
subplot(2,2,2)
stem(0:
(length(y1)-1),y1,'.')
x2=sin(0.014*n)+sin(0.4*n)
y2=filter(B,A,x2)
subplot(2,2,3)
stem(0:
(length(x2)-1),x2,'.')
subplot(2,2,4)
stem(0:
(length(y2)-1),y2,'.')
由图可见,系统对
的响应逐渐衰减到零,所以系统稳定,系统对
的稳态响应近似为正弦序列
,这一结论验证了该系统的谐振频率是0.4rad。
4简答思考题
(1)如果输入信号为无限长序列,系统的单位脉冲响应是有限长序列,可否用线性卷积法求系统的响应。
①对输入信号序列分段;②求单位脉冲响应h(n)与各段的卷积;③将各段卷积结果相加。
具体实现方法有第三章介绍的重叠相加法和重叠保留法。
(2)如果信号经过低通滤波器,把信号的高频分量滤掉,时域信号的剧烈变化将被平滑,由实验内容
(1)结果图10.1.1(a)、(b)和(c)可见,经过系统低通滤波使输入信号
、
和
的阶跃变化变得缓慢上升与下降。
实验二
1实验目的
时域采样理论与频域采样理论是数字信号处理中的重要理论。
要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。
2实验程序及图形
第一题
clearall;
closeall;
Tp=0.064
Fs1=1000
Fs2=300
Fs3=200
Ts1=1/Fs1
Ts2=1/Fs2
Ts3=1/Fs3
N1=Fs1*Tp
n1=0:
(N1-1)
N2=Fs2*Tp
n2=0:
(N2-1)
N3=Fs3*Tp
n3=0:
(N3-1)
f1=(0:
N1-1)/Tp
f2=(0:
N2-1)/Tp
f3=(0:
N3-1)/Tp
x1=444.128*exp(-50*sqrt
(2)*pi*n1/Fs1).*sin(50*sqrt
(2)*pi*n1/Fs1);
x2=444.128*exp(-50*sqrt
(2)*pi*n2/Fs2).*sin(50*sqrt
(2)*pi*n2/Fs2);
x3=444.128*exp(-50*sqrt
(2)*pi*n2/Fs3).*sin(50*sqrt
(2)*pi*n2/Fs3);
subplot(321)
stem(x1,'.')
xlabel('n')
ylabel('xa(nT)')
title('Fs=1000Hz')
y1=fft(x1,N1)
z1=Ts1*abs(y1)
subplot(322)
plot(f1,z1)
xlabel('f')
ylabel('幅度')
title('T*fft[xa(nT)]')
subplot(323)
stem(x2,'.')
xlabel('n')
ylabel('xa(nT)')
title('Fs=300Hz')
y2=fft(x2,N2)
z2=Ts2*abs(y2)
subplot(324)
plot(f2,z2)
xlabel('f')
ylabel('幅度')
title('T*fft[xa(nT)]')
subplot(325)
stem(x3,'.')
xlabel('n')
ylabel('xa(nT)')
title('Fs=200Hz')
y3=fft(x3,N3)
z3=Ts3*abs(y3)
subplot(326)
plot(f3,z3)
xlabel('f')
ylabel('幅度')
title('T*fft[xa(nT)]')
时域采样理论的验证程序运行结果如图所示。
由图可见,采样序列的频谱的确是以采样频率为周期对模拟信号频谱的周期延拓。
当采样频率为1000Hz时频谱混叠很小;当采样频率为300Hz时,在折叠频率150Hz附近频谱混叠很严重;当采样频率为200Hz时,在折叠频率110Hz附近频谱混叠更很严重。
第二题
clearall;
closeall;
M=27;
N=32;
n=0:
M;
xa=0:
(M+1)/2;
xb=ceil(M/2)-1:
-1:
1;
xn=[xa,xb];
Xk=abs(fft(xn,512))
X1=abs(Xk)
X32k=fft(xn,32)
X2=abs(X32k)
x32n=ifft(X32k)
X16k=X32k(1:
2:
N)
X3=abs(X16k)
x16n=ifft(X16k,N/2)
subplot(231)
stem(xn,'.')
subplot(232)
stem(x32n,'.')
axis([0,40,0,15])
subplot(233)
stem(x16n,'.')
subplot(234)
plot((0:
511),X1)
axis([0,255,0,1.2*max(X1)])
subplot(235)
stem(X2,'.')
axis([0,8,0,1.2*max(X2)])
subplot(236)
stem(X3,'.')
axis([0,15,1.2*max(X30)])
时域采样理论的验证程序运行结果如图所示,该图验证了频域采样理论和频域采样定理。
对信号x(n)的频谱函数X(ejω)在[0,2π]上等间隔采样N=16时,N点IDFT[
]得到的序列正是原序列x(n)以16为周期进行周期延拓后的主值区序列:
由于N与x(n)不相同,如图图10.3.3(c)和(d)所示。
当N=32时,如图图10.3.3(c)和(d)所示,由于N>M,频域采样定理,所以不存在时域混叠失真,因此。
与x(n)相同。
3简答思考题
先对原序列x(n)以N为周期进行周期延拓后取主值区序列,
再计算N点DFT则得到N点频域采样:
实验三
1.实验目的
学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。
2.实验原理
用FFT对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行谱分析的信号是模拟信号和时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D和分析误差。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是
,因此要求
。
可以根据此式选择FFT的变换区间N。
误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。
3.实验程序图形及分析
第一题
clearall;closeall;
n=0:
7
x1=(n>=0)-((n-4)>=0)
X8k1=fft(x1,8)
subplot(321)
stem(abs(X8k1),'.')
title('8点DFT[X1]');
xlabel('w/pi');
ylabel('幅度');
X16k1=fft(x1,16)
subplot(322)
stem(abs(X16k1),'.')
title('16点DFT[X1]');
xlabel('w/pi');
ylabel('幅度');
x2=[12344321]
X8k2=fft(x2,8)
subplot(323)
stem(abs(X8k2),'.')
title('8点DFT[X2]');
xlabel('w/pi');
ylabel('幅度');
X16k2=fft(x2,16)
subplot(324)
stem(abs(X16k2),'.')
title('16点DFT[X2]');
xlabel('w/pi');
ylabel('幅度');
x3=[43211234]
X8k3=fft(x3,8)
subplot(325)
stem(abs(X8k3),'.')
title('8点DFT[X3]');
xlabel('w/pi');
ylabel('幅度');
X16k3=fft(x3,16)
subplot(326)
stem(abs(X16k3),'.')
title('16点DFT[X3]');
xlabel('w/pi');
ylabel('幅度');
图形说明
的8点DFT和16点DFT分别是
的频谱函数的8点和16点采样;
因为
,所以,
与
的8点DFT的模相等,但是,当N=16时,
与
不满足循环移位关系,所以图形的模不同。
第二题
clearall;
closeall;
n=0:
20
x4=cos((pi/4)*n)
X8k4=fft(x4,8)
subplot(221)
stem(abs(X8k4),'.')
title('8点x4(n)')
X16k4=fft(x4,16)
subplot(222)
stem(abs(X16k4),'.')
title('16点x4(n)')
x5=cos((pi/4)*n)+cos((pi/8)*n)
X8k5=fft(x5,8)
subplot(223)
stem(abs(X8k5),'.')
title('8点x5(n)')
X16k5=fft(x5,16)
subplot(224)
stem(abs(X16k5),'.')
title('16点x5(n)')
的周期为8,所以N=8和N=16均是其周期的整数倍,得到正确的单一频率正弦波的频谱,仅在0.25π处有1根单一谱线。
的周期为16,所以N=8不是其周期的整数倍,得到的频谱不正确。
N=16是其一个周期,得到正确的频谱,仅在0.25π和0.125π处有2根单一谱线。
第三题
clearall;closeall;
Fs=64;T=1/Fs;
N1=16;n1=0:
(N1-1);
N2=32;n2=0:
(N2-1);
N3=64;n3=0:
(N3-1)
x1=cos((8*pi*n1*T))+cos((16*pi*n1*T))+cos((20*pi*n1*T))
y1=fft(x1)
y1=fftshift(y1);
subplot(311)
stem(abs(y1),'.')
title('16点DFT[X6(nT)]');
xlabel('f/Hz');
ylabel('幅度');
x2=cos((8*pi*n2*T))+cos((16*pi*n2*T))+cos((20*pi*n2*T))
y2=fft(x2)
y2=fftshift(y2);
subplot(312)
stem(abs(y2),'.')
title('32点DFT[X6(nT)]');
xlabel('f/Hz');
ylabel('幅度');
x3=cos((8*pi*n3*T))+cos((16*pi*n3*T))+cos((20*pi*n3*T))
y3=fft(x3)
y3=fftshift(y3);
subplot(313)
stem(abs(y3),'.')
title('64点DFT[X6(nT)]');
xlabel('f/Hz');
ylabel('幅度');
对模拟周期信号谱分析
有3个频率成分,
。
所以
的周期为0.5s。
采样频率
。
变换区间N=16时,观察时间Tp=16T=0.25s,不是
的整数倍周期,所以所得频谱不正确,如图(6a)所示。
变换区间N=32,64时,观察时间Tp=0.5s,1s,是
的整数周期,所以所得频谱正确,如图(6b)和(6c)所示。
图中3根谱线正好位于
处。
变换区间N=64时频谱幅度是变换区间N=32时2倍,这种结果正好验证了用DFT对中期序列谱分析的理论。
实验四
1.实验目的:
(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法;
(2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
(3)掌握IIR数字滤波器的MATLAB实现方法。
(4)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。
2.实验原理
设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。
基本设计过程是:
①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。
MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。
第六章介绍的滤波器设计函数butter、cheby1、cheby2和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。
本实验要求读者调用如上函数直接设计IIR数字滤波器。
本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。
3.实验程序及图形
第一题
clearall;clearall;
st=mstg;N=800;Fs=10000;T=1/Fs;Tp=N.*T;
t=0:
T:
(N-1).*T;k=0:
N-1;f=k/Tp;
fc1=Fs/10;fm1=fc1/10;
fc2=Fs/20;fm2=fc2/10;
fc3=Fs/40;fm3=fc3/10;
xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);
xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);
xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);
st=xt1+xt2+xt3;
fxt=fft(st,N);
subplot(211);
plot(t,st);grid;title('(a)s(t)的波形')
xlabel('t/s');ylabel('s(t)');
axis([0,Tp/8,min(st),max(st)]);
subplot(212)
stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的频谱')
axis([0,Fs/5,0,1.2]);
xlabel('f/Hz');ylabel('幅度');
第二题
clearall;closeall;
Fs=10000;T=1/Fs;N=800;
xt=mstg;
fp1=280;fs1=450;Rp=0.1;As=60;
wp1=2.*fp1/Fs;ws1=2.*fs1/Fs;
[N1,wpo1]=ellipord(wp1,ws1,Rp,As);
[B1,A1]=ellip(N1,Rp,As,wpo1);
y1=filter(B1,A1,xt);
[H1,W1]=freqz(B1,A1,1000);figure
(1)
subplot(211);
plot(W1/pi,20*log10(abs(H1)/max(abs(H1))));gridon;
title('低通')
axis([0,1,-80,5]);
subplot(212);plot(0:
length(y1)-1,y1);gridon;
t1=(0:
length(y1)-1)
axis([0,t1(end),1.2*min(y1),1.2*max(y1)]);
fp2=890;fs2=600;
wp2=2.*fp2/Fs;ws2=2.*fs2/Fs;
[N2,wpo2]=ellipord(wp2,ws2,Rp,As);
[B2,A2]=ellip(N1,Rp,As,wpo2,'high');
y2=filter(B2,A2,xt);
[H2,W2]=freqz(B2,A2,1000);figure
(2)
subplot(211);
plot(W2/pi,20*log10(abs(H2)/max(abs(H2))));gridon;
title('高通')
axis([0,1,-80,5]);