//l=0时,pr存放采样输入的实部,返回离散傅立叶变换的模;l=1时,pr存放傅立叶变换的实部,返回逆傅立叶变换的模
//l=0时,pi存放采样输入的虚部,返回离散傅立叶变换的幅角;l=1时,pi存放傅立叶变换的虚部,返回逆傅立叶变换的幅角
//l=0时,fr返回傅立叶变换的实部;l=1时返回逆傅立叶变换的实部
//l=0时,fi返回傅立叶变换的虚部;l=1时返回逆傅立叶变换的虚部 (l=0时正变换,l=1时逆变换)
//il=0时,表示不要求本函数计算傅立叶变换或逆傅立叶变换的模或幅角
//il=1时,表示要求本函数计算傅立叶变换或逆傅立叶变换的模或幅角
#include <math.h> //快速傅立叶变换子程序
void kfft(pr, pi, n, k, fr, fi, l, il)
int n, k, l, il;
float pr[], pi[], fr[], fi[];
{
int it, m, is, i, j, nv, l0;
float p, q, s, vr, vi, poddr, poddi;
for (it = 0; it < n; it++)
{
m = it;
is = 0;
for (i = 0; i < k; i++)
{
j = m/2;
is = 2*is+(m-2*j);
m = j;
}
fr[it] = pr[is];
fi[it] = pi[is];
}
pr[0] = 1.0;
pi[0] = 0.0;
p = 6.283185306/(1.0*n);
pr[1] = cos(p);
pi[1] = -sin(p);
if (l != 0) pi[1] = -pi[1];
for (i = 2; i < n; i++)
{
p = pr[i-1]*pr[1];
q = pi[i-1]*pi[1];
s = (pr[i-1]+pi[i-1])*(pr[1]+pi[1]);
pr[i] = p-q;
pi[i] = s-p-q;
}
for (it = 0; it < n; it = it+2)
{
vr = fr[it];
vi = fi[it];
fr[it] = vr+fr[it+1];
fi[it] = vi+fi[it+1];
fr[it+1] = vr-fr[it+1];
fi[it+1] = vi-fi[it+1];
}
m = n/2;
nv = 2;
for (l0 = k-2; l0 >= 0;l0--)
{
m = m/2;
nv = 2*nv;
for (it = 0;it < m*nv;it = it+nv)
for (j = 0; j < nv/2; j++)
{
p = pr[m*j]*fr[it+j+nv/2];
q = pi[m*j]*fi[it+j+nv/2];
s = pr[m*j]+pi[m*j];
s = s*(fr[it+j+nv/2]+fi[it+j+nv/2]);
poddr = p-q;
poddi = s-p-q;
fr[it+j+nv/2] = fr[it+j]-poddr;
fi[it+j+nv/2] = fi[it+j]-poddi;
fr[it+j] = fr[it+j]+poddr;
fi[it+j] = fi[it+j]+poddi;
}
}
if (l != 0)
for (i = 0; i < n; i++)
{
fr[i] = fr[i]/(1.0*n);
fi[i] = fi[i]/(1.0*n);
}
if (il != 0)
for (i = 0; i < n; i++)
{
pr[i] = sqrt(fr[i]*fr[i]+fi[i]*fi[i]);
if (fabs(fr[i]) < 0.000001*fabs(fi[i]))
{
if ((fi[i]*fr[i]) > 0) pi[i] = 90.0;
else pi[i] = -90.0;
}
else
pi[i] = atan(fi[i]/fr[i])*360.0/6.283185306;
}
return;
}
小波思基
- 粉丝: 86
- 资源: 1万+
最新资源
- 串联式、并联式、混联式混合动力系统simulink控制策略模型(串联式、并联式、混联式每个都是独立的需要单独说拿哪个,默认是混联式RB) 有基于逻辑门限值、状态机的规则控制策略(RB)、基于等效燃油
- 法码滋.exe法码滋2.exe法码滋3.exe
- python-geohash-0.8.5-cp38-cp38-win-amd64
- Matlab根据flac、pfc或其他软件导出的坐标及应力、位移数据再现云图 案例包括导出在flac6.0中导出位移的fish代码(也可以自己先准备软件导出的坐标数据及对应点的位移或应力数据,可根据需
- 拳皇97.exe拳皇972.exe拳皇973.exe
- 捕鱼达人1.exe捕鱼达人2.exe捕鱼达人3.exe
- 医疗骨折摄像检测29-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma数据集合集.rar
- ks滑块加密算法与源代码
- 医护人员检测23-YOLOv8数据集合集.rar
- 1.电力系统短路故障引起电压暂降 2.不对称短路故障分析 包括:共两份自编word+相应matlab模型 1.短路故障的发生频次以及不同类型短路故障严重程度,本文选取三类典型的不对称短路展开研究
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈