|
发表于 2011-6-26 08:40:58
|
显示全部楼层
《测试技术学报》2004年第6期上看到的《一种用于FFT计算倒位序的新方法》(原文可按题目自行搜索),对于512点的“倒序',用时为传统方法的“4.93”分之一。
void new(int power,int data[],int x[])
{
int i,j,k,p,t,n,n1,power1;
power1=power-1
x[0]=0
for (i=0;i<power;i++)//i代表当前的级数
{
k=1<<i;//k是增量,还代表当前级新增数据的个数
p=power--;//p代表步长的幂,即2p等于步长
for(j=0;j<k;j++)//代表当前级增加的数据
{
n=((j<<1)+1)<<p;//新增数据出现的位置,即原位序
x[n]= x[(j<<1)<<p]+k;//新增数据(倒位序)=原数据+增量
n1=x[n]
if (n<n1)//交换判断,如果原位序<倒位序,则交换数据
{
t = data[n];
data[n]=data[n1];
data[n1]= t;
}
}
}
}
速度很快,想移植到示波表上,但仔细研究发现,计算“倒位序”只是在初始化时运行一次而已,移植意义不大。 |
|