FFT中倒序数的产生
来源:互联网 发布:激战2优化补丁 编辑:程序博客网 时间:2024/06/12 01:42
说明:
1、基本思路:将十进制转化为二进制数,然后把二进制最低位当作最高位,最高位当作最低位再转化为十进制
2、只考虑了FFT点数为2的整数次幂
3、代码以8点FFT为例,经过DataReRank(int)函数处理后,Data[ ]里数据已经重新排列
4、倒序数的产生有一种比较流行的算法:雷德算法,在此没有采用这种方法
5、水平所限,代码难免质量不高
#include<iostream>#include<list>#include<vector>using namespace std;float Data[] = {0,1,2,3,4,5,6,7};//进行FFT的数据void DataReRank(int num);//对数据倒序,有一种雷德算法可以完成此功能,不过在此并未采用int main(){DataReRank(8); return 0;}void DataReRank(int num){int BitNum = log(num) / log(2); int flag = 1, index = 0, flag2 = 0;;list<int> Bit; //存放二进制数,重复使用,每次用完需清零vector<float> DataTemp; //暂时存放重新排列过后的FFT数据for (int i = 0; i < num; i++){for (int j = 0; j < BitNum; j++){ //十进制转化为长度一致的二进制数int x = (i & flag)>0 ? 1 : 0;Bit.push_front(x);flag <<= 1;}for (auto it = Bit.begin(); it != Bit.end(); it++) index += *it*pow(2, flag2++); //将原数组的索引倒序DataTemp.push_back(Data[index]);Bit.clear();flag = 1; flag2 = 0; index = 0; }for (int i = 0; i < num; i++) Data[i] = DataTemp[i]; //将DataTemp中数据复制到Data}
0 0
- FFT中倒序数的产生
- 求一个数L,在二进制下末尾0的个数k,与fft过程中的码位倒序
- FFT(傅里叶变换)输入序列的倒序算法设计
- 倒序数
- 倒序数
- 求一个数字的倒序数
- Oracle中批量产生指定条数的记录
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- MATLAB中FFT的使用方法
- CFileDialog弹出文件选择对话框
- 关于button的小问题
- 最大最小值:给n个实数,求它们之中的最大值和最小值,要求比较次数尽量小。
- XML DOM加载函数
- C++ - 通过私有(private)继承复用类实现工厂函数(factory function) 详解
- FFT中倒序数的产生
- 开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
- POJ 3304 Segments(线段直线相交)
- 插入排序
- 拦截导弹
- 树形控件TreeCtrl关联的MFC中的类:CTreeCtrl
- 用命令行启动调试器
- 消息SW WM M区别
- PHP把金额数字转换成大写形式