为什么谱图的结果矩阵不具有所选窗口的长度?

时间:2016-09-03 22:35:36

标签: matlab

我正在学习音频处理技术,并且一直在使用频谱图进行分析。现在,我认为频谱图的结果将是M×N矩阵,其中M是窗口长度,N是窗口的数量。然而,频谱图函数返回的长度与我预期的长度不同:

data = [...]; % the data, a 1 x 9171 array

wdw = 160; %  window size

overlap = 80; % window overlap

numWindows = floor(length(data)/(wdw - overlap)) - 1; % returns 113 as expected

nfft = 256; % fft size

Fs = 16000; % sample freq

s = spectrogram(data,hamming(wdw),overlap,nfft,Fs);

s返回129 x 113矩阵,而我期望一个160 x 113矩阵。有谁知道为什么函数会截断每个窗口的长度?

1 个答案:

答案 0 :(得分:2)

我不认为S会返回您认为会返回的内容。来自文档:

  

S的每一列包含短期估计,时间本地化       信号X的频率内容。列之间的时间增加       S,从左到右。开始时频率从行开始增加       如果X是长度NX复合信号,则S是复数矩阵       NFFT行和k = fix((NX-NOVERLAP)/(length(WINDOW)-NOVERLAP))列。       对于实数X,如果NFFT为偶数,则S具有(NFFT / 2 + 1)行,并且(NFFT + 1)/ 2行       如果NFFT是奇数。

129是256/2 + 1,这就是你得到的。