硬汉嵌入式论坛

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

[DSP] STM32 FFT计算得到的相位谱与matlab计算的不一致?

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2019-9-16 16:03:56 | 显示全部楼层 |阅读模式
本帖最后由 whyil 于 2019-9-16 16:14 编辑

我使用用matlab 的cos(2*pi*5*t+pi/3)函数生成了256点波形的数据
下图示mathlab生成的波形数据

TIM截图20190916155947.png


我通过stm32和matlab对这段数据进行fft求频谱和相位谱,频谱求出来的结果相似,相位谱差别特别大?这是为啥。

TIM截图20190916155929.png

下图是stm32 printf 出的波形数据
TIM截图20190916155955.png

下图是我的fft 代码
TIM截图20190916161341.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-9-16 16:16:34 | 显示全部楼层
求相位就是这个吊样,要做修正才好使,最近在整第2版DSP教程,准备研究个修正方案。
回复

使用道具 举报

2

主题

21

回帖

27

积分

新手上路

积分
27
发表于 2019-9-17 18:04:09 | 显示全部楼层
求非频点的相位有什么意义呢?
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2019-9-17 20:46:23 | 显示全部楼层
eric2013 发表于 2019-9-16 16:16
求相位就是这个吊样,要做修正才好使,最近在整第2版DSP教程,准备研究个修正方案。

要做修正?不太明白,刚接触FFT
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-9-18 00:16:20 | 显示全部楼层
whyil 发表于 2019-9-17 20:46
要做修正?不太明白,刚接触FFT

主要表现在你计数出来的初始相位,与你cos(2*pi*5*t+pi/3)的初始相位相差甚远。

度娘关键词 : FFT相位修正
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2019-9-18 10:58:12 | 显示全部楼层
eric2013 发表于 2019-9-18 00:16
主要表现在你计数出来的初始相位,与你cos(2*pi*5*t+pi/3)的初始相位相差甚远。

度娘关键词 : FFT相 ...

fft后的相位图,有些不理解
https://www.ilovematlab.cn/thread-528420-1-1.html
(出处: MATLAB中文论坛)

我从这个帖子中对相位图做了下处理

结果如下图所示,在5Hz处的相位是与信号的相位是一致的为60°,为啥在在251Hz处的相位为-60度啊?
TIM截图20190918105606.png

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-9-18 11:33:55 | 显示全部楼层
whyil 发表于 2019-9-18 10:58
fft后的相位图,有些不理解
https://www.ilovematlab.cn/thread-528420-1-1.html
(出处: MATLAB中文论 ...

他们这个处理办法好溜,直接将幅值比较小的去掉,的确是好办法。


这里可以将你求出正负60°的所对应数值的实部和虚部值分别打印出来看下。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2019-9-18 13:12:07 | 显示全部楼层
如果打印出来的没有问题,那说明FFT求出的相位就是这样的,前半轴和后半周是翻转的。
回复

使用道具 举报

2

主题

14

回帖

20

积分

新手上路

积分
20
发表于 2019-9-30 16:38:41 | 显示全部楼层
由于采样序列很难做到整数周期截断需要加窗插值
回复

使用道具 举报

0

主题

77

回帖

77

积分

初级会员

积分
77
发表于 2020-5-10 16:25:57 | 显示全部楼层
whyil 发表于 2019-9-18 10:58
fft后的相位图,有些不理解
https://www.ilovematlab.cn/thread-528420-1-1.html
(出处: MATLAB中文论 ...

楼主,你好。请问一下怎么用FFT算相位?没有看明白你是怎么算的。我用你贴的这段代码实测了一下(单片机AD外部接了一个正弦信号发生器),计算的其它的数据,如fft_temp,mag_temp, mul_temp倒是看上去都是正弦波形。但phase_tem全部是0呢?

还望楼主帮忙指点一下。谢谢。
回复

使用道具 举报

0

主题

77

回帖

77

积分

初级会员

积分
77
发表于 2020-5-10 16:27:09 | 显示全部楼层
whyil 发表于 2019-9-18 10:58
fft后的相位图,有些不理解
https://www.ilovematlab.cn/thread-528420-1-1.html
(出处: MATLAB中文论 ...

另外,再请教一个问题。采样数据只有正半周(馒头波)能用FFT计算吗?
回复

使用道具 举报

0

主题

77

回帖

77

积分

初级会员

积分
77
发表于 2020-5-12 15:34:41 | 显示全部楼层
JimmyKudo 发表于 2019-9-30 16:38
由于采样序列很难做到整数周期截断需要加窗插值

你好,能讲一下怎么加窗吗?谢谢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2020-5-12 15:56:47 | 显示全部楼层
艾那的小强 发表于 2020-5-10 16:25
楼主,你好。请问一下怎么用FFT算相位?没有看明白你是怎么算的。我用你贴的这段代码实测了一下(单片机A ...

怎么会全是是0呢,你求的有问题吧。。。

先把实部和虚部打印出来看下。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2020-5-12 15:57:29 | 显示全部楼层
艾那的小强 发表于 2020-5-10 16:27
另外,再请教一个问题。采样数据只有正半周(馒头波)能用FFT计算吗?

能,只要是波形就能求FFT,只是FFT比较适合用于周期性波形。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2020-5-12 16:01:05 | 显示全部楼层
艾那的小强 发表于 2020-5-12 15:34
你好,能讲一下怎么加窗吗?谢谢。

对原始数据加窗即可。

我们通常的数据采集就是默认的矩形窗。

其它hanning窗等,自己百度解决下即可。
回复

使用道具 举报

0

主题

77

回帖

77

积分

初级会员

积分
77
发表于 2020-5-12 17:02:23 | 显示全部楼层
eric2013 发表于 2020-5-12 16:01
对原始数据加窗即可。

我们通常的数据采集就是默认的矩形窗。

谢谢硬汉哥。
回复

使用道具 举报

0

主题

77

回帖

77

积分

初级会员

积分
77
发表于 2020-5-12 17:14:02 | 显示全部楼层
eric2013 发表于 2020-5-12 15:56
怎么会全是是0呢,你求的有问题吧。。。

先把实部和虚部打印出来看下。

确实求错了。现在不是全0。但是是一个很奇怪的形状
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2020-5-12 17:16:18 | 显示全部楼层
艾那的小强 发表于 2020-5-12 17:14
确实求错了。现在不是全0。但是是一个很奇怪的形状

求的也没问题的,赋值比较小的频率求相位是没有价值的,要首先抛弃掉。

等我近期更新第2版DSP教程时发布案例和配套代码,参考即可。
回复

使用道具 举报

0

主题

77

回帖

77

积分

初级会员

积分
77
发表于 2020-5-12 18:54:44 | 显示全部楼层
eric2013 发表于 2020-5-12 17:16
求的也没问题的,赋值比较小的频率求相位是没有价值的,要首先抛弃掉。

等我近期更新第2版DSP教程时发 ...

谢谢班主。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 23:45 , Processed in 0.222156 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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