FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换(DFT)的快速算法。

采样得到的数字信号,做FFT变换,N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。

假设信号:

S=2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180)

它含有:2V的直流分量

频率为50Hz、相位为-30度、幅度为3V的交流信号

频率为75Hz、相位为90度、幅度为1.5V的交流信号

假设以采样频率为Fs(200HZ)对信号进行采样,信号频率F(0HZ,50HZ,75HZ),共采样点数为N(256),那么FFT之后结果就是一个为N(256)点的复数。每一个点就对应着一个频率点。即有N(256)个频率点,第一个点表示直流分量(0HZ),第N+1个点(不存在,事实最后一个点为第256点)表示采样频率Fs(200HZ),N个间隔平分采样频率Fs,每个点的频率依次增加。某点n所表示的频率为:Fn=(n-1)*Fs/N。

点n为(1,2,3,4,········256)对应的频率分别为

(0,200/256,2*200/256,3*200/256,..........127*200/256)HZ.

由上面的公式可以看出,Fn所能分辨到频率为为Fs/N(200/256),即两点的间隔位200/256.

如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。如果要提高频率分辨力,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。

继续回到例子,有三个频率点,0HZ,50HZ,75HZ,应该在点n(1,65,97)其所代表的频率为(0,64*200/256,96*200/256)即(0,50,75)上出现峰值。结合matlab实验拿到这些值综合分析峰值与原始信号的关系。

clf;
fs=200;N=256; %采样频率和数据点数
n=(0:N-1);
t=n/fs; %时间序列
S=2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180); %信号
y=fft(S,N); %对信号进行快速Fourier变换
mag=abs(y); %求得Fourier变换后的振幅
f=n*fs/N; %频率序列
subplot(2,1,1),plot(f,mag); %绘出随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');title('200的采样频率');grid on;
subplot(2,1,2),plot(n,mag); %绘出随频率变化的振幅
xlabel('频率点');
ylabel('振幅');title('256个数据点');grid on;

 

拿到第1,65,97点的数据。 no.1:   512.000000000001

no.65:     332.553755053224 - 192.000000000001i

no.97:      2.40097106720006e-12 + 192.000000000000i

结合数据可得:计算三个点的幅值:1点 512     65点  384    97点   192

分析数据可得:直流分量为512/N=512/256=2;
50Hz信号的幅度为:384/(N/2)=384/(256/2)=3;

75Hz信号的幅度为192/(N/2)=192/(256/2)=1.5。可见,从频谱分析出来的幅度是正确的。

计算三点相位信息:直流信号没有相位信息; 65点  :arctan(-192, 332.55)=-0.5236  ;97点: arctan(192, 2.4e-12)=1.5708

单位为弧度转换为角度:65点: 180*(-0.5236)/pi=-30.0001 ;97点:180*1.5708/pi=90.0002

总结:假设FFT之后某点n用复数a+bi表示,那么这个复数的模就是An=sqrt(a*a+b*b),相位就是Pn=arctan(b,a)。根据以上的结果,就可以计算出n点(n≠1,且n<=N/2)对应的信号的表达式为:An/(N/2)*cos(2*pi*Fn*t+Pn),即2*An/N*cos(2*pi*Fn*t+Pn)。对于n=1点的信号,是直流分量,幅度即为A1/N。

FFT的分析以及matlab实验的更多相关文章

  1. 视频分析(MATLAB)——MV分镜头图像分类

    引言:一个MV视频是有很多帧图像组合而成的,而一支MV是有多少个分镜头场景组合而成的呢?由MATLAB如何自动实现? 以<Love You Like A Love Song>的MV为例(这 ...

  2. 超精讲-逐例分析 CSAPP:实验2-Bomb!(下)

    好了话不多说我们书接上文继续来做第二个实验下面是前半部分实验的连接 5. 第五关 首先感觉应该是个递归问题 /* Round and 'round in memory we go, where we ...

  3. stm32F103RCT6使用FFT运算分析波形详解(非常新手)

    最近学校电赛院队招新,出的招新题就是低频示波器的.之前一直没有弄懂FFT,借着这次机会实现了一下. FFT原理详解 FFT,就是快速傅里叶变换,这个操作能够将时域信号转化成频域信号,然后对信号进行分析 ...

  4. stroop效应matlab实验

    1 打开matlab,打开test1.m 点击运行,若出现选择 更改文件夹 2  引导界面 (在这个界面,只许用户鼠标点击开始,其余的别乱按按键. 记得将打字法关掉,切换到小写) 3 做题界面 根据颜 ...

  5. 20179209《Linux内核原理与分析》安全类实验答疑

    实验一 题目 Nmap 配合 Metasploit 进行端口扫描 问题 Nmap怎么配合Metasploit进行端口扫描? 回答 这里的Nmap配合Metasploit进行端口扫描是指在Metaspl ...

  6. 利用Gabor变换法分析纹理图像 matlab代码实现

    Gabor变化属于加窗傅里叶变换,Gabor函数可以在频域不同尺度.不同方向上提取相关的特征.Gabor函数与人眼的生物作用相仿,所以经常用于纹理识别上,并取得了较好的效果. 二维Gobor滤波函数: ...

  7. 《0day安全-软件漏洞分析技术》实验笔记2

    实验 3.4 通用shellcode 工具 Windows XP SP3 Visual C++ 6.0 OD IDA 源代码 见随书代码,参考:https://github.com/jas502n/0 ...

  8. 《0day安全-软件漏洞分析技术》实验笔记1

    Crack 小实验 工具 Dev C++(书上使用的VS) IDA_Pro_v7.0 Ollydbg LordPE 010 editor 使用IDA打开文件 找到程序分支点 空格跳转到汇编界面 得到V ...

  9. linux内核分析第二次实验

    http://blog.sina.com.cn/s/blog_78e559950102wnqp.html

随机推荐

  1. SQL系统数据库简介(mssqlsystemresource)

    mssqlsystemresource

  2. nginx入门篇----功能特性

    1.nginx功能特性 可以作为http服务器或者反向代理服务器 能够快速响应静态页面(html)的请求 支持FastCGI.SSL.Virtual Host.URL Rewrite.HTTP.Gzi ...

  3. IDEA Generating project in Batch mode

    Idea 设置 -DarchetypeCatalog=internal 然后再执行 : Archetype repository not defined. Using the one from [or ...

  4. Java ResourceBundle类的使用

    1.使用ResourceBundle读取配置文件 #数据库配置信息: DRIVER=com.mysql.jdbc.Driver URL=jdbc:mysql://localhost:3306/dmo ...

  5. ibm v3700

    raid5总容量计算(n-1)*最小盘容量RAID0:N块盘组成,逻辑容量为N块盘容量之和:RAID1:两块盘组成,逻辑容量为一块盘容量:RAID3:N+1块盘组成,逻辑容量为N块盘容量之和:RAID ...

  6. 首页使用page类完成生成页面内容的大部分工作

    fs2在处理异常及资源使用安全方面也有比较大的改善.fs2 Stream可以有几种方式自行引发异常:直接以函数式方式用fail来引发异常.在纯代码里隐式引发异常或者在运算中引发异常,最开始只是我自己浏 ...

  7. caffe初步实践---------使用训练好的模型完成语义分割任务

    caffe刚刚安装配置结束,乘热打铁! (一)环境准备 前面我有两篇文章写到caffe的搭建,第一篇cpu only ,第二篇是在服务器上搭建的,其中第二篇因为硬件环境更佳我们的步骤稍显复杂.其实,第 ...

  8. 安装zabbix,make的时候报错

    CDPATH= && /bin/bash /install/Mesa-/bin/missing aclocal-1.14 -I m4 /install/Mesa-/bin/missin ...

  9. _IntfClear报错问题

    delphi对象在释放时会清除对象相关接口.如果开发人员在这之前已经将接口对应的对象释放掉,那么当清除到该接口时经常会报访问内存错误,如下图

  10. 测试dockerfile

    测试dockerfile是否ok(比如我的Dockerfile在deploy目录下) docker build -t my_image -f deploy/Dockerfile . docker im ...