信号与系统 Matlab 利用DFT分析离散信号频谱

应用离散傅里叶变换(DFT),分析离散信号x[k]。根据信号傅里叶变换建立的时域与频域之间的对应关系,可以得到有限长序列的离散傅里叶变换(DFT)与四种确定信号傅里叶变换的之间的关系,实现由DFT分析其频谱。

  1. 利用FFT分析信号

    的频谱;

    (1) 确定DFT计算的参数;
    (2) 进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。
    答:信号下x[k]基频在这里插入图片描述,可以确定基波周期N=16,为显示k=0,1,…31,所以取N=32。

Matlab程序如下:

N=32; k=0:N-1;
x=cos(3*pi*k/8);
X=fft(x);
subplot(2,1,1);
stem(k-N/2,abs(fftshift(X)));
ylabel('Magnitude');   
xlabel('Frequency (rad)');
subplot(2,1,2);
stem(k-N/2,angle(fftshift(X)));
ylabel('Phase');      
xlabel('Frequency (rad)');

在这里插入图片描述

(2)由幅频特性,X[m]在m=6和-6处有值,幅度为16,可以算出基频在这里插入图片描述,与理论值相符。若选取N不是16或16的整数倍,将发生频谱泄露现象。

2.利用FFT分析信号在这里插入图片描述的频谱;
(1) 确定DFT计算的参数;
(2) 进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。

答:(1)信号无限长,因此需要对其进行截短。该序列单调衰减,当k>=30时,序列已几乎衰减为0,因此只取序列在区间[0,30]上的数值进行分析。
Matlab程序如下:

k=0:30;
k1=-15:15;
x=0.5.^k;
X=fft(x);
subplot(2,1,1);
plot(k-15,abs(fftshift(X)),k1,(1+0.25-cos(k1*pi/15)).^(-0.5),'r');
ylabel('Magnitude');   
xlabel('Frequency (rad)');
subplot(2,1,2
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值