DSPF_sp_fftSPxSP_r2c函数的用法
文章属于原创内容,引用需注明出处!(尊重原创力量,人人做起)
一、准备工作
使用DSPF_sp_fftSPxSP_r2c
及DSPF_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函数的用法相关推荐
- 关于C语言中的malloc和free函数的用法
一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...
- Python assert断言函数及用法
Python assert断言函数及用法 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Pyt ...
- python中的counter()、elements()、most_common()和subtract()函数的用法
python中的counter().elements().most_common()和subtract()函数的用法 counter()方法: class collections.Counter([i ...
- Java正则表达式--Matcher.group函数的用法
https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...
- MapInfo中常用查询函数及用法
MapInfo中常用查询函数及用法: 函数用途 语法 备注 图层中选点 Str$(obj)="point": Str(String)表示字符串:point表示点: 图层中选线 St ...
- Oracle trunc()函数的用法
--Oracle trunc()函数的用法 /**************日期********************/ 1.select trunc(sysdate) from dual --20 ...
- php error log 函数,php日志函数error_log如何使用 php日志函数error_log用法介绍
php日志函数error_log如何使用?这篇文章主要介绍了php日志函数error_log用法,结合实例形式分析了php日志函数error_log相关的配置文件设置.函数功能.用法与使用注意事项,需 ...
- Python中的map()函数和reduce()函数的用法
Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下
- php函数find的用法,c语言find函数的用法详解
c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...
最新文章
- 在 Mac 安装Docker
- C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值
- xutils找id空指针_xUtils更新到3.0后的基本使用规则
- easyuefi无法安装只能在基于_SOLIDWORKS2018安装时VC2015安装失败的解决方法
- 微软发布首版基于 Chromium 79 的 Edge 浏览器
- illegal instruction问题窥探
- CCNA学习指南 第八章 下载
- Ansys Speos | 手把手教你画光导
- VL17-decoder38译码器带使能端、低电平有效!
- Android的六大布局详解
- 适合新手——MySQL中基于SQL语言增删改查等基础的练习大汇总
- 表单 HTML 模拟登陆界面
- 洛谷P3376【模板】网络最大流
- 520浪漫表白,爱要大胆说出来,无法拒绝的浪漫表白网页
- 14. RDMA之Memory Window
- 人工智能安全(二)—攻击
- 计算机宽带拨号配置,宽带拨号上网怎么设置路由器
- GL benchmark测试解析
- c语言中逻辑非运算符的作用,C语言中逻辑运算符非!与或||的优先级怎么说?...
- 企业微信如何提高用户粘性防止粉丝流失
热门文章
- 大湾区文旅再递表港交所:毛利率持续下滑,林锦堂卸任董事会主席
- 扛过“小红书风波”的他,曾是斯坦福学霸,却因一封信抛弃学业、改走人生路!...
- 除夕有6.88亿人使用微信红包;超2.5亿人集齐五福过福年;巴菲特成苹果第四大股东丨价值早报
- html div边框阴影
- 终于搞懂Raft算法
- js判断生效时间不得大于失效时间
- 【Android】oui.txt格式化的sqlite数据库文件直接导入
- (JAVA)从键盘输入
- C++学习积累(长期更新)——符号相关
- Jmetal和PlatEMO中计算IGD时的结果差异