我在理解钢琴音符FFT
(A1, f=55 Hz
)的输出时遇到了一些麻烦。
我原本希望在55 Hz
处获得“强”频率,但是相反,我在220 Hz
处获得“强”频率,这与A3
相对应,向上增加了两个 Octave 。
这是我正在使用的代码:
[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以某种方式“忽略”了低频。
有FFT:
这是FFT放大:
有人知道为什么会这样吗?
谢谢。
最佳答案
您仅发现有些钢琴会产生几组强谐波泛音,而基频频谱有时会很弱(效果可能是由弦的直径和刚度,音板共振能量交换或麦克风响应和放置引起的)。
一些有关乐器物理学和人类听觉心理声学的阅读可能会有所帮助。
关于matlab - 使用MATLAB检测钢琴音符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50178115/