我正在学习音频处理技术,并且一直在使用频谱图进行分析。现在,我认为频谱图的结果将是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矩阵。有谁知道为什么函数会截断每个窗口的长度?
答案 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,这就是你得到的。