clear ;close all;
%读取音频文件
[xn,fs]=audioread('SunshineSquare.wav');
%原始数据的频谱
figure(1);
subplot(1,2,1);
N=round(length(xn)/2);
Y=fft(xn);
Y=Y(1:N);
plot((0:N-1).*fs/length(xn),abs(Y));
title('原始频谱');
xlabel('频率f/Hz');ylabel('|Xk|');
%原始数据的时域图
subplot(1,2,2);
plot((0:length(xn)-1),xn);
title('初始时域图');
xlabel('n');ylabel('xn');
%第一次滤波
[y_max1,n_max1]=max(abs(fft(xn)));
A1=-2*cos(2*pi*(n_max1-1)/length(xn));
hn1=[1,A1,1];
yn1=conv(xn,hn1);
%第一次滤波的频谱
figure(2);
subplot(1,2,1);
N=round(length(yn1)/2);
Y=fft(yn1);
Y=Y(1:N);
plot((0:N-1).*fs/length(yn1),abs(Y));
title('第一次滤波的频谱');
xlabel('频率f/Hz');ylabel('|Yk1|');
%第一次滤波的时域图
subplot(1,2,2);
plot((0:length(yn1)-1),yn1);
title('第一次滤波的时域图');
xlabel('n');ylabel('yn1');
%第二次滤波
[y_max2,n_max2]=max(abs(fft(yn1)));
A2=-2*cos(2*pi*(n_max2-1)/length(yn1));
hn2=[1,A2,1];
yn2=conv(yn1,hn2);
%第二次滤波的频谱
figure(3);
subplot(1,2,1);
N=round(length(yn2)/2);
Y=fft(yn2);
Y=Y(1:N);
plot((0:N-1).*fs/length(yn2),abs(Y));
title('第二次滤波后的频谱');
xlabel('频率f/Hz');ylabel('|Yk2|');
%第二次滤波的时域图
subplot(1,2,2);
plot((0:length(yn2)-1),yn2);
title('第二次滤波的时域图');
xlabel('n');ylabel('yn2');
%第三次滤波
[y_max3,n_max3]=max(abs(fft(yn2)));
A3=-2*cos(2*pi*(n_max3-1)/length(yn2));
hn3=[1,A3,1];
yn3=conv(yn2,hn3);
%第三次滤波的频谱
figure(4);
subplot(1,2,1);
N=round(length(yn3)/2);
Y=fft(yn3);
Y=Y(1:N);
plot((0:N-1).*fs/length(yn3),abs(Y));
title('第三次滤波后的频谱');
xlabel('频率f/Hz');ylabel('|Yk3|');
%第三次滤波的时域图
subplot(1,2,2);
plot((0:length(yn3)-1),yn3);
title('第三次滤波的时域图');
xlabel('n');ylabel('yn3');
%第四次滤波
[y_max4,n_max4]=max(abs(fft(yn3)));
A4=-2*cos(2*pi*(n_max4-1)/length(yn3));
hn4=[1,A4,1];
yn4=conv(yn3,hn4);
%第四次滤波的频谱
figure(5);
subplot(1,2,1);
N=round(length(yn4)/2);
Y=fft(yn4);
Y=Y(1:N);
plot((0:N-1).*fs/length(yn4),abs(Y));
title('第四次滤波后的频谱');
xlabel('频率f/Hz');ylabel('|Yk4|');
%第四次滤波的时域图
subplot(1,2,2);
plot((0:length(yn4)-1),yn4);
title('第四次滤波后的时域图');
xlabel('n');ylabel('yn4');
%时域滤波
yn5=yn4;
for n=1:length(yn4)
if abs(yn4(n))>0.2
yn5(n)=0;
end
end
%时域滤波后的频谱
figure(6);
subplot(1,2,1);
N=round(length(yn5)/2);
Y=fft(yn5);
Y=Y(1:N);
plot((0:N-1).*fs/length(yn5),abs(Y));
title('时域滤波后的频谱');
xlabel('频率f/Hz');ylabel('|Yk5|');
%时域滤波后的时域图
subplot(1,2,2);
plot((0:length(yn5)-1),yn5);
title('时域滤波后的时域图');
xlabel('n');ylabel('yn5');
soundsc(yn5);
audiowrite('New_SunshineSquare.wav',yn5,fs);