小编yun*_*una的帖子

如何在MATLAB中使用fft从录制的声音中消除噪音?

我想要从录制的声音中消除噪音,并使它的fft找到该声音的基本频率,但我不知道如何消除这些噪音.我正在录制不同高度坠落物体的声音.我想找到录制声音的高度和最大频率之间的关系.

  [y,fs]=wavread('100cmfreefall.wav');

 ch1=y(:,1);
 time=(1/44100)*length(ch1);
t=linspace(0,time,length(ch1));


L=length(ch1);
 NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
Y1=log10(Y);
figure(1)

f = fs/2*linspace(0,1,NFFT/2+1);
plot(f,2*abs(Y1(1:NFFT/2+1))) ;

[b,a]=butter(10,3000/(44100/2),'high');
Y1=filtfilt(b,a,Y1);

% freqz(b,a)
figure(2)

plot(f,2*abs(Y1(1:NFFT/2+1))) ;

title('Single-Sided Amplitude Spectrum of y(t)');
xlabel('Frequency (Hz)');
ylabel('|Y(f)|')
xlim([0 50000])


% soundsc(ch1(1:100000),44100)
Run Code Online (Sandbox Code Playgroud)

matlab signal-processing fft audio-recording frequency-analysis

2
推荐指数
1
解决办法
3万
查看次数