您的位置:首页 > 其它

FFT快速傅里叶变换-倒位序快速生成

2016-11-18 16:54 176 查看

FFT快速傅里叶变换-倒位序快速生成

目录

FFT快速傅里叶变换-倒位序快速生成
目录

什么是倒位序

生成原理

代码

吐槽

什么是倒位序?

0 — 000 —> 000 — 0

1 — 001 —> 100 — 4

2 — 010 —> 010 — 2

3 — 011 —> 110 — 6

4 — 100 —> 001 — 1

5 — 101 —> 101 — 5

6 — 110 —> 011 — 3

7 — 111 —> 111 — 7

[目的]
快速生成右侧数列

生成原理

以N=16为例

步骤0123456789101112131415
01
021
0421
08421
0844+821
0841222+82+42+121
0841221061411+81+41+121+21+101+61+14
0841221061419513311715

代码

// 快速生成倒位序算法
EErr GenerateBitReversedOrder( int32_t * list, int32_t count )
{
if ( !list || CheckPower2( count ) != ERR_NONE )
{
log2console( "FFT GenerateBitReversedOrder Error - 参数错误\n" );
return ERR_INVALID_PARAM;
}

int32_t p, i;
list[0] = 0;
// 填充2的幂次
for ( p = count >> 1, i = 1; p != 0; p >>= 1, i <<= 1 )
list[p] = i;

// 复制迭代
for ( p = 2; p < count; p <<= 1 )
{
int32_t base = list[p];
for ( i = 1; i < p; ++i )
{
list[p + i] = base + list[0 + i];
}
}
return ERR_NONE;
}


吐槽

还是写算法好装X,随手写个简单程序就能发篇博客。不像写游戏UI,还得装个3D环境才能跑。

我相信这个算法,这么简单,不可能是我第一个想出来的,只是,

百度了一下倒位序,一堆博客,都是讲所谓的雷德(Rader)[一句话的原理也能叫算法?],翻了一页百度的查找结果都是雷德,累的。

还有很多期刊论文,各种异想,虽然不错,但没法让我
Ctrl + C
Ctrl + V


这么多的文章,都只是一堆无效数据。

什么时候,百度才能实现有效的搜索?而不是掏出一箱子废纸,让用户自己一张张翻。

简单有效的数据分享,数据归类索引,真的这么难么?

或许还是需要有人,来将这遍地繁花,提炼成精油存好,否则就只是一地鸡毛。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息