南邮DSP实验报告.docx
- 文档编号:23482032
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:65
- 大小:863.24KB
南邮DSP实验报告.docx
《南邮DSP实验报告.docx》由会员分享,可在线阅读,更多相关《南邮DSP实验报告.docx(65页珍藏版)》请在冰豆网上搜索。
南邮DSP实验报告
南京邮电大学
实验报告
实验名称:
离散时间信号与系统的时、频域表示
离散傅立叶变换和z变换
数字滤波器的频域分析和实现
数字滤波器的设计
课程名称:
数字信号处理A(双语)
班级学号:
B12020
姓名:
开课时间:
2014/2015学年第二学期
实验一
实验名称:
离散时间信号与系统的时、频域表示
实验目的:
熟悉Matlab基本命令和信号处理工具箱,加深理解和掌握离散时间信号与系统的时、频域表示及简单应用。
实验任务:
在Matlab环境中,按照要求产生序列,对序列进行基本运算;对简单离散时间系统进行仿真,计算线性时不变(LTI)系统的冲激响应和卷积输出;计算和观察序列的离散时间傅立叶变换(DTFT)幅度谱和相位谱。
实验内容:
基本序列产生和运算:
Q1.1~1.3,Q1.23,Q1.30~1.33
离散时间系统仿真:
Q2.1~2.3
LTI系统:
Q2.19,Q2.21,Q2.28
DTFT:
Q3.1,Q3.2,Q3.4
实验过程描述:
Q1.1
程序:
clf
n=-10:
20;
u=[zeros(1,10)1zeros(1,20)];
stem(n,u);
xlabel('时间序列n');ylabel('振幅');
title('单位样本序列');
axis([-102001.2]);
显示的波形如下:
Q1.2
clf:
清除图形;
axis:
设置坐标轴范围、可读比例等;
title:
给图形加标题;
xlable:
给x轴加标注;
ylable:
给y轴加标注。
Q1.3
程序:
clf
n=-10:
20;
u=[zeros(1,10)1zeros(1,20)];
stem(n+11,u);
xlabel('时间序列n');ylabel('振幅');
title('单位样本序列');
axis([03201.2]);
显示的波形如下:
Q1.23
程序:
n=0:
50;
>>f=0.08;
>>phase=pi/2;
>>A=2.5;
>>arg=2*pi*f*n-phase;
>>x=A*cos(arg);
>>clf;
>>stem(n,x);
>>axis([050-33]);
>>grid;
>>title('正弦序列');
>>xlabel('时间序列n');
>>ylabel('振幅');
>>axis;
>>
显示的波形如下:
Q1.30
加性噪声d[n]是均匀分布在-0.4和+0.4之间的随机序列
Q1.31
不能。
因为d是列向量,s是行向量
Q1.32
x1是x的延时,x2和x相等,x3超前于x
Q1.33
legend用于产生图例说明
Q1.30
未污染的信号s[n]是什么样的形式?
加性噪声d[n]是什么样的形式?
答:
未污染的信号s[n]:
是线性增加伴随着实指数缓慢衰减的图像
加性噪声d[n]:
在-0.4和+0.4间均匀分布的自由序列
Q1.31
使用语句s=s+d能产生被噪声污染的信号吗?
若不能,为什么?
答:
不能,因为-d是一个列向量,而s是一个行向量,需要在添加它们之前调换其中一个向量。
Q1.32
信号x1、x2、x3与x之间的关系是什么?
答:
这三个信号x1,x2,和x3是x扩展的版本,左右边各一个附加的采样。
x1是x延迟的版本,一个样本转移到右边并且左边补零。
信号x2等于x,左右补0来填充多余的长度。
最后,x3是x时间提前的版本,转移一个样本到右边,左边补0。
Q1.33
legend的作用是什么
答:
thelegend命令的目的——创建图表的说明。
在P1_5,信号绘制使用不同的颜色和线类型;说明哪种颜色信息和行类型与每个信号相关联。
Q2.1
程序:
clf;
>>n=0:
100;
>>s1=cos(2*pi*0.05*n);
>>s2=cos(2*pi*0.47*n);
>>x=s1+s2;
>>M=input('滤波器所需的长度=');
滤波器所需的长度=2
>>num=ones(1,M);
>>y=filter(num,1,x)/M;
>>subplot(2,2,1);
>>plot(n,s1);
>>axis([0,100,-2,2]);
>>xlabel('时间序列n');ylabel('振幅');
>>title('信号#1');
>>subplot(2,2,2);
>>plot(n,s2);
>>axis([0,100,-2,2]);
>>xlabel('时间序列n');ylabel('振幅');
title('信号#2');
>>subplot(2,2,3);
plot(n,x);
axis([0,100,-2,2]);
xlabel('时间序列n');ylabel('振幅');
title('输入信号');
>>subplot(2,2,4);
plot(n,y);
axis([0,100,-2,2]);
xlabel('时间序列n');ylabel('振幅');
title('输出信号');
>>axis;
显示的波形如下:
Q2.2
程序:
n=0:
100;
s1=cos(2*pi*0.05*n);
s2=cos(2*pi*0.47*n);
x=s1+s2;
M=input('滤波器所需长度=');
num=(-1).^[0:
M-1];
y=filter(num,1,x)/M;
clf;
subplot(2,2,1);
plot(n,s1);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
title('信号#1');
subplot(2,2,2);
plot(n,s2);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
title('信号#2');
subplot(2,2,3);
plot(n,x);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
title('输入信号');
subplot(2,2,4);
plot(n,y);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅');
title('输出信号');
axis;
显示的波形如下:
改变LTI系统对输入的影响是,系统现在是一个高通滤波器。
它通过高频输入组件s2来替代低频输入组件s1.
Q2.3
当M取15时,图像如下
Q2.19
程序:
clf;
N=40;
num=[2.24032.49082.2403];
den=[1-0.40.75];
y=impz(num,den,N);
stem(y);
xlabel('时间序号n');ylabel('振幅');
title('冲激响应');grid;
显示的波形如下:
Q2.21
程序:
clf;
N=40;
num=[0.9-0.450.350.002];
den=[1.00.71-0.46-0.62];
x=[1zeros(1,N-1)];
y=filter(num,den,x);
stem(y);
xlabel('时间序号n');ylabel('振幅');
title('冲激响应');grid;
显示的波形如下:
Q2.28
程序:
clf;
h=[321-210-403];
x=[1-23-4321];
y=conv(h,x);
n=0:
14;
subplot(2,1,1);
stem(n,y);
xlabel('时间序号n');ylabel('振幅');
title('用卷积得到的输出');grid;
x1=[xzeros(1,8)];
y1=filter(h,1,x1);
subplot(2,1,2);
stem(n,y1);
xlabel('时间序号n');ylabel('振幅');
title('用滤波得到的输出');grid;
显示的波形如下:
Q3.1
答:
计算离散时间傅里叶变换的原始序列为:
pause命令作用:
不加参数,直接用pause的话,就是程序暂停,直至用户按任意一个按键。
如果加参数,例如pause
(1),是程序暂停1秒。
Q3.2
程序:
clf;
w=-4*pi:
8*pi/511:
4*pi;
num=[21];den=[1-0.6];
h=freqz(num,den,w);
subplot(2,1,1)
plot(w/pi,real(h));grid
title('H(e^{j\omega})的实部')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,1,2)
plot(w/pi,imag(h));grid
title('H(e^{j\omega})的虚部')
xlabel('\omega/\pi');
ylabel('振幅');
pause
subplot(2,1,1)
plot(w/pi,abs(h));grid
title('|H(e^{j\omega})|的幅度谱')
xlabel('\omega/\pi');
ylabel('Amplitude');
subplot(2,1,2)
plot(w/pi,angle(h));grid
title('arg[H(e^{j\omega})]的相位谱')
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
显示的波形如下:
是w的周期
周期是2π
实部是2π为周期是偶对称的;
虚部是2π为周期是奇对称的;
幅度是2π为周期是偶对称的;
相位是2π为周期是奇对称的。
Q3.4
程序:
clf;
w=-4*pi:
8*pi/511:
4*pi;
num=[1357911131517];
den=1;
h=freqz(num,den,w);
subplot(2,1,1)
plot(w/pi,real(h));grid
title('H(e^{j\omega})的实部')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,1,2)
plot(w/pi,imag(h));grid
title('H(e^{j\omega})的虚部')
xlabel('\omega/\pi');
ylabel('振幅');
pause
subplot(2,1,1)
plot(w/pi,abs(h));grid
title('|H(e^{j\omega})|幅度谱')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,1,2)
plot(w/pi,angle(h));grid
title('arg[H(e^{j\omega})]的相位谱')
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
显示的波形如下:
实验参考书:
S.K.Mitra(著),孙洪(译).数字信号处理实验指导书(MATLAB版).北京:
电子工业出版社,2005
实验二
实验名称:
离散傅立叶变换和z变换
实验目的:
掌握离散傅立叶变换(DFT)及逆变换(IDFT)、z变换及逆变换的计算和分析。
实验任务:
完成DFT和IDFT的计算及常用性质的验证,利用DFT实现线性卷积,实现z变换的零极点分析,求有理逆z变换。
实验内容:
DFT和IDFT计算:
Q3.23~3.24(Q3.24可选做)
DFT的性质:
Q3.26~3.29,Q3.30~3.35,Q3.36(Q3.37可选),Q3.38(Q3.39可选),Q3.40
z变换分析:
Q3.46~3.48
逆z变换:
Q3.50
实验过程描述:
Q3.23
程序:
clf;
N=200;
L=256;
nn=[0:
N-1];
kk=[0:
L-1];
xR=[0.1*(1:
100)zeros(1,N-100)];
xI=[zeros(1,N)];
x=xR+i*xI;
XF=fft(x,L);
subplot(3,2,1);grid;
plot(nn,xR);grid;
title('实\{x[n]\}');
xlabel('时间序号n');
ylabel('振幅');
subplot(3,2,2);
plot(nn,xI);grid;
title('虚\{x[n]\}');
xlabel('时间序号n');
ylabel('振幅');
subplot(3,2,3);
plot(kk,real(XF));grid;
title('实\{X[k]\}');
xlabel('频率指数k');
ylabel('振幅');
subplot(3,2,4);
plot(kk,imag(XF));grid;
title('虚\{X[k]\}');
xlabel('频率指数k');
ylabel('振幅');
xx=ifft(XF,L);
subplot(3,2,5);
plot(kk,real(xx));grid;
title('IDFT\{X[k]\}实部');
xlabel('时间序号n');
ylabel('振幅');
subplot(3,2,6);
plot(kk,imag(xx));grid;
title('IDFT\{X[k]\}虚部');
xlabel('时间序号n');
ylabel('振幅');
显示的波形如下:
Q3.26
在函数circshift中,命令rem的作用是什么?
答:
R=rem(X,Y),求余数函数,X,Y应该为正数
Q3.27
解释函数circshift怎样实现圆周移位运算。
答:
:
输入序列x是循环左移M位。
如果M>0,那么circshift删除左边的元素向量x,并且附加他们到剩下的元素右边来获得循环转移序列。
如果如果M<0,然后circshift首先补充的x的长度,最右边的长度(x)-m样品从x中移走并且附加在剩下的M样本右边来得到循环转移序列。
Q3.28
在函数circshift中,运算符~=的作用是什么?
答:
如果A和B不相等返回值1
如果A和B相等返回值0
Q3.29
解释函数circonv怎样实现圆周卷积运算。
答:
函数circonv操作如下:
输入的是两个相等长度为L的两个向量x1和x2.,为了理解circonv是如何工作的,从x2的周期延拓角度来考虑很有用。
让x2p作为x2的无限长的周期延拓。
从概念上讲,常规时间反转x2p并且让x2tr通过x2p的时间反转等于元素1。
输出向量y元素1到L是通过x1和一个长度L的通过循环右移一个时间反转序列x2tr得到的序列sh之间的内积来获得的。
对于输出样例y[n],1≤n≤L、正确的循环移位是n-1点。
Q3.30
程序:
clf;
M=6;
a=[0123456789];
b=circshift(a,M);
L=length(a)-1;
n=0:
L;
subplot(2,1,1);
stem(n,a);axis([0,L,min(a),max(a)]);
title('原始序列');
xlabel('时间序号n');
ylabel('a[n]');
subplot(2,1,2);
stem(n,b);axis([0,L,min(a),max(a)]);
title(['通过循环位移得到的序列',num2str(M),'样本']);
xlabel('时间序号n');
ylabel('b[n]');
决定时移的数量的部分是M
如果时移的数量大于序列长度,实际实现的循环时移是rem(M,length(a))点左移,相当于循环移动的M点(不止一次),也相当于通过M点周期延拓的左移。
Q3.31
上题程序结果图:
序列的长度是10,并且M=12。
这可能被解释为一个12点的循环左移(不止一次),作为一个2点循环左移,或者作为一个2的线性左移,或者序列的12点周期延拓。
Q3.32
程序:
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));grid;
title('原序列的DFT的幅度');
xlabel('频率序号k');
ylabel('|X[k]|');
subplot(2,2,2);
stem(n,abs(YF));grid;
title('圆周位移后序列的DFT幅度');
xlabel('频率序号k');
ylabel('|Y[k]|');
subplot(2,2,3);
stem(n,angle(XF));grid;
title('原序列的DFT的幅度');
xlabel('频率序号k');
ylabel('arg(X[k])');
subplot(2,2,4);
stem(n,angle(YF));grid;
title('圆周位移后序列的DFT相位');
xlabel('频率序号k');
ylabel('arg(Y[k])');
Q3.33
上题程序运行结果图:
序列的长度N=8并且时移是五个样品提前转移到左边。
相位是
。
这是一个重大转变,大大增加了相位谱的斜率。
而最初的相位函数只有一个分支切割,在时移信号的相位谱有五个分支切割。
Q3.34
上述程序修改M=2图像图如下:
上述程序修改M=-2结果图如下:
Q3.35
序列为长度14,上述程序结果图如下:
序列长度为16,上述程序结果图如下:
Q3.36
程序:
g1=[123456];g2=[1-233-21];
ycir=cconv(g1,g2);
disp('循环卷积图像=');disp(ycir)
G1=fft(g1);G2=fft(g2);
yc=real(ifft(G1.*G2));
disp('DFT变换乘积的IDFT变换的图像=');disp(yc)
结果:
循环卷积图像=
Columns1through10
1.000002.00007.000010.000014.000011.000028.000012.0000-7.0000
Column11
6.0000
DFT变换乘积的IDFT变换的结果=
12281401614
Q3.38
程序:
g1=[12345];g2=[22011];
g1e=[g1zeros(1,length(g2)-1)];
g2e=[g2zeros(1,length(g1)-1)];
ylin=cconv(g1e,g2e);
disp('通过圆周卷积的线性卷积=');disp(ylin);
y=conv(g1,g2);
disp('直接线性卷积=');disp(y)
结果:
通过圆周卷积的线性卷积=
Columns1through10
2.00006.000010.000015.000021.000015.00007.00009.00005.00000.0000
Columns11through17
0.00000.00000.0000000.0000-0.0000
直接线性卷积=
2610152115795
观察可得:
零填充适当的长度确实可以实现用循环卷积实现线性卷积。
Q3.40
程序
g1=[12345];
g2=[22011];
g1e=[g1zeros(1,length(g2)-1)];
g2e=[g2zeros(1,length(g1)-1)];
G1EF=fft(g1e);
G2EF=fft(g2e);
ylin=real(ifft(G1EF.*G2EF));
disp('通过DFT的线性卷积=');disp(ylin);
结果:
通过DFT的线性卷积=
2.00006.000010.000015.000021.000015.00007.00009.00005.0000
Q3.46
程序:
clf;
w=0:
pi/51:
pi;
num=[25953];den=[545211];
h=freqz(num,den,w);
subplot(2,1,1)
plot(w/pi,real(h));grid
title('H(e^{j\omega})的实部')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,1,2)
plot(w/pi,imag(h));grid
title('H(e^{j\omega})的虚部')
xlabel('\omega/\pi');
ylabel('振幅');
pause
subplot(2,1,1)
plot(w/pi,abs(h));grid
title('|H(e^{j\omega})|的幅度谱')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,1,2)
plot(w/pi,angle(h));grid
title('arg[H(e^{j\omega})]的相位谱')
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
图像:
Q3.47
程序:
clf;
num=[25953];
den=[545211];
[zpk]=tf2zpk(num,den);
disp('零点:
');
disp(z);
disp('极点:
');
disp(p);
input('按
[sosk]=zp2sos(z,p,k)
in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南邮 DSP 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)