У меня возникли проблемы с пониманием вывода FFT
фортепианной ноты (A1, f=55 Hz
).
Я ожидал получить "сильную" частоту на 55 Hz
, но вместо этого я получаю "сильную" частоту на 220 Hz
, что соответствует A3
, на две октавы вверх.
Это код, который я использую:
[audio,fs] = audioread('a1.wav');
audio = audio(:,1)./max(audio(:,1));
dt = 1/fs;
t = linspace(0, length(audio)/fs, length(audio));
T = max(t);
fftAudio = fftshift(fft(audio));
mfft = abs(fftAudio);
pfft = angle(fftAudio)*(180/pi);
f = linspace(-fs/2,fs/2,length(fftAudio));
%%
figure,plot(f,mfft,'m.-'),grid on
xlim([0 fs/2])
Либо я делаю что-то не так, как-то MATLAB "игнорирует" низкие частоты.
Там БПФ:
![enter image description here](https://i.stack.imgur.com/uGydH.png)
Это увеличение БПФ:
![FFT](https://i.stack.imgur.com/yOMfe.png)
Кто-нибудь знает, почему это происходит?
Спасибо.