高级会员

- 积分
- 921
- 金钱
- 921
- 注册时间
- 2016-4-20
- 在线时间
- 169 小时
|
发表于 2016-7-7 09:26:33
|
显示全部楼层
直接按照FFT计算后的结果算就好了,我大概伪代码形式说一下
假设:
typedef struct
{
float r; /*实部*/
float i; /*虚部*/
}COMPLEX;
COMPLEX data[100] 存放fft计算的结果
FFT最后计算的序列已经得到
Mag[100] 存放幅值
Ang[100] 存放角度
for (j = 0; j < 100; j++)
{
Mag[j] += (data[j].r*data[j].r + data[j].i*data[j].i); //先计算幅值平方和
}
for (i = 0; i < 100; i++)
{
Ang = atan(data[j].i/data[j].r); //这里计算的各频段的角度,直接虚部除以实部开正切就可以了
Mag = sqrt(Harm.hrmMag);//这里计算的各频段的幅值
}
atan 和 sqrt都是c语言标准的math.h自带的,你也可以用arm的库函数去计算。
|
|