本文主要是介绍(补)20210622:基于最大误差最小准则的最佳滤波器设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于最大误差最小准则的最佳滤波器设计
基本原理
最佳滤波器的设计指的是滤波器的频率响应在所感兴趣的频率范围内与理想滤波器之间的频率响应在最大逼近误差最小,也就是”最大最小准则“意义上的最佳化,也称为切比雪夫意义上的最佳化。实质原理即是对切比雪夫逼近问题的数学推导。
实验仿真
Matlab中主要使用remez函数和remezord函数,这两个函数现在已经废弃,建议使用firpm和firpmord作为替代。
这里我们以下图的低通滤波器为示例进行说明:
由上图可以得到的信息为:
- 过渡带为[1.6 1.8]
- 与过渡带相关的幅度矢量为A = [1 0]
- 通带波纹与阻带波纹都设置到很小,分别为δp = 0.001,δs = 0.0001。采样率fs为10Mhz。
以此来进行设计最佳滤波器的幅频特性分别为
代码实现
clc; clear all; close all; %% firpm_test
%% @IMMUNIZE
F = [1.6 1.8]; % 过渡带
A = [1 0]; % 与过渡带对应的幅度矢量增益
Dev = [0.001 0.0001]; % 通带与阻带波纹
Fs = 10; % 采样率
% 计算对应的最佳滤波器的阶数 : N
% 对硬的归一化频率矢量 : F
% 对应的频率矢量的幅度增益: A0
% 幅度加权矢量 : w
[N,F0,A0,w] = firpmord(F,A,Dev,Fs);
% [N,F0,A0,w] = remezord(F,A,Dev,Fs);
num1 = firpm(N,F0,A0,w);
% num2 = remez(N,F0,A0,w);
figure(1);
freqz(num1);
% figure(2);
% freqz(num2);
这篇关于(补)20210622:基于最大误差最小准则的最佳滤波器设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!