恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

simple_fft.c

  • 首页
  • 资讯中心
  • /
  • simple_fft.c

相关资讯

2.5D与3D封装技术解析:从CoWoS到Chiplet的芯片集成革命 2026/8/2 17:21:39
简单的中间人攻击实验 2026/8/14 4:54:35
开关电源DCM模式:轻载啸叫与低频纹波的根源分析与应对策略 2026/8/2 17:21:40

最新资讯

十二草集:跳出洗护赛道同质化内卷,打造中式草本养发差异化标杆
彻底解决SolidWorks Shell Extension Server崩溃:从原理到根治方案
VSCode中高效调试:快速console.log()的多种实现方案
AI Agent能力进化三阶段:从OpenClaw任务自动化到自主规划
MyBatis Log Plugin:IDEA插件自动还原可执行SQL,提升开发调试效率
ZLMediaKit HTTP Hook机制详解与实战配置

今日推荐

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

simple_fft.c

发布时间:2026/8/16 7:30:39
simple_fft.c /********************************************************************************* file simple_fft.c* brief 简单 radix-2 Cooley-Tukey FFT 实现无第三方算法库。*******************************************************************************/#include simple_fft.h#define SIMPLE_FFT_MAX_LENGTH 256Ustatic uint8_t SimpleFFT_IsPowerOfTwo(uint16_t value);static uint16_t SimpleFFT_ReverseBits(uint16_t value, uint8_t bit_count);static uint8_t SimpleFFT_Log2(uint16_t value);uint8_t SimpleFFT_ForwardReal(const float *input, SimpleFFT_Complex_t *output, uint16_t length){uint16_t i;uint16_t block_size;uint8_t bits;if ((input 0) || (output 0) || (length SIMPLE_FFT_MAX_LENGTH) ||(SimpleFFT_IsPowerOfTwo(length) 0U)){return 0U;}/* FFT 首先做位倒序重排输入第 i 个样本写入输出的 bit_reverse(i) 位置。 */bits SimpleFFT_Log2(length);for (i 0U; i length; i){uint16_t reversed SimpleFFT_ReverseBits(i, bits);output[reversed].real input[i];output[reversed].imag 0.0f; /* 实数输入的虚部固定为 0。 */}/* 每一级把两个小 DFT 合成一个更大的 DFT2 - 4 - ... - length。 */for (block_size 2U; block_size length; block_size 1U){float step_real;float step_imag;uint16_t half (uint16_t)(block_size 1U);uint16_t start;uint16_t j;/** 本级旋转因子 exp(-j*2*pi/block_size)。只支持最大 256 点* 所有需要的 cos/sin 常量均列出避免调用 math 库。*/switch (block_size){case 2U: step_real -1.0f; step_imag 0.0f; break;case 4U: step_real 0.0f; step_imag -1.0f; break;case 8U: step_real 0.70710678f; step_imag -0.70710678f; break;case 16U: step_real 0.92387953f; step_imag -0.38268343f; break;case 32U: step_real 0.98078528f; step_imag -0.19509032f; break;case 64U: step_real 0.99518473f; step_imag -0.09801714f; break;case 128U: step_real 0.99879546f; step_imag -0.04906767f; break;case 256U: step_real 0.99969882f; step_imag -0.02454123f; break;default: return 0U;}for (start 0U; start length; start (uint16_t)(start block_size)){float w_real 1.0f;float w_imag 0.0f;for (j 0U; j half; j){uint16_t top (uint16_t)(start j);uint16_t bottom (uint16_t)(top half);float t_real w_real * output[bottom].real - w_imag * output[bottom].imag;float t_imag w_real * output[bottom].imag w_imag * output[bottom].real;float top_real output[top].real;float top_imag output[top].imag;float next_w_real;output[top].real top_real t_real;output[top].imag top_imag t_imag;output[bottom].real top_real - t_real;output[bottom].imag top_imag - t_imag;/* w w * step得到本级下一个蝶形运算的旋转因子。 */next_w_real w_real * step_real - w_imag * step_imag;w_imag w_real * step_imag w_imag * step_real;w_real next_w_real;}}}return 1U;}float SimpleFFT_GetBinEnergy(const SimpleFFT_Complex_t *spectrum, uint16_t bin){if (spectrum 0){return 0.0f;}return spectrum[bin].real * spectrum[bin].real spectrum[bin].imag * spectrum[bin].imag;}static uint8_t SimpleFFT_IsPowerOfTwo(uint16_t value){return ((value 2U) ((value (uint16_t)(value - 1U)) 0U)) ? 1U : 0U;}static uint8_t SimpleFFT_Log2(uint16_t value){uint8_t bits 0U;while (value 1U){value 1U;bits;}return bits;}static uint16_t SimpleFFT_ReverseBits(uint16_t value, uint8_t bit_count){uint16_t result 0U;while (bit_count 0U){result (uint16_t)((result 1U) | (value 1U));value 1U;bit_count--;}return result;}

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号