基于MATLAB语音信号去噪IIR数字滤波器设计22

目 录
摘 要 I
Abstract II
1 绪论 1
1.1 研究背景 1
1.2 国内外研究现状 1
1.2.1 国内研究现状 2
1.2.2 国外研究现状 2
1.3 使用hfpso接模式搜索设计IIR滤波器 3
1.4 IIR数字滤波器的设计内容 3
2 数字滤波器的设计与研究 5
2.1 数字滤波器工作原理 6
2.2 数字滤波器分类 6
2.3 IIR数字滤波器基本结构 7
2.4 脉冲响应不变法和双线性变换法的IIR数字滤波器优化设计 7
3 IIR数字滤波器的设计 10
3.2 脉冲响应不变法 12
3.3 双线性变换法 13
4 基于MATLABAPPdesigner对IIR数字滤波器的设计 14
4.1 语音信号采集、读取、加噪 15
4.2 模拟滤波器的设计 20
4.3 双线性变换法设计Butterworth数字滤波器 20
4.4 脉冲不变响应法设计Chebyshev I数字滤波器 23
4.5 语音信号滤波处理结果比较 25
5 IIR数字滤波器去噪平台GUI界面设计 27
5.1 IIR数字滤波器去噪平台GUI界面设计流程 27
5.2 IIR数字滤波器去噪平台界面设计 29
5.2.1 原始语音模块设计 30
5.2.2 加噪语音模块设计 34
5.2.3 滤波器模块设计 36
5.2.4 退出模块设计 38
总 结 39
6.1 滤波器设计中存在的不足 39
6.2 总结以及展望 40
致 谢 42
参考文献 43
根据设计流程可以看出将模拟滤波器转换为数字滤波器可以使用脉冲响应不变法或者双线性变换法,而模拟滤波器转换为数字滤波器的实质就是将是s平面映射到z平面。当达到具体要求时才能进行映射,第一,模拟-数字进行转换时从因果稳定AF所得到的DF必须持续稳定拨正滤波器的工作性能;第二,AF所产生的频率响应特性应与DF的常数频率响应特性相差较小,保证在转化过程减少语音信号数据的失真不能够完成滤波。下面对脉冲不变响应法和双线性变换法这两种方法进行详细的阐述[5]。.

%% main procedure (PSO)
N = input('Filter order = ? ');
%[N, Wc_ch2] = cheb2ord(Wp,Ws,Ap,As);
N_run = 1;
DenCoeffs = zeros(N,N_run);
NumCoeffs = zeros(N,N_run);
sizepop =150;          % 粒子数量
ger = 8000;             % 迭代次数
lb = [-2.5e-5*ones(1,N) -3.5e-4*ones(1,N)]; %参数优化下边界
ub = [2.5e-5*ones(1,N) 3.5e-4*ones(1,N)];   %参数优化上边界
tic
for kk = 1:N_run
   x0 = hfpso_v4(ger,sizepop,1.5,1.5,lb,ub,2*N,0.015,@myObjectivePSO);
   % 接着hfpso算法优化所得x,在上下[-5e-5 5e-5]范围内进行模式搜索
   opt= optimoptions('patternsearch','display','iter','StepTolerance',1e-10,'MaxFunctionEvaluations',1e6,'FunctionTolerance',1e-10,'MeshTolerance',1e-20);
   x = patternsearch(@myObjectivePSO,x0,[],[],[],[],x0-5e-5,x0+5e-5,[],opt);
end
   tic;
   b = x(1:N);
   a = x(N+1:end);
   DenCoeffs(:,1) = b;
   NumCoeffs(:,1) = a;
   
%% Draw Results
figure(2);clf
Ripples = zeros(1,N_run);
MaxSLLs = zeros(1,N_run);
for kk = 1:N_run
    [H_designed,~] = freqz(DenCoeffs(:,kk),NumCoeffs(:,kk));
    [Ripples(kk),MaxSLLs(kk)] = calcResponseSpecs(H_obj,...
        mag2db(abs(H_designed)),filtertype);
end

plot(1:N_run,Ripples,'b.-');grid minor;hold on
plot(1:N_run,MaxSLLs,'rd:')
xlabel('Number of Iterations')
ylabel('Evaluated Filter Features (dB)')
legend('Ripple','MaxSLL')
k_opt = find(MaxSLLs == min(MaxSLLs));
k_opt = k_opt(1);

% Draw out the response of all types of Filters
figure(1);clf
plot(w/pi,H_obj,'DisplayName','Desired','LineWidth',2,'Color','r')
grid minor
hold on;
[H_PSO,~] = freqz(DenCoeffs(:,k_opt),NumCoeffs(:,k_opt));
plot(w/pi,mag2db(abs(H_PSO)),'b.-','DisplayName','PSO-based')

[H_but,~] = freqz(b_but,a_but);
[N_ch1,~] = freqz(b_ch1,a_ch1);
[H_ch2,~] = freqz(b_ch2,a_ch2);
[H_elp,~] = freqz(b_elp,a_elp);
plot(w/pi,mag2db(abs(H_but)),'k.--','DisplayName','Butterworth')
plot(w/pi,mag2db(abs(N_ch1)),'g.:','DisplayName','Chebyshev1')
plot(w/pi,mag2db(abs(H_ch2)),'m.-','DisplayName','Chebyshev2')
plot(w/pi,mag2db(abs(H_elp)),'c.--','DisplayName','Elliptic')
legend
xlabel('Normalized Frequency (\times \pi rad/sample)')
ylabel('Magnitude (dB)')
title(['Filter Response for various types (' filtertype ')'])
ylim([-(As+20) Ap+10])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/131780873