查看: 707|回复: 10|关注: 0

[已解决] 求信号在时域和频域的能量

[复制链接]

新手

7 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
请问各位大佬,如何在MATLAB中证明帕萨瓦尔定理呢?怎么求信号在时域和频域的能量呢?

论坛优秀回答者

入门

488 麦片

财富积分


50500


9

主题

494

帖子

57

最佳答案
  • 关注者: 25
发表于 2018-10-11 17:31:51 | 显示全部楼层 |此回复为最佳答案
parseval‘s theorem: sum(x.^2) = 1/N*sum(xfft.^2).其中x是原数据,xfft是fft后的数据,N是数据的长度。

可以通过下面这个简单程序验证:
clear all;
rng default;
f = 50;
fs = 200;
dt = 1/fs;
t = 0:dt:1-dt;
y = sin(2*pi*f*t);
figure
plot(y)

N = length(t);
df = fs/N;
f = 0:df:fs/2;

yfft = fft(y,N);
ymag = abs(yfft);

sum(y.^2)
sum(ymag.^2)/N

新手

7 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2018-10-11 17:48:52 | 显示全部楼层
ukjames 发表于 2018-10-11 17:31
parseval‘s theorem: sum(x.^2) = 1/N*sum(xfft.^2).其中x是原数据,xfft是fft后的数据,N是数据的长度。 ...

您好,请问为什么修改了FFT的点数,结果就不一样了呢?

入门

66 麦片

财富积分


50500


9

主题

169

帖子

12

最佳答案
  • 关注者: 5
发表于 2018-10-11 17:51:06 | 显示全部楼层
ukjames 发表于 2018-10-11 17:31
parseval‘s theorem: sum(x.^2) = 1/N*sum(xfft.^2).其中x是原数据,xfft是fft后的数据,N是数据的长度。 ...

受教了~~~~

论坛优秀回答者

入门

488 麦片

财富积分


50500


9

主题

494

帖子

57

最佳答案
  • 关注者: 25
发表于 2018-10-11 18:01:17 | 显示全部楼层
本帖最后由 ukjames 于 2018-10-11 10:08 编辑
Bao_Peng 发表于 2018-10-11 09:48
您好,请问为什么修改了FFT的点数,结果就不一样了呢?

N是数据的长度,由采样频率决定的,如果你在频率改变了N值,那么自然结果就不等,但是你会发现他们会成倍数关系,比如例子中N = 50后,时域为100保持不变,但是频域就变为25了。你会发现时域长度为200,倍数为4,parseval后也是4倍的关系。这个你得具体看parseval的定义,里面对时域和频率里数据长度有要求的。

论坛优秀回答者

入门

488 麦片

财富积分


50500


9

主题

494

帖子

57

最佳答案
  • 关注者: 25
发表于 2018-10-11 18:11:18 | 显示全部楼层
Bao_Peng 发表于 2018-10-11 09:48
您好,请问为什么修改了FFT的点数,结果就不一样了呢?

这是parseval定义,看公式。
parseval.png

新手

7 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2018-10-11 19:28:17 | 显示全部楼层
ukjames 发表于 2018-10-11 18:01
N是数据的长度,由采样频率决定的,如果你在频率改变了N值,那么自然结果就不等,但是你会发现他们会成倍 ...

嗯嗯 非常感谢:loveliness:

新手

7 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2018-10-11 19:31:58 | 显示全部楼层
ukjames 发表于 2018-10-11 18:11
这是parseval定义,看公式。

谢谢:loveliness:

新手

7 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2018-10-11 20:04:15 | 显示全部楼层
ukjames 发表于 2018-10-11 18:01
N是数据的长度,由采样频率决定的,如果你在频率改变了N值,那么自然结果就不等,但是你会发现他们会成倍 ...

不好意思,我按您说的做,为什么我求出的结果还是不对呢?能不能麻烦您帮忙看一下我错在哪儿了?
  1. clear all
  2. clc
  3. close all

  4. f0=200e6;
  5. B=20e6;
  6. fL=f0-B/2;
  7. fH=f0+B/2;
  8. Fs=2*fH;

  9. TimeWidth=5e-5;
  10. Snap_num=fix(TimeWidth*Fs);
  11. mu=B/TimeWidth;
  12. t=0:1/Fs:(Snap_num-1)/Fs;

  13. st=1/sqrt(TimeWidth)*exp(1j*pi*mu*t.^2);

  14. Nfft=length(t);
  15. yt=fft(st,Nfft);

  16. a=sum(abs(st).^2)
  17. b=sum(abs(yt).^2)

复制代码

求出的结果是这样的:
a =

   420000000


b =

   8.8200e+12

新手

7 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
 楼主| 发表于 2018-10-11 20:36:49 | 显示全部楼层
Bao_Peng 发表于 2018-10-11 20:04
不好意思,我按您说的做,为什么我求出的结果还是不对呢?能不能麻烦您帮忙看一下我错在哪儿了?
求出的 ...

刚刚发现,我频域能量没有除以NFFT,可是为什么要除以NFFT呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

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