2016-09-03 38 views
0

我正在学习音频处理技术,并一直在使用光谱图进行分析。现在,我会认为谱图的结果是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); 

小号回报作为129 X 113矩阵,而我期望一个160×113矩阵。有谁知道为什么函数会截断每个窗口的长度?

回答

2

我不认为S回报你认为它返回。从文档:

S的各列包含该短期的估计,时间局部化的信号X.时间增加 频率内容跨各列S的 ,从左到右。频率增加向下的行,开始 为0。如果X是一个长度NX复数信号,S是 NFFT行k =修复((NX-NOVERLAP)/(长度(WINDOW)-NOVERLAP))列的复数矩阵。 对于真实X,S具有(N FFT/2 + 1)行,如果N FFT是偶数,和(N FFT + 1)/ 2行 如果NFFT为奇数。

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

+0

感谢您的见解! –

+0

为什么你总是期待160? 160只是你窗户的大小。由于这个尺寸和重叠,你会得到一些等于113的“窗口”。对于每个这样的“窗口”,你都可以得到它的频率内容,用256点的“频率分辨率”表示。 它已经有一段时间,因为我已经经历了谱,但是,“除2艘”商大概有围绕0轴 –

+0

我在想,这将是执行'FFT傅立叶频谱对称做(windowArray )',并且我知道'fft(X)'返回一个与'X'大小相同的数组,但是正如你指出它正在执行'fft(X,n)'。我很熟悉在找到信号的单侧谱时谱的减半。 –

相关问题