FFT主要用于将信号从时域变换到频域,时域变换到频域的主要目的是为了更方便分析信号,比如轴承振动异常的频率想通过时域信号去分析出来是哪个频率就很难分析,而通过把时域信号变化到频域的话就可以很清楚直接的看出是什么频率的信号异常,配合振动行业的历史专家数据可以很快判断出来轴承的异常点。

FFT有很多开源算法,其中ARM CMSIS DSP库已经提供了现成的实现,同时也附带了容易上手理解的demo。使用CMSIS DSP FFT可以通过KEIL直接勾选对应pack后就可以把需要的lib引入进来。

添加对应的宏定义ARM_MATH_CM0开启arm dsp math相关库功能,

在需要使用的地方引入相关头文件

#include "arm_math.h"
#include "arm_const_structs.h"

定义fft点数和输入输出缓存

#define TEST_LENGTH_SAMPLES 512float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES];static float32_t testOutput[TEST_LENGTH_SAMPLES/2];uint32_t fftSize = TEST_LENGTH_SAMPLES/2;
uint32_t ifftFlag = 0;
uint32_t doBitReverse = 1;

初始化fft测试数据并进行fft后实测验证算法是否ok

 float32_t maxValue;status = ARM_MATH_SUCCESS;for(uint16_t i=0; i<TEST_LENGTH_SAMPLES/2; i++){testInput_f32_10khz[i*2] = arm_sin_f32(2*3.1415926*30*i/256);//30HZ的模拟测试数据testInput_f32_10khz[i*2+1] = 0;//虚数设置0}/* Process the data through the CFFT/CIFFT module */arm_cfft_f32(&arm_cfft_sR_f32_len256, testInput_f32_10khz, ifftFlag, doBitReverse);/* Process the data through the Complex Magnitude Module forcalculating the magnitude at each bin */arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize);/* Calculates maxValue and returns corresponding BIN value */arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);printf("testIndex:%d \r\n",testIndex);for(uint16_t i=0; i<TEST_LENGTH_SAMPLES/2; i++){printf("%d, %.11f\r\n",i, testOutput[i]);}    

实测log可以看到在第31个模最大

testIndex:30
0, 0.00002892773
1, 0.00004297213
2, 0.00001266399
3, 0.00006136897
4, 0.00013560653
5, 0.00012627122
6, 0.00009531343
7, 0.00005518499
8, 0.00001329048
9, 0.00003137795
10, 0.00003203490
11, 0.00002578502
12, 0.00001013968
13, 0.00004559400
14, 0.00002793486
15, 0.00003240239
16, 0.00005054057
17, 0.00001315053
18, 0.00001753508
19, 0.00002892138
20, 0.00002252875
21, 0.00001108598
22, 0.00003952960
23, 0.00002915471
24, 0.00003034776
25, 0.00004969939
26, 0.00005967727
27, 0.00006919499
28, 0.00007679316
29, 0.00024255572
30, 128.00001525879
31, 0.00023076239
32, 0.00006453021
33, 0.00007644097
34, 0.00004345864
35, 0.00003356057
36, 0.00007228916
37, 0.00006429406
38, 0.00004771496
39, 0.00013370944
40, 0.00012531117
41, 0.00003511846
42, 0.00009947860
43, 0.00000694658
44, 0.00004372749
45, 0.00005038966
46, 0.00001856879
47, 0.00001885037
48, 0.00002629824
49, 0.00004997727
50, 0.00000681128
51, 0.00002069812
52, 0.00001392227
53, 0.00000433236
54, 0.00004626073
55, 0.00004169381
56, 0.00002593613
57, 0.00004691675
58, 0.00001298208
59, 0.00000677296
60, 0.00001236440
61, 0.00002898611
62, 0.00002272235
63, 0.00004982074
64, 0.00010203922
65, 0.00012857486
66, 0.00009724760
67, 0.00005891226
68, 0.00000548412
69, 0.00001563732
70, 0.00003752773
71, 0.00000425526
72, 0.00000775951
73, 0.00002748890
74, 0.00003530245
75, 0.00000587712
76, 0.00002105232
77, 0.00002862351
78, 0.00002027376
79, 0.00002692355
80, 0.00001192341
81, 0.00002448306
82, 0.00003440450
83, 0.00004126507
84, 0.00000784971
85, 0.00001846974
86, 0.00007261307
87, 0.00002113351
88, 0.00004874028
89, 0.00005613720
90, 0.00004030240
91, 0.00002758938
92, 0.00004858629
93, 0.00003407705
94, 0.00000554083
95, 0.00002909856
96, 0.00003871642
97, 0.00004470018
98, 0.00006145758
99, 0.00012116764
100, 0.00012970244
101, 0.00004076306
102, 0.00008924623
103, 0.00006191705
104, 0.00003942000
105, 0.00002204489
106, 0.00001532559
107, 0.00004920200
108, 0.00002218006
109, 0.00000691916
110, 0.00007104683
111, 0.00004537940
112, 0.00004157177
113, 0.00003269806
114, 0.00003065552
115, 0.00000399545
116, 0.00001086705
117, 0.00003166789
118, 0.00002798485
119, 0.00001630381
120, 0.00003258564
121, 0.00001472268
122, 0.00001044421
123, 0.00001364797
124, 0.00001667829
125, 0.00000677175
126, 0.00002250985
127, 0.00000991695
128, 0.00003369440
129, 0.00000991696
130, 0.00002291132
131, 0.00000677176
132, 0.00001667829
133, 0.00001364797
134, 0.00000959428
135, 0.00001472268
136, 0.00003258564
137, 0.00001630380
138, 0.00002751275
139, 0.00003166790
140, 0.00001086705
141, 0.00000399545
142, 0.00003044865
143, 0.00003269806
144, 0.00004157177
145, 0.00004537940
146, 0.00007066731
147, 0.00000691916
148, 0.00002218006
149, 0.00004920201
150, 0.00001477674
151, 0.00002204489
152, 0.00003942000
153, 0.00006191705
154, 0.00008967488
155, 0.00004076306
156, 0.00012970244
157, 0.00012116764
158, 0.00006143878
159, 0.00004470019
160, 0.00003871642
161, 0.00002909856
162, 0.00000764699
163, 0.00003407704
164, 0.00004858630
165, 0.00002758939
166, 0.00004073274
167, 0.00005613719
168, 0.00004874028
169, 0.00002113351
170, 0.00007273883
171, 0.00001846973
172, 0.00000784971
173, 0.00004126507
174, 0.00003449893
175, 0.00002448306
176, 0.00001192341
177, 0.00002692355
178, 0.00002155130
179, 0.00002862351
180, 0.00002105232
181, 0.00000587712
182, 0.00003431020
183, 0.00002748890
184, 0.00000775951
185, 0.00000425527
186, 0.00003961953
187, 0.00001563731
188, 0.00000548412
189, 0.00005891226
190, 0.00009541891
191, 0.00012857486
192, 0.00010203922
193, 0.00004982074
194, 0.00002369224
195, 0.00002898612
196, 0.00001236440
197, 0.00000677295
198, 0.00001235775
199, 0.00004691675
200, 0.00002593613
201, 0.00004169381
202, 0.00004802661
203, 0.00000433236
204, 0.00001392227
205, 0.00002069812
206, 0.00000820385
207, 0.00004997728
208, 0.00002629824
209, 0.00001885038
210, 0.00001725397
211, 0.00005038965
212, 0.00004372750
213, 0.00000694659
214, 0.00009800826
215, 0.00003511846
216, 0.00012531117
217, 0.00013370944
218, 0.00004652559
219, 0.00006429406
220, 0.00007228916
221, 0.00003356058
222, 0.00004271183
223, 0.00007644096
224, 0.00006453021
225, 0.00023076242
226, 128.00001525879
227, 0.00024255572
228, 0.00007679316
229, 0.00006919500
230, 0.00006026902
231, 0.00004969939
232, 0.00003034775
233, 0.00002915472
234, 0.00004004771
235, 0.00001108597
236, 0.00002252875
237, 0.00002892139
238, 0.00001784568
239, 0.00001315052
240, 0.00005054057
241, 0.00003240238
242, 0.00002901943
243, 0.00004559400
244, 0.00001013968
245, 0.00002578502
246, 0.00003163380
247, 0.00003137795
248, 0.00001329048
249, 0.00005518498
250, 0.00009745321
251, 0.00012627122
252, 0.00013560653
253, 0.00006136898
254, 0.00001108030
255, 0.00004297214

导入到excel看曲线

对应到实际应用,可以依据横坐标去换算到实际待测环境的对应频点。

基于MCU的快速傅里叶变换FFT调试记录相关推荐

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

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

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

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

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

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

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

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

  5. OpenCV快速傅里叶变换(FFT)用于图像和视讯流的模糊检测

    OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测 翻译自[OpenCV Fast Fourier Transform (FFT) for blur detection in images ...

  6. 基于FPGA的快速傅里叶变换加速(三)

    基于FPGA的快速傅里叶变换加速(三) 硬件加速介绍及部分verilog代码实现 1. 硬件加速 1.1 FPGA 1.1.1 FPGA介绍 概念: 基本结构: 工作原理: 1.1.2 开发板 开发板 ...

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

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

  8. Java中实现快速傅里叶变换FFT

    Java中实现快速傅里叶变换FFT 一.概述 1.傅里叶变换(FT) 2.离散傅里叶变换(DFT) 3.快速傅里叶变换(FFT) 1)单位根 2)快速傅里叶变换的思想 3)蝶形图 4)快速傅里叶变换的 ...

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

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

最新文章

  1. glib 2.0 arm linux,glib源码安装使用方法
  2. 效率思维模式与Zombie Scrum
  3. 刘知远:近年来开源的算法代码、工具包列表
  4. 脑电分析系列[MNE-Python-15]| Epochs数据可视化
  5. 微信公众号分享链接自定义hash值的处理
  6. numpy在折线图上添加取值_见识matplotlib:不常见的一面,折线图
  7. 做程序开发的你如果经常用Redis,这些问题肯定会遇到
  8. JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼?
  9. 0x0000007F蓝屏问题摸索解决-没有完成
  10. qt5.3.2移植到arm上出undefined reference to '__sync_sub_and_fetch_4的错
  11. 《Android开发从零开始》——17.Service学习(3)
  12. python读取特定单词_Python:如何从txt文件中的特定单词开始读取到文件结尾
  13. 基于OpenCV及Python的数独问题识别与求解(一)图像预处理
  14. UIUC 云计算概念:SWIM协议笔记
  15. 携程网不能访问的真相曝光
  16. 重温计算机简史:IBM的风云父子兵和硅谷的诞生
  17. Win10多用户同时远程桌面,并各自操作互不干扰
  18. 新媒体推广:阅读量VS转化率,为何他更看重它?黎想
  19. 有关REST的一些内容
  20. Oracle 查询时间(当日)

热门文章

  1. Arduino中蜂鸣器变频
  2. 为何全视觉方案无法实现真正的自动驾驶
  3. Linux基础知识快速入门(基于阿里云服务器)
  4. 用java编写博弈树_五子棋的博弈树实现
  5. php饶disfunction,Insomni’hack CTF-l33t-hoster复现分析
  6. imopen和bwmorph_形态学笔记
  7. matplotlib绘制关联图
  8. 微信发红包设计测试用例
  9. Jupyter Lab安装步骤
  10. mysql中int长度的意义