总结一下FFT和维纳辛钦定理求解PSD的问题-功率谱图.rar
早上在论坛上问了两个问题,
一个是关于FFT求频谱时纵坐标的值问题
https://www.ilovematlab.cn/thread-27092-1-1.html
还有一个是用维纳辛钦定理求解PSD时出现的问题
https://www.ilovematlab.cn/thread-27133-1-1.html
经过达人们的指点,和自己的总结,获得一点心得,在这里与大家分享一下:)
1.FFT求频谱
[CODE]
Fs = 40;
n = 0:1/Fs:159*1/Fs;
x = sin sin;
N = length;
X = fftshift);
Px1 = X.*conj/N;
plot*Fs/N,Px1);
grid on;
axis
title;
首先,fftshift的问题,以前上数字信号处理时,老师专门给提出了这个函数,但是我发现论坛里好多不太明白这个函数意义的,OO~,一般,fft得到的是频谱范围在【0-2*pi】范围内的频谱,以高频pi为中心,但是一般使用过程中,使用的频谱习惯以低频0为中心,fftshift的功能就是将频谱进行移位,使之在【-pi,pi】之间;
另外,纵坐标的问题,版主edifier2008提示说用/N的方法归一化,我试了一下,每次采样长度变大时,纵坐标的整体值都会变大,/N之后,值变为1之内了,但是并不是理论算法中得到的1.
图形如下:
fft.jpg
fft
2.维纳辛钦定理求解功率谱的问题
[CODE]
Fs = 40;
n = 0:1/Fs:159*1/Fs;
x = sin sin;
N = length;
Rx = xcorr;
Px2 = fftshift);
plot*Fs/,abs);
grid on;
axis
title;
图形如下:
fftwei.jpg
程序中可以看出,也要使用fftshift对fft得到的频谱进行移位以得到以低频0为中心的频谱,另外,得到的功率谱纵轴值特别大,是不是也需要除以采样长度,我试了一下,仍然是很大,个人认为,在MATLAB中计算自相关函数以及计算FFT时,都没有对加和进行归一,将/N这一个系数可能都给省略掉了。
此外,我在很多教材里面看了不少里面的例题,都没有注意纵轴值的问题,我觉得在进行频谱分析,重点在于频率点,以及相近频率点的谱图是不是能够分辨出来,而对于各谱的大小,有个相对的比较即可。
不当之处,还望大家给与指正,:) :victory:
2021-07-12 08:48:42
13KB
matlab
1