声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10200|回复: 10

[FFT] matlab中pwelch函数的功率谱结果还需要修正吗?

[复制链接]
发表于 2012-10-22 21:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
       最近用pwelch函数做信号功率谱,发现窗长的改变影响pwelch函数结果中的线谱幅度,例如:生成一个正弦信号,用pwelch函数求出正弦信号的功率谱,当改变fft长度(即窗长)时,正弦的线谱幅度也会随之改变。这使我对pwelch函数的准确性产生质疑。
       个人理解,功率谱已经与时间长度无关了,功率是单位时间的能量嘛。
        因此想在这里提出以下问题:
        1)pwelch函数得到的功率谱结果是否还需要进一步修正?
        2)如果不再需要修正,那pwelch函数得到的功率谱幅值随fft窗长的改变而改变是正确的吗?其中的原因是什么?
回复
分享到:

使用道具 举报

发表于 2012-10-25 22:45 来自手机 | 显示全部楼层
我也关注这个问题,但也一直未得到解决,pwelch计算功率谱比较复杂,利用调用许多子函数而来的,而以前的psd函数计算功率谱则比较简单,只是fft后的幅值平方,再根据窗函数的功率系数修正幅值后得到的。
不过许多情况下关心的是功率谱的相对幅值,绝对幅值不是很有意义
发表于 2012-11-12 14:54 | 显示全部楼层
学习下····
发表于 2012-11-12 23:28 | 显示全部楼层
pwelch的计算过程应该说还是比较简单的,和信号处理树上的推导一致,可以用fft实现一下,就是能量在频率范围内的平均,我认为可以代表谱密度的概念,应该是不需要修正的

但是让我很迷惑的是几种算法,在幅值上的巨大差异如:periodgram和直接进行fft都不同有点崩溃
clear all

clc



fs=8000;

t=0:1/fs:1-1/fs;

x=sin(2*pi*600*t)+cos(2*pi*1000*t);

%------------pwelch算法----------------

%已经做过用fft来做Pwelch可以做到完全一致

% nfft=1024;

% window=hamming(nfft);

% [Pxf]=pwelch(x,window,[],'onesided',nfft,fs);

% Px1=10*log10(Px);

% figure; plot(f,Px1);hold on

%-------FFT法-------------------------

nfft=8192;

nfft1=nfft/2+1;

N=length(x);

Pxx=abs(fft(x,nfft)).^2/N;

Pxx(1)=Pxx(1)/2;

Pxx(nfft1)=Pxx(nfft1)/2;

Pxx1=10*log10(Pxx);

f1=(1:length(Pxx))/nfft*fs;

figure;plot(f1(1:nfft1),Pxx1(1:nfft1),'r');holdon

grid on

%--------周期图-----------------------

window=boxcar(length(x));

[Pxx2 f2]=periodogram(x);

Pxx2=10*log10(Pxx2);

plot(f2/pi*fs/2,Pxx2,'g');



figure

error=Pxx1(1:nfft1).'-Pxx2;

plot(error);
发表于 2013-1-24 16:20 | 显示全部楼层

您好!请问如何用matlab画功率谱图,地震动函数模型图,结构的抗震方面的,谢谢您啊!或者可以推荐下有关的书籍!祝您天天好心情!

点评

参考这个 http://forum.vibunion.com/forum.php?mod=viewthread&tid=139066&highlight=%B9%A6%C2%CA%C6%D7  详情 回复 发表于 2016-8-9 08:15
发表于 2013-1-25 10:57 | 显示全部楼层
清晨露珠 发表于 2013-1-24 16:20
您好!请问如何用matlab画功率谱图,地震动函数模型图,结构的抗震方面的,谢谢您啊!或者可以推荐下有关 ...

一般情况下直接用matlab自带的pwelch函数,也可以自己编程计算,功率谱其实就是幅值谱的平方,不过要注意一下多次平均,也没注意过地震方面相关书籍,不是这一行的
 楼主| 发表于 2013-1-29 20:47 | 显示全部楼层
谢谢楼上各位的关注!期待有行家解答。
发表于 2013-1-30 08:58 | 显示全部楼层
zengwj0423 发表于 2013-1-25 10:57
一般情况下直接用matlab自带的pwelch函数,也可以自己编程计算,功率谱其实就是幅值谱的平方,不过要注意 ...

恩,好的,很高兴能够收到您的答复!对我很有帮助!谢谢!祝你一生好运相伴~!
发表于 2016-8-8 23:41 | 显示全部楼层
huoran11 发表于 2012-11-12 23:28
pwelch的计算过程应该说还是比较简单的,和信号处理树上的推导一致,可以用fft实现一下,就是能量在频率范 ...

大神,请问你们求完功率谱密度都不检验么?尤其是自功率谱是由自相关函数得到,所以红噪音检验需要吧?可是这个pwelch里并不涉及检验的输入和输出参数啊。
发表于 2016-8-9 08:15 | 显示全部楼层
清晨露珠 发表于 2013-1-24 16:20
您好!请问如何用matlab画功率谱图,地震动函数模型图,结构的抗震方面的,谢谢您啊!或者可以推荐下有关 ...

参考这个
http://forum.vibunion.com/forum. ... =%B9%A6%C2%CA%C6%D7
发表于 2016-8-9 09:39 | 显示全部楼层
本帖最后由 hcharlie 于 2016-8-9 09:55 编辑
menmen 发表于 2013-1-29 20:47
谢谢楼上各位的关注!期待有行家解答。


问题提了几年了,没有见到正确的回答!
问题错在什么地方呢?就错在用正弦函数去验证PSD。
PSD只是定义在稳态随机信号(白噪声)中;
正弦信号,周期信号没有PSD的定义,正弦信号的功率谱密度PSD在其频率上是无穷大,其它频率处是零,所以一做就错!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-3-29 04:19 , Processed in 0.070426 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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