硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3485|回复: 6
收起左侧

[DSP] STM32H7用FFT求解相位为什么不对?

[复制链接]

2

主题

8

回帖

14

积分

新手上路

积分
14
发表于 2020-9-4 16:30:04 | 显示全部楼层 |阅读模式
硬汉哥,小白请教一下,
我现在需要做两个正弦波的相位差,
x=SIN(2*PI* 64),初始相位为0;
算4096个点的FFT,分辨率为1HZ,然后求出幅值,
通过比较法;找到幅值最大的那个点对应的频率。
然后在将频率带入到FFT的输出数组算出来相位为-87度



代码如下:
      for (i=0;i<= FFT_LENGTH ; i++)      
      {
          fft_inputbuf [2*i  ] = data;
          fft_inputbuf [2*i+1] = 0;
      }
      arm_cfft_radix4_f32(&scfft,fft_inputbuf); //FFT计算(基4)

      arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf_amp,FFT_LENGTH); //算出幅值

      dc_vaule = fft_outputbuf_amp[0] /4096;//算出直流分量
   
      for (i=0;i<= FFT_LENGTH/2 ; i++)
      {
        fft_outputbuf_amp = fft_outputbuf_amp[i+1] ;  //去掉直流分量,去前2047个点
      }

      arm_max_f32(fft_outputbuf_amp,2047,&max_seq_value,&mean_value_seq); //在2047个点中找到幅值最大的那个点
   
      phase = atan2(fft_inputbuf[(mean_value_seq+1)*2+1], fft_inputbuf[(mean_value_seq+1)*2]);  //算出幅值最大的点的相位,

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2020-9-4 16:32:14 | 显示全部楼层

回帖奖励 +1 个金币

相位问题关注此贴,等待教程发布

FFT加窗插值修正后,求解多次谐波频率,幅值,相位的精度杠杠的
http://www.armbbs.cn/forum.php?m ... 7787&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2020-9-4 17:09:00 | 显示全部楼层
eric2013 发表于 2020-9-4 16:32
相位问题关注此贴,等待教程发布

FFT加窗插值修正后,求解多次谐波频率,幅值,相位的精度杠杠的

eric您好:
是不是我程序哪里错了呢?我感觉不应该差这么多啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2020-9-4 17:12:00 | 显示全部楼层
713042507 发表于 2020-9-4 17:09
eric您好:
是不是我程序哪里错了呢?我感觉不应该差这么多啊

没错,就是这么求的,只是要做修正才能得到正确值
回复

使用道具 举报

44

主题

563

回帖

700

积分

金牌会员

积分
700
发表于 2020-9-4 20:27:27 | 显示全部楼层
eric2013 发表于 2020-9-4 16:32
相位问题关注此贴,等待教程发布

FFT加窗插值修正后,求解多次谐波频率,幅值,相位的精度杠杠的

在等这个教程呢,大概啥时候能出,一个月两个三个月还是??
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2020-9-4 20:45:46 | 显示全部楼层
ou513 发表于 2020-9-4 20:27
在等这个教程呢,大概啥时候能出,一个月两个三个月还是??

不出意外,国庆后可以安排上。
回复

使用道具 举报

5

主题

61

回帖

76

积分

初级会员

积分
76
发表于 2020-9-27 04:25:46 | 显示全部楼层
这个是你采样到波形第一个点的相位, 如果你是从零点开始采样一个周波,那么FFT计算的相位就是零了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 21:25 , Processed in 0.196411 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表