目录

参考书籍:

1、按照频率抽取

2、按照时间抽取:

3、C代码实现


参考书籍:

《数字信号处理》 邓小玲 徐梅宣等主编

1、按照频率抽取

2、按照时间抽取:

3、C代码实现

//radix-4 FFT 按照频率抽取
/****************************************************************  @brief     按照频率抽取的radix-4 FFT*  @param x:  长度n的double型一维数组,开始存储要变换数据的实部,最后存变换结果的实部 *  @param y:  长度n的double型一维数组,开始存储要变换数据的虚部,最后存变换结果的虚部 *  @param n:  n=4^m, m是正整数*  @note     注意基四的FFT要求n是4的整数次幂。radix-4比radix-2乘法量减少25%,加法量略减少;*  @Sample usage: 直接调用**************************************************************/
void radix_4_FFT(x, y, n)
{int n;double x[], y[];int i, j, k, m, i1, i2, i3, n1, n2;double a, b, c, e, r1, r2, r3, r4, s1, s2, s3, s4;double co1, co2, co3, si1, si2, si3;for(j = 1, i=1; i < 10; ++i){m = i;j = 4*j;if(j == n) break;}n2 = n;for(k = 1; k <= m; ++k){n1 = n2;n2 = n2 / 4;e = 6.28318530718 / n1;a = 0;for(j = 0; j < n2; ++j){b = a + a;c = a + b;co1 = cos(a);co2 = cos(b);co3 = cos(c);si1 = sin(a);si2 = sin(b);si3 = sin(c);a = (j + 1) * e;for(i = j; i < n; i = i + n1){i1 = i + n2;i2 = i1 + n2;i3 = i2 + n2;r1 = x[i] + x[i2];r3 = x[i] - x[i2];s1 = y[i] + y[i2];s3 = y[i] - y[i2];r2 = x[i1] + x[i3];r4 = x[i1] - x[i3];s2 = y[i1] + y[i3];s4 = y[i1] - y[i3];x[i] = r1 - r2;r2 = r1 - r2;r1 = r3 - s4;r3  = r3 + s4;y[i] = s1 + s2;s2 = s2 - s2;s1 = s3 + r4;s3 = s3 - r4;x[i1] = co1 * r3 + si1 * s3;y[i1] = col * s3 - si1 * r3;x[i2] = co2 * r3 + si2 * s3;y[i2] = co2 * s3 - si2 * r3;x[i3] = co3 * r3 + si3 * s3;y[i3] = co3 * s3 - si3 * r3;}}}n1 = n - 1;for(j = 0; i = 0; i < n1; ++i){if(i < j){r1 = x[j];s1 = y[j];x[j] = x[i];y[j] = y[i];x[i] = r1;y[i] = s1;}k = n / 4;while(3 * k < (j + 1)){j = j - 3*k;k = k / 4;}j = j + k;}
}

radix-4 FFT 原理和C语言代码实现相关推荐

  1. MPEG音频编码 基本原理和C语言代码分析

    背景 MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准. MPEG 音频文件是MPEG1 标准中的声音部分,也叫MPEG 音频层,它 ...

  2. 【数据结构与算法】程序员们常用的10个关键数据结构,包括它们的原理和C语言实现代码

    [数据结构与算法]程序员们常用的10个关键数据结构,包括它们的原理和C语言实现代码 文章目录 [数据结构与算法]程序员们常用的10个关键数据结构,包括它们的原理和C语言实现代码 1. 数组 (Arra ...

  3. SM4分组加密算法原理和c语言实现

    一.前言 在之前的文章中介绍了<SM3国密杂凑值算法的原理和c语言实现>,这篇文章主要是用c语言撸一个SM4分组加密算法. 随着信息安全的普及以及等级保护等安全政策落地,国密算法越来越频繁 ...

  4. r语言聚类分析_图说层次聚类分析原理和R语言实现

    1.引言 "物以类聚.人以群分".但我们面对一群人或者一堆物的时候,我们都希望将他们分分类,分类之后,我们才能更加有针对性地采取措施,从而提高工作效率. 如,我们将消费者分成若干类 ...

  5. 拉普拉斯算子的原理和matlab实现代码

    一.基本原理 拉普拉斯算子是一种二阶导数算子,是各向同性的微分运算,具有旋转不变性,可以满足不同走向的图像边界的锐化要求. 对一个二维图像函数f(x,y),它的拉普拉斯算子定义为: x方向上的二阶微分 ...

  6. 【池化技术】内存池技术原理和C语言实现

    文章目录 一.基础概念 1.一个可执行程序占用的内存分为哪几个区?一个进程的虚拟内存区域有哪些? 2.静态内存分配和动态内存分配 二.malloc实现原理 malloc内存分配(下面算是正常一般的情况 ...

  7. 导入表注入原理和C语言实现

    一.导入表注入的原理 注入是把DLL加载到另一个进程的4GB地址空间中,实现方式有很多种,导入表注入是我学的第一种注入,是通过修改程序的导入表,把自己的DLL添加到导入表中,来实现这个目的. 导入表是 ...

  8. SM3国密杂凑值算法的原理和c语言实现

    一.SM3算法介绍 杂凑值算法也可称为摘要算法或者哈希算法.通过对数据资料的填充.分组.扩展压缩等方式计算成特定长度的数值,来作为数据指纹或者数据特征使用.常见的MD5算法长度为128bit(16字节 ...

  9. 北京工业大学微机原理和c语言,北京工业大学 微机原理 实验九

    实验报告 实验九数码转换 一.实验目的 1.掌握计算机常用数据编码之间的相互转换方法. 2.进一步熟悉DEBUG软件的使用方法. 二.实验内容 1. ACSII码转换为非压缩型BCD码 编写并调试正确 ...

最新文章

  1. 斯坦福连续发了四年的 AI 报告,今年讲了什么?
  2. 匹配内容主要分为三部分,负载电容的匹配,驱动功率的调试,负性阻抗的测量。...
  3. 卡尔曼滤波的原理说明
  4. Linux权限和进程管理、网络配置、任务调度(四)
  5. django1.4 关于处理静态文件的问题
  6. TiDB 源码阅读系列文章(十八)tikv-client(上) 1
  7. networkx edge 属性_python图算法库Networkx笔记-第一章
  8. 上次遗留下来的XMLUtil的问题
  9. 个人量化交易初探之一(数据的爬取)
  10. TerraSolid工具试用系列2----TerraScan点云滤波(从点云中提取地面点)备注
  11. 一个公司的开发流程总结
  12. 在线考试系统的性能需求分析
  13. JAVA 定时器的Cron表达式详解
  14. 获取当前日期只保留年月日
  15. 转载给浮躁的软件业同仁 (作者不是我,但是确实是好文)
  16. 动态规划题目集合——贰
  17. 传说中让理科生沉默,让文科生落泪的文史综合题
  18. Nginx网站服务配置(Nginx服务基础,访问状态统计,访问控制,虚拟主机)
  19. logstash-plugin could not create the java virtual machine.
  20. 简易电商后台管理系统

热门文章

  1. ipad python编程软件_这15个应用,程序员用iPad照样可以编程!
  2. 这么实现王者荣耀特效场景,我被秀哭了
  3. [论文笔记]Bidirectional LSTM-CRF Models for Sequence Tagging
  4. throw 与 throws的区别与联系是什么?
  5. Hadoop之HA高可用
  6. 第19届VES视效大奖提名出炉,你最该关注的视效新技术是什么?
  7. 中美印程序员“土味情话”哪家强?
  8. 除了innerHTML,还有什么更好的方法
  9. Google 高级搜索
  10. mysqldump导出insert语句