问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何将AD采集到的数据,用FFT进行变换

发布网友 发布时间:2022-04-26 10:13

我来回答

3个回答

热心网友 时间:2022-06-04 13:18

展开1全部#include<math.h>

kkfft(double pr[], double pi[], int n, int k, double fr[], double fi[], int l, int il)
{
int it,m,is,i,j,nv,l0;
double p,q,s,vr,vi,poddr,poddi;
for (it=0; it<=n-1; it++)
{
m = it;
is = 0;
for (i=0; i<=k-1; 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-1; 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-2; 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-1)*nv; it=it+nv)
for (j=0; j<=(nv/2)-1; 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-1; i++)
{
fr[i] = fr[i]/(1.0*n);
fi[i] = fi[i]/(1.0*n);
}
}
if (il!=0)
{
for (i=0; i<=n-1; 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;
}

void main()
{

double s1[128],s2[128],s3[128],s4[128],TT,TM;
int i,f,ff;
f=128;
ff=4;
for(i=0;i<128;i++)
{
TT=i;
TM=TT/f;
s1[i]=2*sin(2*3.14*ff*TM)+10;

}
kkfft(s1, s2, 128, 7, s3, s4, 0, 1);
printf("s1=%f\n",s1[0]/128) ;
getch();
for(i=1;i<12;i++)
{
printf("s1=%f,i=%d\n",s1[i]/64,i) ;

}
getch();
}

这是一段用wintc下编译的fft,double pr[], double pi[],double fr[], double fi[]是入口数组,在主函数中定义好,点数自定,你把ad采集的数存入
pr[]对应的数组中,记住如程序中的
for(i=0;i<128;i++)
{
TT=i;
TM=TT/f;
s1[i]=2*sin(2*3.14*ff*TM)+10;

}

s1对应pr
运行后可以看到直流分量(i=0点),交流分量(i=4点)
说明: kkfft(s1, s2, 128, 7, s3, s4, 0, 1);
s1对应ad才来的值,s2是ad采样的虚部一般为0,128采样点数一定要是2的
n次方,7就是那个n了,s3,s4背管了是副角返回值,0,1是程序内定的标志
fft结果的意义:她是一个数组如S1[n],那么s1[0]/采样点数是直流分量值,
而实际信号的频率在数组中的反应是f=n*采样频率/采样点数;
kkfft(double pr[], double pi[], int n, int k, double fr[], double fi[], int l, int il)
在51(020,120,060)单片机上运行通过;

热心网友 时间:2022-06-04 13:18

FFT 对离散数据作时域到频域的变换。
FFT 利用函数对称性使计算加速,所以输入数据必须是 2 的整数次方,例如1024,2048,4096 。。。
所以你要对 采到的数据要做长度处理。
一种是 保留时间长度,改变 dt, 重新采样(内插),变成 N=2^k 个数。
一种是 保留dt,加长时间,用尾部加0,补充到 N=2^k
一种是 保留dt,假定信号重复,把头部信号接到尾部,补充到 N=2^k

对时域信号要做光滑(修匀)处理,去掉毛刺
FFT 后的频域 结果 要对 高频和低频做 截断处理。

目的是消除 离散 和 时间截断 引起的 泄漏和旁瓣效应。

函数参数随编程人员而定。通常有 点数,采样时间步长,时系值数组,低频截断值,高频截断值。也许有输出数组,也许用时系值数组存放变换后的值。

热心网友 时间:2022-06-04 13:19

fft变换是方法不是目的, 问题就你到底想要取得什么样的东西。

对无限时间的序列来说,随便取一段都可以做fft, 而这个fft只能表示取的这段时间里的频率分布, 如果频率分布是稳定的, 你可以随意取足够长的一段来fft, 如果频率分布是不稳定的, 这就成了时频分析, 方法太多了, 各有特点, 其中比较容易想到的就是对每连续的n个点(比如1024)都做一次fft。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女人梦见蛇的七大预兆解梦 PHOTOSHOP 怎么把眼睛点大 这些月销量10000+的防晒霜,是噱头还是真的好用? 大宝水凝保湿防晒露适合哪些肤质的人使用? 拥有人口过亿的国家最多的大洲是( )A.非洲B.亚洲C.欧洲D.大洋 世界国家最多的大洲是:( ) A.亚洲 B.大洋州 C.非洲 D.欧 拥有人口过亿的国家最多的大洲是:( ) A.非洲 B.亚洲 C.欧洲 D.大洋 餐厅一般中餐都有哪些摆台要求和标准 如何做味道正宗的中餐? 河南文科跟理科高考分数线相差多少 大口径无缝钢管用途有哪些 安全生产法的&quot;双十条&quot;是什么? 单片机FFT算法,256点,看看哪里不对 小学语文口语评价 单片机位数对FFT计算有影响吗? 小学语文优质课评价标准 双减下小学语文如何进行评价 51单片机做FFT到底行不行?我想知道运算的速度有多慢,其转换时间是多少,请用数字说话。 如何进行小学语文教学评价 51单片机语音识别 小学语文课堂评价方法有哪些 单片机 谁懂FFT 如何用51单片机实现音频信号的频谱显示(在LCD上显示) 高分求FFT (单片机)的幅度公式和功率公式 小学一年级语文成绩评价 使用单片机和FFT算法显示波形(高分!!!急救!!) 小学语文学生课堂表现评价 求个能在51单片机上跑的FFT ~~ 51单片机进行fft变换,靠谱嘛?拜托各位了 3Q 51单片机FfT运算多长时间 安全生产十条禁令 多大尺寸的管道或阀门算是大口径呢? 国家安全生产九条禁令内容 单片机实现音乐喷泉的过程中如何对音频进行分频处理? 什么是法定的安全生产条件 大口径钢管价格大全 (51单片机c语言)vs1003b得出的14个频谱值具体是什么数据,如何在LED显示 谁帮我解解梦!!!最近老是梦到一只火红色的狐狸!啥预兆啊? 安全生产法中对每月进行安全教育是哪一条 大口径厚壁无缝钢管,大口径是多大,厚壁钢管多厚?用途可用在哪里? 下雪天开车需要注意哪些方面 梦见几只红色的小狐狸身上发着光? 多大口径的管子是大口径管 雪天开车都有什么注意事项?详细的列举一下。 大口径厚壁钢管的规格、计算方法以及用途的介绍 下雪天开车需要注意 大口径不锈钢管制作工艺有哪些? 孕妇梦见火红色的狐狸变成同事和我说话 冰雪路面驾驶技巧和注意事项分别是? 京东便利店加盟条件是什么?