matlab fftshift_MATLAB信号频谱分析FFT详解

做OFDM通信少不了频谱分析,基带信号DA后的频谱,以及基带数字上变频后的DA信号都要频谱分析。我觉得其实做任何工程都是这样,先规定实施方案,然后仿真成功,再实际开发,不过也可以一边开发,一边仿真,开发结果要与仿真预期结果一致。

所以分析与仿真工具MATLAB就很重要了,既可以仿真,又可以通过示波器或其他方法把实际信号采下来分析。

matlab使用FFT函数分析信号频谱

一般我使用的FFT分析频谱流程如下:

bc4364bc485d14355aa9a8c8ce25dab7.png

1a67a4a837bd6f81c56698f787f4e19c.png

其中有3个注意的点:

1.FFT的结果看的是频谱,所以怎么把横坐标的值从原来的FFT点数0:N-1转换为频率值呢?

首先要引出频谱分辨率的概念,即分辨两个不同频率信号的最小间隔,FFT结果相邻点间的间隔57b8bc4ad28719f2791e2c03b7098f24.png。因为N点FFT对应采样率为fs的序列,其频率分辨率为7cbff121269ad966a6b70b130a4d45e6.png,其中Ts为采样周期,T为整个序列的时间长度。有关频率分辨率的就不多说了。所以我们横坐标转换为:f = (0:length(y)-1)*Fs/length(y);

2.直接FFT的结果里怎么又多余的信号频率(镜像频率)图2?

DFT具有对称性,因为其是周期序列DFS在一个周期内的点,时域序列是有限长实序列,DFT的结果的实部周期偶对称,虚部周期奇对称,也就是模值周期偶对称,相位周期奇对称。其实从奈奎斯特定律也可以看出,fs>=2f,fs的采样率最多也就显示fs/2的真实频率(感性理解哈哈)。
所以程序处理方式就是周期延拓后取-N/2:N/2-1.用到函数fftshift(),结果如图3.如注释所述:
%该变换还会生成尖峰的镜像副本,该副本对应于信号的负频率。
%为了更好地以可视化方式呈现周期性,可以使用 fftshift 函数对变换执行以零为中心的循环平移。

其实这和设计数字滤波器IIR与FIR也一样,采样率为fs的信号,设计的滤波器的通带阻代也限制在0-fs/2内。

3.程序中的信号幅度值都是1,500点的FFT画出来的幅度值怎么变成了250,应该是1吧?

是的,应该是1。所以怎么变换为1呢,注意到FFT的结果是偶对称的,且其反应的真实频谱是0-fs/2。所以需要的操作是直接取0-N/2的FFT结果,乘以2,然后除以N。即2*abs(y(1:N/2+1))/N,在上面的程序下接着写:

注意到要除以N,也就是FFT的长度,为什么除以N,这个有很多说法,我自己理性理解的也不透彻,所以这里就不解释了自行百度(我只能结合本例子感性理解哈哈)。

a4b40129ddb4c678dd524c49493dd1c4.png

结果如图4,可见横坐标频率是0-25,纵坐标信号的幅度为1.

然而,有不少人(包括我)平时分析信号都是直接FFT画频谱:图2,且看幅值都是看相对的大小,或者有没有频率分量,就很少做图3与图4的变换。但是我不知道其中的缘由,今天终于明白了。

945dce88056559d835dff03568279fba.png

图4 FFT所反映的真正的频谱幅值

参考资料

[1]傅里叶变换 - MATLAB & Simulink - MathWorks 中国
[2]快速傅里叶变换- MATLAB fft - MathWorks 中国

来源:CSDN king阿金

4ab408baed347b71a2cfeb5cf84f7b2f.gif

原创RF测试笔记:

频谱分析系列:如何选择显示检波器频谱分析系列:为什么需要预选器?频谱分析系列:浅谈分辨率带宽RBW

频谱分析系列:如何理解FFT中的频谱泄露效应?

频谱分析系列:如何理解FFT中时间窗与RBW的关系

频谱分析系列:为什么降低VBW不会降低频谱仪底噪?数字调制系列:如何理解IQ ?数字调制系列:IQ基本理论

噪声系数系列:噪声来源、定义及影响

噪声系数系列:天线噪声温度测试方法

噪声系数系列:噪声系数测试之增益法

噪声系数系列:浅析AGC电路噪声系数的测试

噪声系数系列:浅析多通道接收单元噪声系数的测试

噪声系数系列:镜频抑制滤波器对射频接收前端输出噪声的影响

选择示波器时的“5倍法则” 投稿&专栏合作  请加小编微信 | 微信号:18675536035

9db1c14ac6b748a2e35aec6fb4f25c7f.png

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
fftshiftMATLAB中的一个函数,用于对FFT结果进行移动,以使得零频分量位于频谱的中心位置。具体来说,fftshift函数FFT结果的前一半和后一半交换位置,从而使得频谱的中心点位于零频分量处。 在MATLAB中,fftshift函数的语法为Y = fftshift(X,dim),其中X是输入的向量或矩阵,dim是要进行移动的维度。如果dim未指定,则默认为第一个非单一维度。 通过使用fftshift函数,可以将FFT结果的频谱图进行调整,使得频率分量从负频率到正频率依次排列。这样可以更方便地进行频谱分析和处理。 引用\[1\]中的图解说明fftshift函数的作用,通过移动零频分量到频谱的中心位置,使得结果与FFT运算的结果一致。 引用\[2\]中的代码示例展示了如何使用fftshift函数信号频谱进行移动,并绘制出移动后的频谱图。 引用\[3\]中的代码示例展示了使用subplot和plot函数绘制出经过fftshift处理后的频谱图。 综上所述,fftshift函数MATLAB中用于对FFT结果进行移动,以使得零频分量位于频谱的中心位置,方便进行频谱分析和处理。 #### 引用[.reference_title] - *1* *3* [fftshift](https://blog.csdn.net/weixin_30535565/article/details/95658583)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [matlab使用杂谈5-fftshift函数的使用](https://blog.csdn.net/weixin_44985601/article/details/105677880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值