快速傅里叶变换FFT进行频谱分析(matlab)

本章摘要:FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。本章主要讲解如何采用matlab进行傅里叶变换,以及需要注意的事项。

一、组合信号

比如有这样一个组合信号,其波形图如下,杂乱无章,看不出名堂。
S=2+3 * cos (2 * pi * 50 * t - pi * 30/180) + 1.5 * cos(2 * pi * 75* t + pi * 90/180)。

二、频谱分析

上面的信号波形图杂乱无章,我们可不可以将其频率进行提取了,提取各个信号分量的频率、幅值、相位。答案是可以的,那就是傅里叶变换FFT。下面直接给出结果看看效果,是不是提取出了信号分量的两个频率50Hz, 75Hz,还有它们对应的幅值3,1.5。

三、快速傅里叶变换FFT

下面给出了,达到上面结果的FFT变换matlab代码。

t=0:1/256:1;        %采样步长
y= 2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180);
N=length(t);        %样点个数
plot(t,y);
fs=256;             %采样频率
df=fs/(N-1);        %分辨率
f=(0:N-1)*df;       %其中每点的频率
Y=fft(y(1:N))/N*2;  %真实的幅值
%Y=fftshift(Y);
figure(2)
plot(f(1:N/2),abs(Y(1:N/2)));

关于上面代码中的一些参数说明:

  • 经过ADC采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号频率的两倍。 假设采样频率为Fs,信号频率为F,那就因该Fs > 2F

  • 采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。结果结果是左右对称的,所以上面图中的结果只取了一半 256/2=128。为了方便进行FFT运算,通常N取2的整数次方。

  • 分辨率:例如某点n所表示的频率为:Fn=(n-1)*Fs/N。则Fn所能分辨到频率为Fs / N。如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。

  • 幅值:那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。

比如上面峰值处对应的复数表示:
1点: 512+0i
51点:332.55 - 192i
76点:3.4315E-12 + 192i
对应模值分别为:
1点:512
51点:384
76点:192
通过模值可以看出:第一点直流分量的模值512,真实模值2,之间的关系为:512/(N=256)=2
其它两点,384/(N/2)=3,192/(N/2)=1.5。

  • 相位角:直流信号没有相位可言,不用管它。50Hz信号的相位,atan2(-192,332.55)=-0.5236弧度,换算为角度就是180*(-0.5236)/pi=-30.0001。再计算75Hz信号的相位 atan2192,3.4315E-12)=1.5708弧度,换算成角度就是180*1.5708/pi=90.0002。

参考文献:利用matlab怎样进行频谱分析

快速傅里叶变换FFT进行频谱分析(matlab)相关推荐

  1. Matlab如何进行利用离散傅里叶变换DFT (快速傅里叶变换FFT)进行频谱分析

    文章目录 1. 定义 2. 变换和处理 3. 函数 4. 实例演示 例1:单频正弦信号(整数周期采样) 例2:单频正弦信号(非整数周期采样) 例3:含有直流分量的单频正弦信号 例4:正弦复合信号 例5 ...

  2. 快速傅里叶变换FFT C语言实现 可用于嵌入式系统进行模拟采样频谱分析

    快速傅里叶变换C语言实现 模拟采样进行频谱分析 FFT是DFT的快速算法用于分析确定信号(时间连续可积信号.不一定是周期信号)的频率(或相位.此处不研究相位)成分,且傅里叶变换对应的 ω \omega ...

  3. matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...

    为了大家能够复现各个图中的结果,我附上了所有我编写的MATLAB代码. 创作不易,未经允许,禁止转载. 另外,说明一下,用MATLAB做FFT并不要求数据点个数必须为以2为基数的整数次方.之所以很多资 ...

  4. MATLAB之傅里叶变换,快速傅里叶变换FFT

    文章目录 傅里叶变换及傅里叶逆变换定义 窗函数/矩形脉冲信号的傅里叶变换 基于MATLAB的快速傅里叶变换FFT 傅里叶变换及傅里叶逆变换定义 能从时域的非周期连续信号转化到频域非周期连续信号. 窗函 ...

  5. 基于python的快速傅里叶变换FFT(一)

    基于python的快速傅里叶变换FFT(一) FFT可以将一个信号变换到频域.有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了.这就是很多信号分析采用FFT变换的原因. ...

  6. Java编程实现快速傅里叶变换FFT

    快速傅里叶变换的时间复杂度分析 1 快速傅里叶变换FFT 1.1 理论分析 1.1.1 离散傅里叶变换 1.1.2 快速傅里叶变换 1.2 编程实现 1.2.1 算法思想 1.2.2 实验结果 1 快 ...

  7. 快速傅里叶变换(FFT)c语言实现

      快速傅里叶变换(FFT)c语言实现:(参考:FFT多种编程语言实现).注意:输入数据个数必须为2的n次方,数据不够可以用0补齐. #include <stdio.h> #include ...

  8. 基于python的快速傅里叶变换FFT(二)

    基于python的快速傅里叶变换FFT(二) 本文在上一篇博客的基础上进一步探究正弦函数及其FFT变换. 知识点   FFT变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算 ...

  9. MIT 线性代数 Linear Algebra 26:复矩阵,傅里叶矩阵, 快速傅里叶变换 FFT

    这一讲我们来讲一下复矩阵.线性代数中,复矩阵是避免不了的话题,因为一个简单实矩阵都有可能有复数特征值. 复矩阵 我们着重看一下复矩阵和实矩阵在运算上的区别. 距离 首先,一个复数向量的的距离求法发生了 ...

最新文章

  1. rn php,rn怎样在PHP的正则表达式中匹配到?
  2. Oracle10g 管理系统全局区(SGA)
  3. NOIP信息奥赛--1995“同创杯”初中复赛题题解(一)
  4. PDF转换器安装教程
  5. 从零开始数据科学与机器学习算法-简单感知器-05
  6. QUIC 之类的可靠传输协议
  7. typescript接口定义
  8. LeetCode 1310. 子数组异或查询(前缀异或)
  9. C/C++二维数组的传参方法总结
  10. 配置TURN服务器实现NAT穿透
  11. 小程序服务器配置要多高,小程序服务器配置要求
  12. 八大排序算法—源代码(c语言)
  13. 宝藏级UI组件库:FirstUI,微信小程序版+uniapp版更新至1.6.0,完美支持vue3
  14. 计算机 A类会议论文,一篇论文被CCF A类会议SIGIR 2021录用!
  15. amoeba mysql_mysql中间件-amoeba
  16. RGB 真彩色图像,CMYK 出版图像,YCbCr,L灰度图像
  17. Java插入Excel指定行
  18. 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn
  19. ArrayList的add方法详解——让我们好好看看一个元素是如何插入到ArrayList集合当中(源码级别)
  20. Spring configuration check

热门文章

  1. 计算方法--函数插值
  2. 开水果蔬菜超市利润大吗?
  3. 如何在手机上查询快递?
  4. ​网易游戏实时 HTAP 计费风控平台建设
  5. vscode 状态栏图标异常问题
  6. Basketball Dribbling
  7. 【Numpy】选择特定行列
  8. C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示
  9. maven添加sqljdbc4.jar,并引用
  10. 美团外卖退款显示服务器异常,外卖遇到异常订单几种类型及处理技巧