clear clc
[audio,Fs]=audioread('D:\yinpin~1.mp3');%声音读取
audio = audio(:,1); %双通道变单通道
n=length(audio);
T = 1/Fs;%采样间隔
t = (0:n-1)*T;%时间轴
f = (0:n-1)/n*Fs;%频率轴
%Fs=8000;%T=1/Fs;
%绘出原始音频时域波
figure(5)
subplot(2,2,1);
plot(t,audio);
xlabel('时间/s');
ylabel('幅度');
title('初始信号波形');
grid;
%绘出原始音频频域频谱
audio_fft=fft(audio,n)*T;
subplot(2,2,2);
audiof = abs(audio_fft);
plot(f(1:(n-1)/2),audiof(1:(n-1)/2));
title('初始信号频谱');
xlabel('频率/Hz');ylabel('幅度');grid;
%=================================低通滤波器软件实现==========================
fp=1000;fs=1200;
wp=2*fp/Fs;ws=2*fs/Fs;rp=1;rs=50;
[N,wp]=ellipord(wp,ws,rp,rs);
[B,A]=ellip(N,rp,rs,wp);
z=filter(B,A,audio);
z_fft=fft(z); %滤波后的信号频谱
%=================================低通滤波器软件绘图==========================
figure(2);subplot(2,2,1);
myplot(B,A);
subplot(2,2,2);plot(t,z);
title('低通滤波后的信号时域波形');
xlabel('时间/s');
ylabel('幅度');grid;
subplot(2,2,3);
zf = abs(z_fft);
plot(f(1:(n-1)/2),zf(1:(n-1)/2));
title('低通滤波后信号的频谱');
xlabel('频率/Hz');
ylabel('幅度');
grid;
%================================带通滤波器软件实现===============================
fp1=1200;fpu=3000;fs1=1000;fsu=3200;
wp=[2*fp1/Fs,2*fpu/Fs];ws=[2*fs1/Fs,2*fsu/Fs];rp=1;rs=50;
[N,wp]=ellipord(wp,ws,rp,rs);
[B2,A2]=ellip(N,rp,rs,wp);
z2=filter(B2,A2,audio);
z2_fft=fft(z2); %滤波后的信号频谱
figure(3);subplot(2,2,1);
myplot(B2,A2);
subplot(2,2,2);plot(t,z2);
title('高通滤波后的信号时域波形');
xlabel('时间/s');
ylabel('幅度');grid;
subplot(2,2,3);
zf2 = abs(z2_fft);
plot(f(1:(n-1)/2),zf2(1:(n-1)/2));
title('高通滤波后信号的频谱');
xlabel('频率/Hz');
ylabel('幅度');
grid;
%===============================高通滤波器实现=============================
fp=3000;fs=2800;
wp=2*fp/Fs;ws=2*fs/Fs;rp=1;rs=50;
[N,wp]=ellipord(wp,ws,rp,rs);
[B1,A1]=ellip(N,rp,rs,wp,'high');
%y3t=filter(B,A,st);
z1=filter(B,A,audio);
z1_fft=fft(z1); %滤波后的信号频谱
figure(4);subplot(2,2,1);
myplot(B1,A1);
subplot(2,2,2);plot(t,z1);
title('高通滤波后的信号时域波形');
xlabel('时间/s');
ylabel('幅度');grid;
subplot(2,2,3);
zf1 = abs(z1_fft);
plot(f(1:(n-1)/2),zf1(1:(n-1)/2));
title('高通滤波后信号的频谱');
xlabel('频率/Hz');
ylabel('幅度');
grid;
audio_final = [audio;z;z1;z2];
sound(audio_final,Fs);