对功率谱的一点理解

[复制链接]
1420|6
 楼主| gaoyang9992006 发表于 2016-10-24 19:49 | 显示全部楼层 |阅读模式
下面的matlab程序分别使用周期图法、相关函数法以及AR谱方法计算信号的功率谱
  1. % power spectrum estimated
  2. clear all;
  3. clc;
  4. close all;

  5. Fs=1000;       % 采样频率
  6. nfft = 1024;   % fft计算点数

  7. %产生含有噪声的序列
  8. n=0:1/Fs:1;
  9. xn=cos(2*pi*100*n)+3*cos(2*pi*200*n)+(2*randn(size(n)));
  10. subplot(2,2,1);plot(xn);title('加噪信号');grid on

  11. % 周期图法
  12. window=boxcar(length(xn)); %矩形窗
  13. [psd1,f]=periodogram(xn,window,nfft,Fs); %直接法
  14. psd1 = psd1 / max(psd1);
  15. subplot(2,2,2);plot(f,10*log10(psd1+0.000001));title('周期图法');grid on

  16. % 自相关法
  17. cxn=xcorr(xn,'unbiased'); %计算序列的自相关函数
  18. CXk=fft(cxn,nfft);
  19. psd2=abs(CXk);
  20. index=0:round(nfft/2-1);
  21. k=index*Fs/nfft;
  22. psd2 = psd2 / max(psd2);
  23. psd2=10*log10(psd2(index+1)+0.000001);
  24. subplot(2,2,3);plot(k,psd2);title('自相关法');grid on

  25. % AR谱
  26. psd3 = pyulear(xn, Fs, nfft);
  27. psd3=psd3/max(psd3);
  28. psd3 = psd3 / max(psd3);
  29. index=0:round(nfft/2-1);
  30. psd3=10*log10(psd3(index+1)+0.000001);
  31. subplot(2,2,4);plot(k, psd3);title('AR谱估计');grid on;

 楼主| gaoyang9992006 发表于 2016-10-24 19:50 | 显示全部楼层
psd.png
现在就此来说是关于功率谱的几点理解:
  • 功率谱的数据都是相对值,他无法给出信号的实际绝对幅值,一般只要看峰值之间的比值就行了,也可以对数据归一化
  • 功率谱中的峰值代表的是信号中的周期成分,隐含的周期信号能量要比随机信号大(这个一般能理解的)。比如,上面xn是
    xn=cos(2*pi*100*n)+3*cos(2*pi*200*n)+(2*randn(size(n)));
    其周期包括200Hz及100Hz,200Hz的幅值比100Hz大,再看功率谱图中,清晰的体现了信号中含有200Hz和100Hz的信号。
  • 直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序列x(n)真实功率谱的估计
  • 间接法先由序列x(n)估计出自相关函数R(n),然后对R(n)进行傅立叶变换,便得到x(n)的功率谱估计
  • 直接采用平均周期图法求功率谱时,功率普形状呈锯齿形,谱峰点的准确位置不大好定。于是可以采用其他的方法对谱进行平滑操作,平滑化,仅仅是为了使图形光滑,并不会使得波的本质受到歪曲和畸变。反过来说,由于不纯的东西去掉了,本质的东西必然会更加显示出来!平滑化的程度可以根据所分析的信号,选择合理的窗函数和带宽!
  • 平均周期图法和其他方法求出的结果,参数条件取得一样的话,可以得到完全相同的结果。

shenlongmingxia 发表于 2016-11-10 11:10 | 显示全部楼层
本帖最后由 shenlongmingxia 于 2016-11-10 11:17 编辑

直接复制你的程序,运行出错!
??? Error using ==> power
Matrix dimensions must agree.



逐一调试一下,程序没有问题
文件名中空格导致出错

shenlongmingxia 发表于 2016-11-10 11:44 | 显示全部楼层
谢谢,学习并收藏程序了!
 楼主| gaoyang9992006 发表于 2016-11-10 15:11 | 显示全部楼层
shenlongmingxia 发表于 2016-11-10 11:44
谢谢,学习并收藏程序了!

不客气,谢谢支持
wf.yang 发表于 2016-11-11 21:21 | 显示全部楼层
一个具体的信号,它的功率谱密度函数,应该是确定的、唯一的。

功率谱密度函数应该具有“绝对”的意义,不应该仅存在“相对”的意义。
nethopper 发表于 2017-4-15 20:48 | 显示全部楼层
有了FFT后,用间接法的应该很少,相反用功率谱反推自相关的更多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部