kaerman滤波matlab代码
时间: 2023-07-09 17:41:59 浏览: 161
卡尔曼滤波MATLAB代码
以下是一个简单的 Kaiser 滤波器的 MATLAB 代码实现:
```matlab
% 指定滤波器参数
wp = 0.2*pi; % 通带边缘频率
ws = 0.3*pi; % 阻带边缘频率
Rp = 1; % 通带最大衰减
Rs = 30; % 阻带最小衰减
tr_width = ws - wp; % 过渡带宽度
% 计算滤波器阶数和 beta 参数
delta_p = (10^(Rp/20) - 1) / (10^(Rp/20) + 1); % 通带波纹
delta_s = 10^(-Rs/20); % 阻带衰减
A = -20*log10(min(delta_p,delta_s)); % 实际衰减
if A > 50
beta = 0.1102*(A - 8.7);
elseif A > 21 && A <= 50
beta = 0.5842*(A - 21)^0.4 + 0.07886*(A - 21);
else
beta = 0;
end
N = ceil((Rs - 8) / (2.285*tr_width)); % 滤波器阶数
% 计算 Kaiser 窗口
n = 0:N-1;
alpha = (N-1)/2; % 窗口参数
w = (besseli(0,beta*sqrt(1-(n-alpha).^2))/besseli(0,beta)).'; % Kaiser 窗口
% 计算理想频率响应
h_ideal = (ws/pi)*sinc(ws*(n-alpha)/pi) - (wp/pi)*sinc(wp*(n-alpha)/pi);
% 计算滤波器系数
h = h_ideal .* w;
```
其中,`wp` 和 `ws` 分别指定了通带和阻带的边缘频率,`Rp` 和 `Rs` 分别指定了通带最大衰减和阻带最小衰减,`tr_width` 是过渡带宽度。代码首先计算了 Kaiser 窗口的参数 `beta` 和阶数 `N`,然后使用 `besseli` 函数计算 Kaiser 窗口,最后将 Kaiser 窗口乘以理想频率响应得到滤波器系数 `h`。
阅读全文