DSP实验报告5

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档