%程序名称:su.m
% 程序功能:使用双线性变换法设计的级联型椭圆滤波器对语音信号滤波去噪。
% 程序作者:
% 最后修改日期:2013-3-7
[x,fs,bits]=wavread('e:\su.wav');
sound(x,fs,bits);
N=length(x);
fn=2200;
t=0:1/fs:(N-1)/fs;
x=x'; y=x+0.1*sin(fn*2*pi*t);
%sound(y,fs,bits);
wavwrite(y,fs,bits,'su1');
X=abs(fft(x)); Y=abs(fft(y));
X=X(1:N/2); Y=Y(1:N/2);
figure(1);
subplot(2,2,1),plot(t,x);grid;axis([0,1.7,-0.2,0.2]);
xlabel('时间(单位:s)'),ylabel('幅度'),title('原始语音信号');
subplot(2,2,2),plot(f,X);grid;axis([0,4000,0,50]);
xlabel('频率(单位:Hz)'),ylabel('幅度谱'),title('语音信号幅度谱图');
subplot(2,2,3),plot(t,y);grid;axis([0,1.7,-0.2,0.2]);
xlabel('时间(单位:s)'),ylabel('幅度'),title('加入单频干扰后的语音信号');
subplot(2,2,4),plot(f,Y);grid;axis([0,4000,0,50]);
xlabel('频率(单位:Hz)'),ylabel('幅度谱'),title('加入单频干扰后的语音信号幅度谱图');
fp=fn-200;fc=fn-50;
wp=fp/fs*2*pi;ws=fc/fs*2*pi;
/2);Omegas=2/T*tan(ws/2);
[c,d]=afd_elip(Omegap,Omegas,Rp,As) % 计算滤波器系统函数分子分母系数
% 第三步 模数滤波器变换
[b,a]=bilinear(c,d,1/T) % 双线性变换得到数字滤波器系统函数分子分母系数
%验证
[db,mag,pha,grd,w]=freqz_m(b,a); %计算椭圆低通滤波器的幅度,幅度响应,群延时和相位响应等数据图,验证滤波器是否达到指定性能
delta=[1,zeros(1,99)];ha=filter(b,a,delta);%计算脉冲响应
figure(2);
subplot(2,2,1);plot(w/pi,db);grid;axis([0,1,-90,3]);
xlabel('w/pi');ylabel('dB');
title('滤波器幅度响应图');
X_l=[0,0,wp/pi,ws/pi;1,1,wp/pi,ws/pi];Y_l=[-As,-Rp,-90,-90;-As,-Rp,3,3];
% 在wp,ws,Rp,As处画线以更直观判断设计是否达标,每列参数是每个线条的端点坐标
line(X_l,Y_l,'Color','r','LineWidth',2,'LineStyle','--') % 添加线条,红色,线宽为2
subplot(2,2,2);plot(w/pi,mag);grid;axis([0,1,0,1.1]);
xlabel('w/pi');ylabel('幅度mag');
title('滤波器幅度响应图');
subplot(2,2,3);plot(w/pi,pha);grid;axis([0,1,-4,4]);
xlabel('w/pi');ylabel('相位pha');
title('滤波器相位响应图');
subplot(2,2,4);plot(ha);grid;axis([0,100,-0.12,0.12]);
xlabel('n');ylabel('h(n)');
title('滤波器脉冲响应图');
y_fil=filter(b,a,y); % IIR滤波器对信号signal进行滤波处理,其中b,a为上面设计好的滤波器参数。
Y_fil=fft(y_fil);Y_fil=Y_fil(1:N/2); % 计算频谱取前一半
sound(y_fil,fs,bits); %按指定的采样率和每样本编码位数回放
wavwrite(y_fil,fs,bits,'su2');%将加噪后的语音信号写成wav文件,并命名为su2
figure(3)
subplot(3,2,1);
plot(t,x);grid;axis([0,1.7,-0.2,0.2]);
ylabel('幅度');xlabel('时间t'),title('原始语音信号时间x');
subplot(3,2,2);
plot(f,X);grid;axis([0,4000,0,50]);
ylabel('幅度');xlabel('频率f');title('原始语音信号幅度频谱X');
subplot(3,2,3);
plot(t,y);grid;axis([0,1.7,-0.2,0.2]);
ylabel('幅度');xlabel('时间t');title('加入干扰语音信号时间x1');
subplot(3,2,4);
plot(f,Y);grid;axis([0,4000,0,50]);
ylabel('幅度');xlabel('频率f');title('加入干扰语音信号幅度谱X1');
subplot(3,2,5);
plot(t,y_fil);grid;axis([0,1.7,-0.2,0.2]);;
ylabel('幅度');xlabel('时间t'),title('滤波后语音信号时间y');
subplot(3,2,6);
plot(f,Y_fil);grid;axis([0,4000,0,50]);
ylabel('幅度');xlabel('频率f');title('滤波后语音信号幅度谱Y');
[C,B,A]=dir2cas(b,a) %将IIR滤波器的直接型转换成级联型
su.zip_IIR语音去噪_matlab 录音机_级联 变换器_语音 去噪 iir_语音去噪 IIR
版权申诉
97 浏览量
2022-09-24
06:57:30
上传
评论 1
收藏 2KB ZIP 举报
四散
- 粉丝: 49
- 资源: 1万+