离散信号X(n)变换的matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四 离散信号的频域分析
一、 实验目的
1.
掌握序列的傅里叶变换、离散傅里叶级数、离散傅里叶变换、快速傅里叶变换的Matlab 实现; 2.
学习用FFT 对连续信号和离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT 。
二、 实验内容及步骤
1. 计算序列的DTFT 和DFT ,观察栅栏效应
设)()(4n R n x =,要求用MATLAB 实现:
(1)计算)(n x 的傅里叶变换)(ωj e X ,并绘出其幅度谱;
(2)分别计算)(n x 的4点DFT 和8点DFT ,绘出其幅度谱。
并说明它们和)(ωj e X 的关系。
(提示:DFT 变换可用MA TLAB 提供的函数fft 实现,也可以自己用C 语言或matlab 编写)
2.计算序列的FFT ,观察频谱泄漏
已知周期为16的信号)16
12cos()1610cos()(n n n x ππ+=。
(1) 截取一个周期长度M=16点,计算其16点FFT ,并绘出其幅度谱;
(2) 截取序列长度M=10点,计算其16点FFT ,绘出其幅度谱,并与(1)的结果进行比
较,观察频谱泄漏现象,说明产生频谱泄漏的原因。
三、 实验报告要求
1.
结合实验中所得给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT 作谱分析时有关参数的选择方法。
2. 总结实验所得主要结论。
1. 计算序列的DTFT 和DFT ,观察栅栏效应
设)()(4n R n x =,要求用MATLAB 实现:
(1)计算)(n x 的傅里叶变换)(ωj e X ,并绘出其幅度谱;
(2)分别计算)(n x 的4点DFT 和8点DFT ,绘出其幅度谱。
并说明它们和)(ωj e
X 的关
系。
(1)代码:
n=0:3;
M=10;
k=0:2*M-1; %观察两个周期
x=u(n)-u(n-4);
X=x*(exp(-j*2*pi/M)).^(n'*k);%序列的傅里叶变换
f1=abs(X);
subplot(211);
stem(n,x,'fill');
title('R4(n)序列');
xlabel('n');
grid on;
subplot(212);plot(f1);
title('r4(n)的幅度谱');
xlabel('abs(R4(n))');
grid on
(2)代码
n=0:3;
M=4;
H=8;
m=100;
k=0:2*M-1; %观察两个周期
k1=0:2*H-1; %观察两个周期
k2=0:2*m-1; %观察两个周期
x=u(n)-u(n-4);
X=x*(exp(-j*2*pi/M)).^(n'*k);%序列的傅里叶变换
Y=x*(exp(-j*2*pi/H)).^(n'*k1);%序列的傅里叶变换
q=x*(exp(-j*2*pi/m)).^(n'*k2);%序列的傅里叶变换
f1=abs(X);
subplot(311);
stem(k,f1, 'fill');
title('4点DFT幅度谱');
xlabel('abs(R4(n))');
grid on ;
f2=abs(Y);
subplot(312);
stem(k1,f2, 'fill');
title('8点DFT幅度谱');
xlabel('abs(R4(n))');
grid on
subplot(313);
f3=abs(q);
plot(f3);
title('R4(n)DFT幅度谱');
grid on;
根据图像可以看出,4点和8点的DFT是原序列的傅里叶变换在周期上进行
等分取值。
例如4点(8点)就是将其分为4(8)等分。
2.计算序列的FFT ,观察频谱泄漏
已知周期为16的信号)1612cos()1610cos()(n n n x ππ+=。
(3) 截取一个周期长度M=16点,计算其16点FFT ,并绘出其幅度谱;
(4) 截取序列长度M=10点,计算其16点FFT ,绘出其幅度谱,并与(1)的结果进行比
较,观察频谱泄漏现象,说明产生频谱泄漏的原因。
(3)
代码:
n=0:15;
x=cos(10*pi/16*n)+cos(12*pi/16*n);
subplot(211);
stem(n,x, 'fill');
title('x 序列图像');
xlabel('n');
grid on;
f2=fft(x);
subplot(212);
stem(n,f2, 'fill');
title('16点FFT 的幅度谱');
xlabel('abs(X(k))');
grid on;
(4)代码:
clc ;clear;clf
n=0:15;
m=0:9;
x=cos(10*pi/16*n)+cos(12*pi/16*n);
subplot(211);
stem(n,x, 'fill');
title('x 序列图像');
xlabel('n');
grid on;
x=[cos(10*pi/16*m)+cos(12*pi/16*m),0 0 0 0 0 0];
f2=fft(x,16);
subplot(212);
stem(n,f2, 'fill');
title('10点FFT 的幅度谱');
xlabel('abs(X(k))');
grid on
谱分析:
10点的fft与原来的频谱相比明显发生了频谱泄露,10点fft相当于原信号进行加窗,在频域里相当于卷积,其结果使得到的频谱与原来不相同,产生失真,这种失真在频谱上表现为'“扩散'”,即为频谱泄露。
实验小结:通过实验对于离散信号的分析有了一定的掌握,在实验的过程中我们把课堂上的理论知识应用到实践中,这让我们对信号的处理有了更进一步的理解,只有通过实验我们才能在学习中不断提高自己,才能熟练的学好专业知识。