• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: 混合基  fft  定点  

资源简介

定点基2,基3 的混合基fft,没有加入基5的部分,不过留的有空,有兴趣的谈朋友可以自己加一下

资源截图

代码片段和文件信息


#include “StdAfx.h“


void fixedpfft(long ixr[POINT]long ixi[POINT]double oxr[POINT]double oxi[POINT]int Rint Pint Q)
{
int nn1n0ijkltpar1rpar1ipar2rpar2isq2sq3;
// long *mr=new long[POINT]*mi=new long[POINT](*ar)[POINT]=new long[POINT][POINT](*ai)[POINT]=new long[POINT][POINT];
long mr[POINT]mi[POINT](*ar)[POINT]=new long[POINT][POINT](*ai)[POINT]=new long[POINT][POINT];
// long *wr=new long[POINT]*wi=new long[POINT]*w2r=new long[POINT]*w2i=new long[POINT]*w3r=new long[POINT]*w3i=new long[POINT];
long wr[POINT]wi[POINT]w2r[POINT]w2i[POINT]w3r[POINT]w3i[POINT];
long tmpuprupimidrmididownrdownitmp1rtmp1itmp2rtmp2i;
sq2 = 1/sqrt(2.00)*MAG+0.5;
sq3 = 1/sqrt(3.00)*MAG+0.5;
par1r = par2r = -0.5*MAG-0.5;
par1i = -sqrt(3.00)/2.00*MAG-0.5;
par2i = sqrt(3.00)/2.00*MAG+0.5;

for(n=0;n {
mr[n] = ixr[n];
mi[n] = ixi[n];
}

//计算旋转因子;
// cout<<“旋转因子“< for(i=0;i {
wr[i] = cos(2*PI/POINT*i)*MAG;
wi[i] = -1*sin(2*PI/POINT*i)*MAG;
// cout<<“w[“< }
// cout<<“------------------------------------------------“<//计算基二的旋转因子;
// cout<<“基二的旋转因子:“< for(i=0;i {
w2r[i] = cos(2*PI/R*i)*MAG;
w2i[i] = -1*sin(2*PI/R*i)*MAG;
// cout<<“w2[“< }
// cout<<“------------------------------------------------“<//计算基三的旋转因子;
// cout<<“基三的旋转因子:“< for(i=0;i {
w3r[i] = cos(2*PI/P*i)*MAG;
w3i[i] = -1*sin(2*PI/P*i)*MAG;
// cout<<“w3[“< }
// cout<<“------------------------------------------------“<//计算基五的旋转因子


//分解为二维数组;
// cout<<“分解为二维数组:“< for(n1=0;n1 {
for(n0=0;n0 {
ar[n1][n0] = mr[P*n1+n0];
ai[n1][n0] = mi[P*n1+n0];
// cout<<“ax[“< }
}
// cout<<“------------------------------------------------“<//对n1部分进行二进制倒位序排序;
for(n0=0;n0 {
for(i=0;i {
k=i;
j=0;
t=log(R*1.00)/log(2.00);
while((t--)>0)
{
j=j<<1;
j=j|(k&1);
k=k>>1;
}
if(j>i)
{
tmp = ar[i][n0];
ar[i][n0] = ar[j][n0];
ar[j][n0] = tmp;
tmp = ai[i][n0];
ai[i][n0] = ai[j][n0];
ai[j][n0] = tmp;
}
}
}
/*
cout<<“二进制倒位序排序后的序列:“< for(n1=0;n1 {
for(n0=0;n0 {
cout<<“ax[“< }
}
cout<<“------------------------------------------------“<*/

//基二fft;
for(n0=0;n0 {
for(i=0;i {
l=pow(2i);
for(j=0;j {
for(k=0;k {
tmp1r = ar[j+k+l][n0]*w2r[R*k/2/l]/MAG-ai[j+k+l][n0]*w2i[R*k/2/l]/MAG;
tmp1i = ar[j+k+l][n0]*w2i[R*k/2/l]/MAG+ai[j+k+l][n0]*w2r[R*k/2/l]/MAG;

upr = ar[j+k][n0] + tmp1r;
upi = ai[j+k][n

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6865  2010-07-22 16:18  fixedpfft.cpp

     文件        260  2010-07-17 17:34  fixedpfft.h

----------- ---------  ---------- -----  ----

                 7125                    2


评论

共有 条评论