0
我正在写一些读取wav声音文件的MATLAB代码,然后对收到的信号进行傅里叶变换。我试图在声音的1秒段中找到声音中的频率(应该在1000-4000hz左右),但是我的文件将我的频率返回到接近500Hz或更低的频率。在matlab中查找傅里叶变换的一秒样本
我的代码将信号分成几秒钟,然后每秒钟进行傅立叶变换。 (我的声音文件中有大约15秒)。
Fs是采样率。 L是样品
[signal, Fs, bits] = wavread ('sound.wav');
L=length(signal);
f=Fs*linspace(0,1,L/2+1);
one_sec_sample=zeros(Fs,15);
Y_code = zeros(Fs,15);
for i=1:15
one_sec_sample(:,i) = signal(((i-1)*Fs+1):(i*Fs));
Y_code(:,i) = fft(one_sec_sample(:,i));
end
figure (1);
%plotting 1 second of the transform. Fs is 16000 for my sound.
plot(f(1:16000),abs(Y_code(1:16000)));
当我绘制文件的任何第二长度,所述频率不是一样大,因为它们应该是。我认为我的索引可能是错的,但我找不到错过的位置。
您可能会发现使用'periodogram'而不是'fft'更容易。 –