DSP实验报告B13011025讲解.docx
- 文档编号:8923270
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:74
- 大小:814.35KB
DSP实验报告B13011025讲解.docx
《DSP实验报告B13011025讲解.docx》由会员分享,可在线阅读,更多相关《DSP实验报告B13011025讲解.docx(74页珍藏版)》请在冰豆网上搜索。
DSP实验报告B13011025讲解
南京邮电大学
实验报告
实验名称:
离散时间信号与系统的时、频域表示
离散傅立叶变换和z变换
数字滤波器的频域分析和实现
数字滤波器的设计
课程名称数字信号处理A(双语)
班级学号B13011025
姓名陈志豪
开课时间 2015/2016学年,第1学期
实验名称:
离散时间信号与系统的时、频域表示
实验目的和任务:
熟悉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运行程序P1.1,以产生单位样本序列u[n]并显示它。
clf;
n=-10:
20;
u=[zeros(1,10)1zeros(1,20)];
stem(n,u);
xlabel('Timeindexn');
ylabel('Amplitude');
title('UnitSampleSequence');
axis([-102001.2]);
Q1.2命令clf,axis,title,xlabel和ylabel命令的作用是什么?
答:
clf命令的作用:
清除图形窗口上的图形;
axis命令的作用:
设置坐标轴的范围和显示方式;
title命令的作用:
给当前图片命名;
xlabel命令的作用:
添加x坐标标注;
ylabelc命令的作用:
添加y坐标标注;
Q1.3修改程序P1.1,以产生带有延时11个样本的延迟单位样本序列ud[n]。
运行修改的程序并显示产生的序列。
clf;
n=-10:
20;
u=[zeros(1,21)1zeros(1,9)];
stem(n,u);
xlabel('Timeindexn');
ylabel('Amplitude');
title('UnitSampleSequence');
axis([-102001.2]);
Q1.23修改上述程序,以产生长度为50、频率为0.08、振幅为2.5、相移为90度的一个正弦序列并显示它。
该序列的周期是多少?
n=0:
50;
f=0.08;
phase=90;
A=2.5;
arg=2*pi*f*n-phase;
x=A*cos(arg);
clf;
stem(n,x);
axis([050-33]);
grid;
title('SinusoidalSequence');
xlabel('Timeindexn');
ylabel('Amplitude');
axis;
答:
周期为:
T=
=
=
=22.5。
Q1.30未污染的信号s[n]是什么样的形式?
加性噪声d[n]是什么样的形式?
答:
未污染的信号:
s[n]=
×
。
加性噪声d[n]是均匀分布在-04到+0.4之间的随机序列。
Q1.31使用语句x=s+d能产生被噪声污染的信号吗?
若不能,为什么?
答:
不能,因为d是列向量,s是行向量。
Q1.32信号x1,x2和x3与信号x之间的关系是什么?
答:
X1是x的延时一个单位,x2和x相等,x3超前于x一个单位。
Q1.33legend命令的作用是什么?
答:
产生图例说明。
Q2.1对M=2,运行上述程序,生成输入x[n]=s1[n]+s2[n]的输出信号。
输出x[n]的哪个分量被该离散时间系统抑制?
答:
输入x[n]被该离散时间系统抑制的分量为Signal2的高频分量。
Q2.2若线性时不变系统由y[n]=0.5(x[n]+x[n–1])变成y[n]=0.5(x[n]–x[n–1]),对输入x[n]=s1[n]+s2[n]的影响是什么?
n=0:
100;
s1=cos(2*pi*0.05*n);
s2=cos(2*pi*0.47*n);x=s1+s2;
M=input('Desiredlengthofthefilter=');
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('Timeindexn');
ylabel('Amplitude');
title('Signal#1');
subplot(2,2,2);
plot(n,s2);
axis([0,100,-2,2]);
xlabel('Timeindexn');
ylabel('Amplitude');
title('Signal#2');
subplot(2,2,3);
plot(n,x);
axis([0,100,-2,2]);
xlabel('Timeindexn');
ylabel('Amplitude');
title('InputSignal');
subplot(2,2,4);
plot(n,y);
axis([0,100,-2,2]);
xlabel('Timeindexn');
ylabel('Amplitude');
title('OutputSignal');
axis;
答:
对于输入的影响是-该系统是一个高通滤波器,它通过高频率的输入分量S2,而不是低频的输入分量S1。
Q2.3对滤波器长度M和正弦信号s1[n]和s2[n]的频率取其他值,运行程序P2.1,算出结果。
M=3,f1=0.1,f2=0.2
M=8,f1=0.25,f2=0.5
Q2.19运行P2_5,生成式(2.15)所给离散时间系统的冲激响应。
Q2.21利用filter命令编写一个MATLAB程序,生成式(2.17)给出的因果线性时不变系统的冲激响应,计算并画出前40个样本。
把你的结果和习题Q2.20中得到的结果相比较。
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('Timeindexn');
ylabel('Amplitude');
title('ImpulseResponse');
grid;
程序产生的40个样本如下所示:
Q2.28运行程序P2.7,对序列h[n]和x[n]求卷积,生成y[n],并用FIR滤波器h[n]对输入x[n]滤波,求得y1[n]。
y[n]和y1[n]有差别吗?
为什么要使用对x[n]补零后得到的x1[n]作为输入来产生y1[n]?
答:
y[n]和y1[n]的差别为-没有差别
将x[n]补零后得到x1[n]作为输入,产生y1[n]的原因是–对于长度N1和N2的两个序列,转化率返回得到的序列长度N1+N2-1。
与此相反,滤波器接收一个输入信号和系统规范,返回的结果是相同的长度作为输入信号。
因此,为了从转化率和滤波器得到直接比较的结果,有必要供应滤波器的输入已经填充为长度L(x)+L(h)-1。
Q3.1在程序P3.1中,计算离散时间傅里叶变换的原始序列是什么?
MATLAB命令pause的作用是什么?
答:
离散时间傅里叶变换的原始序列:
;
pause命令的作用:
暂停程序,直至用户按任意键,程序才可以开始。
Q3.2运行程序P3.1,求离散时间傅里叶变换的实部、虚部以及幅度和相位谱。
离散时间傅里叶变换是
的周期函数吗?
若是,周期是多少?
描述这四个图表示的对称性。
答:
DTFT是关于ω的周期函数么?
是周期函数
周期是-2π
四个图形的对称性为:
实部是偶对称,虚部是奇对称,幅度谱是偶对称相位谱是奇对称。
Q3.4修改程序P3_1重做Q3.2的程序如下:
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('RealpartofH(e^{j\omega})')
xlabel('\omega/\pi');
ylabel('Amplitude');
subplot(2,1,2)
plot(w/pi,imag(h));grid
title('ImaginarypartofH(e^{j\omega})')
xlabel('\omega/\pi');
ylabel('Amplitude');
pause
subplot(2,1,1)
plot(w/pi,abs(h));grid
title('MagnitudeSpectrum|H(e^{j\omega})|')
xlabel('\omega/\pi');
ylabel('Amplitude');
subplot(2,1,2)
plot(w/pi,angle(h));grid
title('PhaseSpectrumarg[H(e^{j\omega})]')
xlabel('\omega/\pi');
ylabel('Phaseinradians');
修改程序后的运行结果为:
答:
DTFT是关于ω的周期函数么?
是周期函数
周期是-2π
相位谱中跳变的原因是-对相位进行归一化。
实验名称:
离散傅立叶变换和z变换
实验目的和任务:
掌握离散傅立叶变换(DFT)及逆变换(IDFT)、z变换及逆变换的计算和分析。
利用Matlab语言,完成DFT和IDFT的计算及常用性质的验证,用DFT实现线性卷积,实现z变换的零极点分析,求有理逆z变换。
实验内容:
DFT和IDFT计算:
Q3.23~3.24
DFT的性质:
Q3.26~3.29,Q3.36,Q3.38,Q3.40
z变换分析:
Q3.46~3.48
逆z变换:
Q3.50
实验过程与结果分析:
…参见实验一格式…
Q3.23编写一个MATLAB程序,计算并画出长度为N的L点离散傅里叶变换X[k]的值,其中L≥N,然后计算并画出L点离散傅里叶逆变换X[k]。
对不同长度N和不同的离散傅里叶变换长度L,运行程序。
讨论你的结果。
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('Re\{x[n]\}');
xlabel('Timeindexn');
ylabel('Amplitude');
subplot(3,2,2);
plot(nn,xI);
grid;
title('Im\{x[n]\}');
xlabel('Timeindexn');
ylabel('Amplitude');
subplot(3,2,3);
plot(kk,real(XF));
grid;
title('Re\{x[n]\}');
xlabel('Frequencyindexk');
ylabel('Amplitude');
subplot(3,2,4);
plot(kk,imag(XF));
grid;
title('Im\{x[n]\}');
xlabel('Frequencyindexk');
ylabel('Amplitude');
xx=ifft(XF,L);
subplot(3,2,5);
plot(kk,real(xx));
grid;
title('RealpartofIDFT\{x[n]\}');
xlabel('Timeindexn');
ylabel('Amplitude');
subplot(3,2,6);
plot(kk,imag(xx));
grid;
title('ImagpartofIDFT\{x[n]\}');
xlabel('Timeindexn');
ylabel('Amplitude');
Q3.26在函数circshift中,命令rem的作用是什么?
答:
Rem(x,y)是用y对x求余数函数。
Q3.27解释函数circshift怎样实现圆周移位运算。
答:
在输入序列x由M的位置开始被循环移位,如果M>0,则circlshift删除从矢量x最左边开始的M个元素和它们附加在右侧的剩余元素,以获得循环移位序列。
如果M<0,则circlshift首先通过x的长度来弥补M,即序列x最右边的长度的M样本从x中删除和附加在其余的M个样本的右侧,以获得循环移位序列。
Q3.28在函数circonv中,运算符~=的作用是什么?
答:
“~=”表示不等于。
Q3.29解释函数circonv怎样实现圆周卷积运算。
答:
输入时两个长度都为L的向量x1和x2,它是非常有用的定期延长X2的函数。
让x2p成为x2延长无限长的周期的序列。
从概念上讲,在定点时间上通过时序交换后的x2p的长度L交换x2p序列和x2tr等于1的元素。
然后元素1至L的输出向量y是通过取x1和获得的长度为L的sh矢量之间的内积得到通过循环右移的时间反转向量x2tr。
对于输出样本Y[n]的1≤N≤L时,右循环移位的量为n-1个位置上。
Q3.30通过加入合适的注释语句和程序语句,修改程序P3.7,对程序生成的图形中的两个轴加标记。
哪一个参数决定时移量?
若时移量大于序列长度,将会发生什么?
functiony=circshift(x,M)
ifabs(M)>length(x)
M=rem(M,length(x));
end
ifM<0
M=M+length(x);
end
y=[x(M+1:
length(x))x(1:
M)];
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('OriginalSequence');
xlabel('timeindexk');
ylabel('a[n]');
subplot(2,1,2);
stem(n,b);axis([0,L,min(a),max(a)]);
title(['SequenceObtainedbyCircularlyShiftingby',num2str(M),'Samples']);
xlabel('timeindexn');
ylabel('b[n]');
D决定时移量,左移M位。
Q3.31运行修改后的程序并验证圆周时移运算。
修改后的程序如下:
Q3.32通过加入合适的注释语句和程序语句,修改程序P3.8,对程序生成的图形中的两个轴加标记。
时移量是多少?
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('MagnitudeofDFTofOriginalSequence');
xlabel('Frequencyindexk');ylabel('|X[k]|');
subplot(2,2,2)
stem(n,abs(YF));grid
title('MagnitudeofDFTofCircularlyShiftedSequence');
xlabel('Frequencyindexk');ylabel('|Y[k]|');
subplot(2,2,3)
stem(n,angle(XF));grid
title('PhaseofDFTofOriginalSequence');
xlabel('Frequencyindexk');ylabel('arg(X[k])');
subplot(2,2,4)
stem(n,angle(YF));grid
title('PhaseofDFTofCircularlyShiftedSequence');
xlabel('Frequencyindexk');ylabel('arg(Y[k])');
时移量是5。
Q3.33运行修改后的程序并验证离散傅里叶变换的圆周时移性质。
Q3.34选取两个不同的时移量,重做习题Q3.33。
(1)修改后的程序如下:
clf;
x=[0246810121416];
N=length(x)-1;n=0:
N;
y=circshift(x,3);
XF=fft(x);
YF=fft(y);
subplot(2,2,1)
stem(n,abs(XF));grid
title('MagnitudeofDFTofOriginalSequence');
xlabel('Frequencyindexk');ylabel('|X[k]|');
subplot(2,2,2)
stem(n,abs(YF));grid
title('MagnitudeofDFTofCircularlyShiftedSequence');
xlabel('Frequencyindexk');ylabel('|Y[k]|');
subplot(2,2,3)
stem(n,angle(XF));grid
title('PhaseofDFTofOriginalSequence');
xlabel('Frequencyindexk');ylabel('arg(X[k])');
subplot(2,2,4)
stem(n,angle(YF));grid
title('PhaseofDFTofCircularlyShiftedSequence');
xlabel('Frequencyindexk');ylabel('arg(Y[k])');
(2)修改后的程序如下:
clf;
x=[0246810121416];
N=length(x)-1;n=0:
N;
y=circshift(x,6);
XF=fft(x);
YF=fft(y);
subplot(2,2,1)
stem(n,abs(XF));grid
title('MagnitudeofDFTofOriginalSequence');
xlabel('Frequencyindexk');ylabel('|X[k]|');
subplot(2,2,2)
stem(n,abs(YF));grid
title('MagnitudeofDFTofCircularlyShiftedSequence');
xlabel('Frequencyindexk');ylabel('|Y[k]|');
subplot(2,2,3)
stem(n,angle(XF));grid
title('PhaseofDFTofOriginalSequence');
xlabel('Frequencyindexk');ylabel('arg(X[k])');
subplot(2,2,4)
stem(n,angle(YF));grid
title('PhaseofDFTofCircularlyShiftedSequence');
xlabel('Frequencyindexk');ylabel('arg(Y[k])');
Q3.35选取两个不同长度的序列,重做习题Q3.33。
修改后的程序如下:
clf;
x=[246810121416];
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('MagnitudeofDFTofOriginalSequence');
xlabel('Frequencyindexk');ylabel('|X[k]|');
subplot(2,2,2)
stem(n,abs(YF));grid
title('MagnitudeofDFTofCircularlyShiftedSequence');
xlabel('Frequencyindexk');ylabel('|Y[k]|');
subplot(2,2,3)
stem(n,angle(XF));grid
title('PhaseofDFTofOriginalSequence');
xlabel('Frequencyindexk');ylabel('arg(X[k])');
subplot(2,2,4)
stem(n,angle(YF));grid
title('PhaseofDFTofCircularlyShiftedSequence');
xlabel('Frequencyindexk');ylabel('arg(Y[k])');
修改后的程序如下:
clf;
x=[024681012];
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('MagnitudeofDFTofOriginalSequence');
xlabel('Frequencyindexk');ylabel('|X[k]|');
subplot(2,2,2)
stem(n,abs(YF));grid
title('MagnitudeofDFTo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 报告 B13011025 讲解