MATLAB信号与系统课程报告:去除干扰蜂鸣音

代码与分析

[y,Fs] = audioread('buzz.wav');

info = audioinfo('buzz.wav');%读取声音文件的数据:采样率和位宽

z = fft(y);%快速傅里叶变换

T = 1/Fs;             % Sampling period       

L = 39790;             % Length of signal

t = (0:L-1)*T;        % Time vector

P2 = abs(z/L);%计算双侧频谱P2

P1 = P2(1:L/2+1);%计算单侧频谱P1

P1(2:end-1) = 2*P1(2:end-1);

f = Fs*(0:(L/2))/L;%换算频率

plot(f,P1) %打印图

title('Single-Sided Amplitude Spectrum of buzz')

xlabel('f (Hz)')

ylabel('y')

z(find(abs(z/L)>0.0001))=0;%把蜂鸣器的声音去掉(根据数组P2的值,可估计噪声信号在P2中基本都大于0.0001,所以此处去掉了z内所有z/L的绝对值高于0.0001的数据)

X = ifft(z);%进行傅里叶反变换,为了能还原回可播放的数组

h=real(X);%取实部

sound(h,Fs)%播放:这里是,电子科技大学

你可能感兴趣的:(作业/报告,matlab,信号处理)