clear all;close all;clc;
%原信号
[x,fs]=audioread('C:\Users\jieliandiannao\Desktop\yuyin\jia5.wav');
N=length(x);n=0:N-1;
t=0.01*n;f=(0:N-1)*fs/N;
X=fft(x);
figure(1)
subplot(321);plot(x);
xlabel('n');ylabel('x');title('原始信号时域波形图')
subplot(322);plot(f,abs(X))
xlabel('f_{k}/Hz');ylabel('|X(jΩ)|');title('原始信号频谱图')
%加入单音噪声
x1=x'+0.02*cos(50*pi*t);
X1=fft(x1,N);
subplot(323);plot(x1);
xlabel('n');ylabel('x');title('带单音噪声信号时域波形图')
subplot(324);plot(f,abs(X1))
xlabel('f_{k}/Hz');ylabel('|X_{1}(jΩ)|');title('带单音噪声信号频谱图')
%加入白噪声
x2=x'+0.02*randn(1,N);
X2=fft(x2,N);
subplot(325);plot(x2);
xlabel('n');ylabel('x');title('带白噪声信号时域波形图')
subplot(326);plot(f,abs(X2))
xlabel('f_{k}/Hz');ylabel('|X_{2}(jΩ)|');title('带白噪声信号频谱图')
%设计带阻巴特沃斯滤波器,根据以上结果,
%取wp=[3/8*pi,5/8*pi],ws=[7/16*pi,9/16*pi],rp=1dB,rs=25dB
wp=[7000/16000,9/16];ws=[15/32,17/32];T=1;
%buttord和butter默认采用双线性变换法,可以直接设计数字滤波器
rp=1;rs=10; %经过比较,确定αs和αp
[M,wc]=buttord(wp,ws,rp,rs);
[b,a]=butter(M,wc,'stop');
[db,mag,pha,w]=freqz_m(b,a);
figure(2)
subplot(211);plot(w/pi,mag);
title('IIR数字带阻滤波器的幅频响应')
set(gca,'XTickMode','manual','XTick',[0 wp(1) ws(1) ws(2) wp(2) 1]);
grid on;xlabel('w/π');ylabel('|H(jΩ)|')
subplot(212);plot(w/pi,pha);
set(gca,'XTickMode','manual','XTick',[0 wp(1) ws(1) ws(2) wp(2) 1]);
grid on;title('IIR数字带阻滤波器的相频响应')
%滤波器实现-单音噪声
y1=filter(b,a,x1);
N1=length(y1);
Y=fft(y1);m=(0:N1-1)*fs/N1;
figure(3)
subplot(321);plot(x);
xlabel('n');ylabel('x');title('原始信号时域波形图')
subplot(322);plot(f,abs(X))
xlabel('f_{k}/Hz');ylabel('|X(jΩ)|');title('原始信号频谱图')
subplot(323);plot(y1);xlabel('n');ylabel('y_{1}')
title('带单音噪声信号带阻滤波后波形图')
subplot(324);plot(m,abs(Y));xlabel('f_{k}/Hz');ylabel('|Y_{1}(jΩ)|')
title('带单音噪声信号带阻滤波后频谱图')
%滤波器实现-白噪声
y2=filter(b,a,x2);
N2=length(y2);
Y2=fft(y2);m=(0:N2-1)*fs/N2;
subplot(325);plot(y2);xlabel('n');ylabel('y_{2}')
title('带白噪声信号带阻滤波后波形图')
subplot(326);plot(m,abs(Y2));xlabel('f_{k}/Hz');ylabel('|Y_{2}(jΩ)|')
title('带白噪声信号带阻滤波后频谱图')
%设计低通滤波器,重新对白噪声进行滤波
wp1=0.4;ws1=0.45;rp1=1;rs1=20;T=1;
[M1,wc1]=buttord(wp1,ws1,rp1,rs1);
[b1,a1]=butter(M1,wc1);
[db1,mag1,pha1,w1]=freqz_m(b1,a1);
figure(4)
subplot(211);plot(w1/pi,mag1);
title('IIR数字低通滤波器的幅频响应')
set(gca,'XTickMode','manual','XTick',[0 wp1 ws1 1]);
grid on;xlabel('w/π');ylabel('|H(jΩ)|')
subplot(212);plot(w1/pi,pha1);
set(gca,'XTickMode','manual','XTick',[0 wp1 ws1 1]);
grid on;title('IIR数字低通滤波器的相频响应')
%滤波器实现-白噪声
y3=filter(b1,a1,x2);
N3=length(y3);
Y=fft(y3);m=(0:N3-1)*fs/N3;
figure(5)
subplot(321);plot(x);
xlabel('n');ylabel('x');title('原始信号时域波形图')
subplot(322);plot(f,abs(X))
xlabel('f_{k}/Hz');ylabel('|X(jΩ)|');title('原始信号频谱图')
subplot(323);plot(y3);xlabel('n');ylabel('y_{3}')
title('带白噪声信号低通滤波后波形图')
subplot(324);plot(m,abs(Y));xlabel('f_{k}/Hz');ylabel('|Y_{3}(jΩ)|')
title('带白噪声信号低通滤波后频谱图')
subplot(325);plot(y2);xlabel('n');ylabel('y_{2}')
title('带白噪声信号带阻滤波后序列图')
subplot(326);plot(m,abs(Y2));xlabel('f_{k}/Hz');ylabel('|Y_{2}(jΩ)|')
title('带白噪声信号带阻滤波后频谱图')
%利用等波纹最佳逼近法设计FIR数字滤波器
f1=[7/16,15/32,17/32,9/16];m=[1,0,1];
rp2=1;rs2=40;
dat1=(10^(rp2/20)-1)/(10^(rp2/20)+1);
dat2=10^(-rs2/20);
rip=[dat1,dat2,dat1];
[M2,fo,mo,w2]=remezord(f1,m,rip);
M2=M2+2;
hn=remez(M2,fo,mo,w2);
[H,wz]=freqz(hn);
figure(6)
subplot(211);plot(wz/pi,abs(H));
title('FIR数字带阻滤波器的幅频响应')
set(gca,'XTickMode','manual','XTick',[0 f1 1]);
grid on;xlabel('w/π');ylabel('|H(jΩ)|')
subplot(212);plot(wz/pi,angle(H));
set(gca,'XTickMode','manual','XTick',[0 f1 1]);
grid on;title('FIR数字带阻滤波器的相频响应')
%滤波器实现-单音噪声
y4=fftfilt(hn,x1);
N4=length(y4);
Y=fft(y4);m=(0:N4-1)*fs/N4;
figure(7)
subplot(321);plot(x);
xlabel('n');ylabel('x');title('原信号时域波形图')
subplot(322);plot(f,abs(X))
xlabel('f_{k}/Hz');ylabel('|X(jΩ)|');title('原信号频谱图')
subplot(323);plot(y4);xlabel('n');ylabel('y_{4}')
title('带单音噪声FIR滤波后波形图')
subplot(324);plot(m,abs(Y));xlabel('f_{k}/Hz');ylabel('|Y_{4}(jΩ)|')
title('带单音噪声FIR带阻滤波后频谱图')
subplot(325);plot(y1);xlabel('n');ylabel('y_{1}')
title('带单音噪声IIR带阻滤波后波形图')
subplot(326);plot(m,abs(Y));xlabel('f_{k}/Hz');ylabel('|Y_{1}(jΩ)|')
title('带单音噪声IIR带阻滤波后频谱图')