文章属于原创内容,引用需注明出处!(尊重原创力量,人人做起)

一、准备工作

使用DSPF_sp_fftSPxSP_r2cDSPF_sp_ifftSPxSP_c2r函数前,需要完成先3个工作:
1.二进制位翻转表(这个貌似是固定的),其代码如下;

// 二进制位翻转
#pragma DATA_ALIGN (brev, 8);   // 8字节对齐
unsigned char brev[64] =
{0x00, 0x20, 0x10, 0x30, 0x08, 0x28, 0x18, 0x38,0x04, 0x24, 0x14, 0x34, 0x0c, 0x2c, 0x1c, 0x3c,0x02, 0x22, 0x12, 0x32, 0x0a, 0x2a, 0x1a, 0x3a,0x06, 0x26, 0x16, 0x36, 0x0e, 0x2e, 0x1e, 0x3e,0x01, 0x21, 0x11, 0x31, 0x09, 0x29, 0x19, 0x39,0x05, 0x25, 0x15, 0x35, 0x0d, 0x2d, 0x1d, 0x3d,0x03, 0x23, 0x13, 0x33, 0x0b, 0x2b, 0x1b, 0x3b,0x07, 0x27, 0x17, 0x37, 0x0f, 0x2f, 0x1f, 0x3f
};

2.(逆)旋转因子

// 产生旋转因子
void tw_gen(float *w, int n)
{int i, j, k;for(i = 1, k = 0; i < n >> 2; i++){w[k    ] = sin(2 * PI * i / n);w[k + 1] = cos(2 * PI * i / n);k += 2;}for(j = 1; j <= n >> 3; j = j << 2)  {for(i = 0; i < n >> 3; i += j){w[k]     = (float)sin( 4 * PI * i / n);w[k + 1] = (float)cos( 4 * PI * i / n);w[k + 2] = (float)sin( 8 * PI * i / n);w[k + 3] = (float)cos( 8 * PI * i / n);w[k + 4] = (float)sin(12 * PI * i / n);w[k + 5] = (float)cos(12 * PI * i / n);k += 6;}}
}
// 逆fft变换的旋转因子
void tw_geni(float *w, int n)
{int i, j, k;for(i = 1, k = 0; i < n >> 2; i++){w[k    ] =  sin (2 * PI * i / n);w[k + 1] = -cos (2 * PI * i / n);k += 2;}for(j = 1; j <= n >> 3; j = j << 2){for(i = 0; i < n >> 3; i += j){w[k]     = (float) -sin ( 4 * PI * i / n);w[k + 1] = (float)  cos ( 4 * PI * i / n);w[k + 2] = (float) -sin ( 8 * PI * i / n);w[k + 3] = (float)  cos ( 8 * PI * i / n);w[k + 4] = (float) -sin (12 * PI * i / n);w[k + 5] = (float)  cos (12 * PI * i / n);k += 6;}}
}

3.基的选择(不要多想,手动狗头),如果fft点数N是4的幂,rad为4,否则rad为2.

// 基unsigned char rad;if(N == 64 || N == 256 || N == 1024 || N == 4096 || N == 16384 || N == 65536){rad = 4;}else if(N == 32 || N == 128 || N == 512 || N == 2048 || N == 8192 || N == 32768){rad = 2;}else{printf ("不支持计算 %d 点快速傅里叶变换!\n", N);while(1);}

二、函数调用

1.fft变换函数的调用说明
DSPF_sp_fftSPxSP_r2c(N, Input, W, FFT_Out, brev, rad, offset, N);

N:复信号样本中FFT的长度
Input:指向复数数组输入的指针
W:指向复杂旋转因子的指针(固定值)
FFT_Out: 指向复杂输出数据的指针
brev:指向包含64个条目的二进制位翻转表的指针(固定值)
rad:如果fft点数N是4的幂,rad为4,否则rad为2(根据N判定)
offset:从主fft开始的子fft复样本中的索引(一般不需要使用偏移,因此为0)
n2:样本中主fft的大小(一般是N)

有了第一步的准备工作,整个函数只需要指定输入输出即可成功调用。
DSPF_sp_ifftSPxSP_c2r(N, FFT_Out, W, IFFT_Out, brev, rad, offset, N);
逆fft变换函数的使用只需要注意旋转因子W利用tw_geni产生,其他的与上面大同小异,不再赘述

DSPF_sp_fftSPxSP_r2c函数的用法相关推荐

  1. 关于C语言中的malloc和free函数的用法

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  2. Python assert断言函数及用法

    Python assert断言函数及用法 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Pyt ...

  3. python中的counter()、elements()、most_common()和subtract()函数的用法

    python中的counter().elements().most_common()和subtract()函数的用法 counter()方法: class collections.Counter([i ...

  4. Java正则表达式--Matcher.group函数的用法

    https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...

  5. MapInfo中常用查询函数及用法

    MapInfo中常用查询函数及用法: 函数用途 语法 备注 图层中选点 Str$(obj)="point": Str(String)表示字符串:point表示点: 图层中选线 St ...

  6. Oracle trunc()函数的用法

    --Oracle trunc()函数的用法 /**************日期********************/ 1.select trunc(sysdate) from dual  --20 ...

  7. php error log 函数,php日志函数error_log如何使用 php日志函数error_log用法介绍

    php日志函数error_log如何使用?这篇文章主要介绍了php日志函数error_log用法,结合实例形式分析了php日志函数error_log相关的配置文件设置.函数功能.用法与使用注意事项,需 ...

  8. Python中的map()函数和reduce()函数的用法

    Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下  

  9. php函数find的用法,c语言find函数的用法详解

    c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...

最新文章

  1. 在 Mac 安装Docker
  2. C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值
  3. xutils找id空指针_xUtils更新到3.0后的基本使用规则
  4. easyuefi无法安装只能在基于_SOLIDWORKS2018安装时VC2015安装失败的解决方法
  5. 微软发布首版基于 Chromium 79 的 Edge 浏览器
  6. illegal instruction问题窥探
  7. CCNA学习指南 第八章 下载
  8. Ansys Speos | 手把手教你画光导
  9. VL17-decoder38译码器带使能端、低电平有效!
  10. Android的六大布局详解
  11. 适合新手——MySQL中基于SQL语言增删改查等基础的练习大汇总
  12. 表单 HTML 模拟登陆界面
  13. 洛谷P3376【模板】网络最大流
  14. 520浪漫表白,爱要大胆说出来,无法拒绝的浪漫表白网页
  15. 14. RDMA之Memory Window
  16. 人工智能安全(二)—攻击
  17. 计算机宽带拨号配置,宽带拨号上网怎么设置路由器
  18. GL benchmark测试解析
  19. c语言中逻辑非运算符的作用,C语言中逻辑运算符非!与或||的优先级怎么说?...
  20. 企业微信如何提高用户粘性防止粉丝流失

热门文章

  1. 大湾区文旅再递表港交所:毛利率持续下滑,林锦堂卸任董事会主席
  2. 扛过“小红书风波”的他,曾是斯坦福学霸,却因一封信抛弃学业、改走人生路!...
  3. 除夕有6.88亿人使用微信红包;超2.5亿人集齐五福过福年;巴菲特成苹果第四大股东丨价值早报
  4. html div边框阴影
  5. 终于搞懂Raft算法
  6. js判断生效时间不得大于失效时间
  7. 【Android】oui.txt格式化的sqlite数据库文件直接导入
  8. (JAVA)从键盘输入
  9. C++学习积累(长期更新)——符号相关
  10. Jmetal和PlatEMO中计算IGD时的结果差异