声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1526|回复: 6

[综合] 关于功率谱和频谱的幅值的问题

[复制链接]
发表于 2014-10-2 20:02 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 小海豚zc 于 2014-10-2 20:04 编辑

恳请各位高手帮我解答一下这几个问题:
1、功率谱 幅值的意义
2、功率谱和频谱的关系,尤其数学关系

我现在需要的是 “等带宽分析得到的功率谱”,需要对这个功率谱进行频域的计权,所以其幅值的准确与否关系重大。网上搜过一些求功率谱的方法,我最后改写了一下,有三种方式的功率谱是近似相等的。但是这是不是我需要的那个“等带宽分析得到的功率谱”?
我的程序如下




  1. clear;clc;
  2. Fs=1000;%采样频率
  3. N=1000;%采样点数 Fs/N=t(采样总时间)
  4. %频率分辨率=Fs/N需满足关注频率为频率分辨率的整数倍
  5. n=0:1/Fs:(Fs/N-1/Fs);
  6. xn=cos(2*pi*40*n)+3*cos(2*pi*100*n)+5*cos(2*pi*150*n)+rand(size(n));%数据
  7. ff=n(1:N/2)*Fs;
  8. subplot(421),plot(n,xn),title('时域图');
  9. xlabel('时间');
  10. ylabel('幅值');

  11. %%fft
  12. y=fft(xn,N);
  13. y1=abs(y)*2/N;
  14. plot_y=y1(1:(N/2));
  15. %ploty2=plot_y/sqrt(2);
  16. subplot(422),plot(ff,plot_y),title('频谱图(FFT)');
  17. %hold on;stem(ff,plot_y,'r');
  18. xlabel('频率/Hz');
  19. ylabel('幅值');

  20. %power spectrum(间接法)
  21. %nfft=1024;%index=0:round(nfft/2-1);%k=index*Fs/nfft;
  22. cxn=xcorr(xn,'coeff'); %计算序列的自相关函数
  23. %xcorr(,'')中''内缺省or unbiased or biased or coeff
  24. CXk=fft(cxn,N);
  25. Pxx=abs(CXk);
  26. plot_Pxx=10*log10(Pxx(1:N/2));
  27. subplot(423),plot(ff,plot_Pxx),title('间接法(自相关函数法)功率谱');
  28. xlabel('频率/Hz');
  29. ylabel('功率谱密度');

  30. %power spectrum(直接法)
  31. window=boxcar(length(xn)); %矩形窗
  32. %nfft=1024;
  33. [Pxx,f]=periodogram(xn,window,N,Fs); %直接法
  34. subplot(424),plot(ff,Pxx(1:N/2)),title('直接法(periodogram)功率谱');
  35. xlabel('频率/Hz');
  36. ylabel('功率谱密度');

  37. %welch method
  38. window=boxcar(length(xn)); %矩形窗
  39. noverlap=20; %数据无重叠
  40. range='half'; %频率间隔为[0 Fs/2],只计算一半的频率
  41. [Pxx,f]=pwelch(xn,window,noverlap,N,Fs,range);
  42. %plot_Pxx=10*log10(Pxx);
  43. subplot(425),plot(f,Pxx),title('welch法功率谱');


  44. %Barlett method
  45. window=boxcar(length(n)); %矩形窗
  46. noverlap=0; %数据无重叠
  47. p=0.9; %置信概率
  48. [Pxx,Pxxc]=psd(xn,N,Fs,window,noverlap,p);
  49. %plot_Pxx=10*log10(Pxx);  
  50. subplot(426),plot(Pxxc,Pxx/N*2),title('barlett法功率谱');
复制代码


回复
分享到:

使用道具 举报

发表于 2014-10-2 21:22 | 显示全部楼层
我说过多次,频谱是表示周期函数的(你例中的正弦部分),而PSD是表示随机函数的(你例中的随机部分).不同的东西,中间没有转换关系.企图找出转换关系是误入歧途!
 楼主| 发表于 2014-10-3 09:20 | 显示全部楼层
本帖最后由 小海豚zc 于 2014-10-3 09:21 编辑

您的意思是 周期函数没有功率谱?随机函数没有频谱? 不太清楚您的意思。那功率谱的幅值的物理意义是什么?
还有 我最想知道的是“等带宽分析得到的功率谱”,我上边做的不知道对不对?
发表于 2014-10-3 15:44 | 显示全部楼层
本帖最后由 hcharlie 于 2014-10-3 15:50 编辑
小海豚zc 发表于 2014-10-3 09:20
您的意思是 周期函数没有功率谱?随机函数没有频谱? 不太清楚您的意思。那功率谱的幅值的物理意义是什么? ...

功率谱的概念是模糊的,我只讲功率谱密度PSD,它只定义在随机函数中;
PSD值的物理意义,单位频率宽度范围内的能量.
在工程中,只能求出随机信号PSD的估计值,而不能得到其精确值.随机随机,就是变化莫测.
要得到比较精确的工程数值,你的各种方法(只求一次而不是多次平均)都不行,必需要多次平均(比如32~100次).
通用简单的方法是PSD=物理谱绝对值平方/2DF
再按谱线多次平均!!!


 楼主| 发表于 2014-10-3 16:12 | 显示全部楼层
hcharlie 发表于 2014-10-3 15:44
功率谱的概念是模糊的,我只讲功率谱密度PSD,它只定义在随机函数中;
PSD值的物理意义,单位频率宽度范围内 ...

那为什么周期图法(及其改进法)和自相关函数法得到的功率谱密度的幅值不同呢?
还有什么是等带宽分析呢?
麻烦您再给我解释一下吧

我之所以关注幅值是 因为我做的东西要用到对功率谱密度的频率计权
 楼主| 发表于 2014-10-3 16:17 | 显示全部楼层

                               
登录/注册后可看大图


这张图就是我要计权的东西
发表于 2014-10-3 20:39 | 显示全部楼层
本帖最后由 hcharlie 于 2014-10-4 08:20 编辑

你没有给出各种方法的结果图.我认为比较各种方法的PSD相同与否,不能就你的COS函数(周期函数)的峰值点去比较,而应该比较Rand随机部分,因为PSD只定义于随机部分,而且也应该知道你的正确值是多少,否则没有基准怎么知道谁正确呢?Rand部分随机PSD 的比较一定要多次平均.
所谓你说的等带宽分析,我觉得这是模拟分析方法中的术语,不象数字分析的术语.
我在下面的贴子里提供有已知标准PSD答案的随机数据,用这些数据去验证你的各种方法,看看哪个正确.
请注意一定要多次平均哟!
http://forum.vibunion.com/thread-132992-1-1.html
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-7-7 20:28 , Processed in 0.104615 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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