目錄
1.程序功能描述
2.測試軟件版本以及運行結果展示
3.部分程序
4.算法理論概述
5.完整程序
1.程序功能描述
? ? ? ? IIR(Infinite Impulse Response)濾波器即無限沖激響應濾波器,其輸出不僅與當前和過去的輸入有關,還與過去的輸出有關。基于IPO智能粒子優化的IIR濾波器參數識別算法,是利用智能粒子優化算法來搜索 IIR 濾波器的最優參數,使濾波器的性能達到最佳。
2.測試軟件版本以及運行結果展示
MATLAB2022A/MATLAB2024B版本運行
3.部分程序
[Bsoa,Asoa,Z_f,P_f] = func_Coff_est(bestpop)
[Hfilt1,Wfilt1]=freqz(Bsoa,Asoa,50);
disp([ ' Best Solution = ' num2str(bestpop)])
disp([ ' Best Fitness = ' num2str(bests(t-1))])figure;
plot(bests,'k','LineWidth',2);
plot(bests,'.b','LineWidth',1);
hold on
plot(meanfits,'.r','LineWidth',1);
legend('best','mean')
xlabel('Iteration')
ylabel('適應度')
hold off% 計算分子多項式Bipo的根(零點)
Z_f0 = roots(b0);
% 計算分母多項式Aipo的根(極點)
P_f0 = roots(a0);figure;
subplot(121);
zplane(Z_f0,P_f0);
legend('Zero','Pole');
xlabel('Real Part');
ylabel('Imaginary Plot');
title('優化前零極點圖');
subplot(122);
zplane(Z_f,P_f);
legend('Zero','Pole');
xlabel('Real Part');
ylabel('Imaginary Plot');
title('優化后零極點圖');H = abs(Hfilt);
Hdb=20*log10(H);
H1= abs(Hfilt1);
Hdb1=20*log10(H1);figure;
subplot(121);
plot(Wfilt/512,Hdb);
grid
title('優化前chebyshev I bandpass filter幅度響應');
hold offsubplot(122);
plot(Wfilt1/512,Hdb1);
grid
title('優化后chebyshev I bandpass filter幅度響應');
hold off
109
4.算法理論概述
IIR濾波器的核心是傳遞函數,其離散域表達式為:
? ? ? ? 通過IPO優化算法,計算最優的濾波器參數,這是適應度函數的 “核心評判環節”,通過兩步將 “頻率響應差異” 轉化為 “單一誤差值”。通過循環計算每個頻率點的誤差平方:
abs(...)
:取復數的模(因為頻率響應是復數,模代表幅值,相位差異已包含在模的計算中);
平方操作:放大較大誤差的權重(使優化算法更關注與目標偏差大的頻率點),同時避免正負誤差抵消。
將所有頻率點的誤差平方平均后,轉換為分貝(dB)形式:
Error(i)
越小,說明第 i 組系數對應的濾波器與目標濾波器的頻率響應越接近,在優化算法中被選為 “優秀個體” 的概率越高。
5.完整程序
VVV