解释MATLAB谱图中的S和P.

时间:2016-06-23 00:30:30

标签: matlab matlab-figure

我一直在努力更好地理解MATLAB的spectrogram()

的以下用法
[S,F,T,P] = spectrogram(x,window,noverlap,f,fs)

假设x是真实的。根据我的理解,Px的PSD估算值(相当于使用pwelch()?),而S的列是{{1}的汉明窗口的STFT }}。 x似乎与P的平方根成正比。

这个比例因素来自哪里? SP的“单位”分别是什么?

2 个答案:

答案 0 :(得分:0)

我查看了MATLAB文档中的spectrogram

但是频谱图是2D功能,时间和频率。 S代表频率向量T上频率的时间向量样本W的DFT。
由于您使用Window,因此结果是窗口时间样本。

P向量用于相同窗口样本和频率上的PSD(平方绝对值S)。

答案 1 :(得分:0)

正如你所提到的,S是窗口x的STFT,P是PSD。

P可由S计算。

您可以在此处找到计算背景。 here

以下示例显示如何从S计算P。

t = 0:0.001:2;
x = chirp(t,0,1,150); % 2 second chirp signal

nfft=256;

cFactor=0.3974; % Noise gain of hamming window

[S,F,T,P] = spectrogram(x,nfft,100,nfft,1e3); % S is STFT of hamming windowed signal

fbin=F(2)-F(1); %Frequency resolution

nS=(1/(2*(nfft/2+1)))*S; % normalizing by length of S

Pxx=2*(1/fbin)*(1/cFactor)*nS.*conj(nS);  %PSD of AC value

Pxx(1,:)=(1/fbin)*(1/cFactor)*nS(1,:).*conj(nS(1,:)); %PSD of DC value

这里,Pxx变量与P变量相同。

您可以使用下图

查看结果
figure(1)
subplot(2,1,1)
waterfall(F,T,P')
xlabel('frequency(Hz)')
ylabel('time(sec)')

figure(1)
subplot(2,1,2)
waterfall(F,T,real(Pxx)')
xlabel('frequency(Hz)')
ylabel('time(sec)')

Pwelch函数也给出PSD和计算方法与谱图相同,除了对所有STFT进行平均。

如果您使用pwelch函数以相同的方式使用上部示例,您将找到所有STFT段的平均图。

请尝试下面带有相同信号的代码,看看pwelch是如何工作的。

t = 0:0.001:2;
x = chirp(t,0,1,150); % 2 second chirp signal

nfft=256;
[P,F] = pwelch(x,nfft,100,nfft,1e3); 

figure(2)
plot(F,P)
xlabel('frequency(Hz)')

在图(2)中,您将看到图(1)瀑布图的平均图。

关于S和P的单位,

S没有单位,因为DFT不关心单位。

P是每Hz时间信号的均方根值的平方。

如果时间信号单位为Volt(V),则P的单位为Vrms ^ 2 / Hz。