快速傅里叶变换FFT进行频谱分析(matlab)
快速傅里叶变换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)相关推荐
- Matlab如何进行利用离散傅里叶变换DFT (快速傅里叶变换FFT)进行频谱分析
文章目录 1. 定义 2. 变换和处理 3. 函数 4. 实例演示 例1:单频正弦信号(整数周期采样) 例2:单频正弦信号(非整数周期采样) 例3:含有直流分量的单频正弦信号 例4:正弦复合信号 例5 ...
- 快速傅里叶变换FFT C语言实现 可用于嵌入式系统进行模拟采样频谱分析
快速傅里叶变换C语言实现 模拟采样进行频谱分析 FFT是DFT的快速算法用于分析确定信号(时间连续可积信号.不一定是周期信号)的频率(或相位.此处不研究相位)成分,且傅里叶变换对应的 ω \omega ...
- matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...
为了大家能够复现各个图中的结果,我附上了所有我编写的MATLAB代码. 创作不易,未经允许,禁止转载. 另外,说明一下,用MATLAB做FFT并不要求数据点个数必须为以2为基数的整数次方.之所以很多资 ...
- MATLAB之傅里叶变换,快速傅里叶变换FFT
文章目录 傅里叶变换及傅里叶逆变换定义 窗函数/矩形脉冲信号的傅里叶变换 基于MATLAB的快速傅里叶变换FFT 傅里叶变换及傅里叶逆变换定义 能从时域的非周期连续信号转化到频域非周期连续信号. 窗函 ...
- 基于python的快速傅里叶变换FFT(一)
基于python的快速傅里叶变换FFT(一) FFT可以将一个信号变换到频域.有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了.这就是很多信号分析采用FFT变换的原因. ...
- Java编程实现快速傅里叶变换FFT
快速傅里叶变换的时间复杂度分析 1 快速傅里叶变换FFT 1.1 理论分析 1.1.1 离散傅里叶变换 1.1.2 快速傅里叶变换 1.2 编程实现 1.2.1 算法思想 1.2.2 实验结果 1 快 ...
- 快速傅里叶变换(FFT)c语言实现
快速傅里叶变换(FFT)c语言实现:(参考:FFT多种编程语言实现).注意:输入数据个数必须为2的n次方,数据不够可以用0补齐. #include <stdio.h> #include ...
- 基于python的快速傅里叶变换FFT(二)
基于python的快速傅里叶变换FFT(二) 本文在上一篇博客的基础上进一步探究正弦函数及其FFT变换. 知识点 FFT变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算 ...
- MIT 线性代数 Linear Algebra 26:复矩阵,傅里叶矩阵, 快速傅里叶变换 FFT
这一讲我们来讲一下复矩阵.线性代数中,复矩阵是避免不了的话题,因为一个简单实矩阵都有可能有复数特征值. 复矩阵 我们着重看一下复矩阵和实矩阵在运算上的区别. 距离 首先,一个复数向量的的距离求法发生了 ...
最新文章
- rn php,rn怎样在PHP的正则表达式中匹配到?
- Oracle10g 管理系统全局区(SGA)
- NOIP信息奥赛--1995“同创杯”初中复赛题题解(一)
- PDF转换器安装教程
- 从零开始数据科学与机器学习算法-简单感知器-05
- QUIC 之类的可靠传输协议
- typescript接口定义
- LeetCode 1310. 子数组异或查询(前缀异或)
- C/C++二维数组的传参方法总结
- 配置TURN服务器实现NAT穿透
- 小程序服务器配置要多高,小程序服务器配置要求
- 八大排序算法—源代码(c语言)
- 宝藏级UI组件库:FirstUI,微信小程序版+uniapp版更新至1.6.0,完美支持vue3
- 计算机 A类会议论文,一篇论文被CCF A类会议SIGIR 2021录用!
- amoeba mysql_mysql中间件-amoeba
- RGB 真彩色图像,CMYK 出版图像,YCbCr,L灰度图像
- Java插入Excel指定行
- 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn
- ArrayList的add方法详解——让我们好好看看一个元素是如何插入到ArrayList集合当中(源码级别)
- Spring configuration check
热门文章
- 计算方法--函数插值
- 开水果蔬菜超市利润大吗?
- 如何在手机上查询快递?
- ​网易游戏实时 HTAP 计费风控平台建设
- vscode 状态栏图标异常问题
- Basketball Dribbling
- 【Numpy】选择特定行列
- C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示
- maven添加sqljdbc4.jar,并引用
- 美团外卖退款显示服务器异常,外卖遇到异常订单几种类型及处理技巧