资源简介
定点基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
- 上一篇:基于信息熵和TOPSIS法的目标威胁评估及排序
- 下一篇:RSA加密解密
相关资源
- stm32f407+FFT浮点运算例程
- 基于fft的图像配准资料
- verilog编写的FFT
- CallTifftoy.rar
- fft7.v
- 16位浮点FFT算法的VHDL实现(有测试文
- 基于高斯_伪谱法的月球定点着陆轨道
- TMS320C54x系列DSP上FFT运算的实现
- FPGA 256点FFT
- 基于全相位频谱的fft
- FFT高精度谐波检测方法研究
- FFT算法的hls实现
- 基于加汉宁窗的FFT高精度谐波检测改
- FFT Verilog代码
- 基于4的FFT变换
- 64点的FFT基8算法的蝶形图
- 能够实现逻辑运算逻辑非、逻辑加、
- 数字信号处理大作业——编写FFT程序
- FFT_XILINX实现
- 细化FFT的短时傅里叶变换方法
- labview-fft幅值和相位
- 基4—FFT程序代码
- 基于fpga FFT处理
- 基于cordic算法的吉文斯迭代的定点Q
- 89C51FFT蝶形算法
- 1024点FFT快速傅立叶变换,16位数据输
- 3780点FFT实现
- stm32DSP 库FFT
- 加减交替法定点原码一位除法器
- LABVIEW中利用FFT求波形频率
评论
共有 条评论