我试图通过使用存在于MATLAB
. 我只是复制粘贴了数学函数的 FFT 代码,并用音频文件替换了该函数。
Fs = 44100; % Sampling frequency
T = 1/Fs; % Sample time
L = 1000; % Length of signal
t = (0:L-1)*T; % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
y = wavread('c-note2.wav');
plot(Fs*t(1:50),y(1:50))
xlabel('time (milliseconds)')
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
在这里,y=wavread('c-note2.wav')
我们有类似y=0.15sin(5x)+0.32cos(50t)+rand(I)
(给信号添加噪声)的东西,而不是 。
我们正在尝试做的事情是否正确?我们可以用 wavread 代替数学信号吗?
从获得的图表中,我想获得 的峰值频率c-note
并检查它是否与 a 的实际频率匹配c-note
,但我得到的结果很荒谬。