你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

FFT 计算各次谐波的幅值

[复制链接]
cmz871627 提问时间:2012-7-31 10:06 /
最近在搞FFT  我用的是自带DSP库中64点 的FFT  现在我遇到一个问题是:我在通过对采样数据进行完FFT后  来计算各次谐波幅值的时候发现计算的值就不对  总是乱跳 (前提是我用的是一个可以产生稳定谐波的源)不知道这是为什么。希望高手给予指点 
计算幅值的程序如下:
void powerMag(long nfill)
{
  s32 lX,lY;
  u32 i;
  for (i=0; i < nfill; i++)
  {
    lX= (lBUFOUT16; /* sine_cosine --> cos */
    lY= (lBUFOUT >> 16);   /* sine_cosine --> sin */
 {   
    float X=  NPT*((float)lX)/32768;
    float Y = NPT*((float)lY)/32768;
    float Mag = sqrt(X*X+ Y*Y)/nfill;   // 先平方和,再开方
    lBUFMAG[i1] = (u32)(Mag*65536);   //
 }
  }
}
 
收藏 评论6 发布时间:2012-7-31 10:06

举报

6个回答
废鱼 回答时间:2012-7-31 10:27:14

RE:FFT 计算各次谐波的幅值

lX= (lBUFOUT16; /* sine_cosine --> cos */
这个不还是lBUFOUT吗?
cmz871627 回答时间:2012-7-31 10:36:27

回复:FFT 计算各次谐波的幅值

回复第 2 楼 于2012-07-31 10:27:14发表:
lX= (lBUFOUT16; /* sine_cosine --> cos */
这个不还是lBUFOUT吗? 

是的  我的理解是确宝高16位为空吧    这个求幅值的函数  是我在网上找的   大多数都是这样的   是因为这点的原因吗?
废鱼 回答时间:2012-7-31 11:36:45

RE:FFT 计算各次谐波的幅值

你仿真到这里,看看这里的内容。然后算一下,看看是采集的时候数据放错了。还是有别的问题。
废鱼 回答时间:2012-7-31 11:40:57

RE:FFT 计算各次谐波的幅值

其实也可以这样写,a&0x00FF。取的是低16位。这里最好还是仿真看一下,实际采集的数据和你发书据是不是相同。
cmz871627 回答时间:2012-7-31 11:45:18

回复:FFT 计算各次谐波的幅值

回复第 5 楼 于2012-07-31 11:40:57发表:
其实也可以这样写,a&0x00FF。取的是低16位。这里最好还是仿真看一下,实际采集的数据和你发书据是不是相同。 

好的  我试试看 
qq371833846-814 回答时间:2012-8-27 01:48:12

回复:FFT 计算各次谐波的幅值

回复第 5 楼 于2012-07-31 11:40:57发表:
其实也可以这样写,a&0x00FF。取的是低16位。这里最好还是仿真看一下,实际采集的数据和你发书据是不是相同。
a&0x00FF。取的是低16位,你确定?????
 

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版