DSP实验报告5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP 第五次实验
1.实验目的:
(1)进一步熟悉matlab 实验环境和语言。
(2)掌握求序列圆周翻褶的MATLAB 方法。
(3)掌握求序列DFT 及IDFT 矩阵的MATLAB 方法。
(4)掌握用MATLAB 求解用圆周卷积计算线性卷积的时域的方法。 (5)掌握用FFT 计算有限长序列的线性卷积和线性相关的方法。
2.实验内容及总结: 1.圆周翻褶
【例3.27】 已知()[2,3,4,5,6],8X n N ==,求x(n)的8点圆周翻褶序列88(())()x n R n -。 代码:
clc;clear all
x=[2,3,4,5,6];N=8;
x=[x,zeros(1,N-length(x))];nx=0:N-1 y=x(mod(-nx,N)+1);
subplot(121),stem([0:N-1],x);title('原序列'); xlabel('n');ylabel('x(n)');grid;
subplot(122),stem([0:N-1],y);title('圆周翻褶序列'); xlabel('n');ylabel('x((n))8 R8(n)');grid;
结果:
总结:
对于圆周翻褶
(0),0
()(())()
(),11
N N
x n
y n x n R n
x N n n N
=
=-=⎨
-≤≤-MA TLAB可用
y=x(mode(-nx,N)+1)求得。因此,要求X(n)=[2,3,4,5,6],N=8的8点圆周翻褶序列,要先将x(n)补零到8点长度再求圆周翻褶。
x=[x,zeros(1,N-length(x))];nx=0:N-1 %x补零到8点长
y=x(mod(-nx,N)+1); %圆周翻褶从一开始,因此得到8点长
%序列,应该再加一
2.DFT矩阵,IDFT矩阵
【例3.29】已知N=4的DFT矩阵w4,求IDFT矩阵w4I。
代码:
w4I=conj(dftmtx(4))/4
结果:
总结:
求N 点的DFT 矩阵可以用 wN=dftmtx(N)求得,N=4时可得w4为: w4 =
1.0000 1.0000 1.0000 1.0000 1.0000 0 - 1.0000i -1.0000 0 + 1.0000i
1.0000 -1.0000 1.0000 -1.0000 1.0000 0 + 1.0000i -1.0000 0 - 1.0000i
而N 点的IDFT 可以表示成N 点的DFT 矩阵取共轭再乘以1/N ,即wNI=conj(dftmtx(N))/N ,求得w4I 的结果为:
w4I =
0.2500 0.2500 0.2500 0.2500 0.2500 0 + 0.2500i -0.2500 0 - 0.2500i
0.2500 -0.2500 0.2500 -0.2500 0.2500 0 - 0.2500i -0.2500 0 + 0.2500i
3.用圆周卷积计算线性卷积的时域方法
【例3.30】已知12()[2,4,3,1],()[2,1,3]
x n x n ==,求4点圆周卷积。
代码:
(1)cirshift.m
function y=cirshift(x,m,N)
if length(x)>N
error('N必须>=x的长度')
end
x=[x zeros(1,N-length(x))];
n=[0:1:N-1];
n=mod(n-m,N);
y=x(n+1);
(2)circonvt.m
function y=circonvt(x1,x2,N)
if length(x1)>N
error('N必须>=x1的长度')
end
if length(x2)>N
error('N必须>=x2的长度')
end
x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))];
m=[0:1:N-1];
x2=x2(mod(-m,N)+1);
H=zeros(N,N);
for n=1:1:N
H(n,:)=cirshift(x2,n-1,N); end
y=x1*H';
(3)求4点圆周卷积的时域方法
clc;clear all
x1=[2 4 3 1];x2=[2 1 3];
y=circonvt(x1,x2,4)
结果:
总结:
y=cirshift(x,m,N) 用于圆周移位。其中x 为输入序列,长度必须小于或等于圆周长度N ,若 N N y n x n R n =-。 y=circonvt(x1,x2,N)用于圆周卷积。规定卷积的两个序列x1,x2的长度均小于或等于N ,否则报错;若 在主程序中将x1,x2分别赋值最后可以求得4点的圆周卷积y=14 13 16 17。 4.计算 DTFT 的矩阵表示法 【例4.4】已知x(n)=[2,1,-1,2,3],用矩阵表示法求()[()]iw x e DTFT x n =及x(n)的5点DFT ,并将DFT 的(0,2π)范围移到与DTFT 的[-π,π]相重叠。 代码: clc;clear all x=[2,1,-1,2,3]; nx=0:4;K=128;dw=2*pi/K; k=floor((-K/2+0.5):(K/2-0.5)); X=x*exp(-j*dw*nx'*k); subplot(221);plot(k*dw,abs(X));hold on;