作为评估的学期项目的一部分,我目前正在尝试设计一个免费的过滤器以部署在无人机上。即使处理能力不是问题(我们有 GHz、大量流水线和所有好东西),我仍然选择在最终实现中使用 IIR 滤波器,因为在我看来这更容易在数学上表示。
正如我在此答案中所读到的,某些滤波器阶数不会在输出中产生单调单位增益。因此,在这个阶段,我最感兴趣的是以一种迂回的方式证明滤波器的哪些阶数产生单调单位增益。在这个阶段,相位差几乎是无关紧要的,因为我有理由相信不会使用我们遇到任何时序约束的高阶滤波器。
因此,我编写了一些初始 matlab 代码来测试我的应用程序在一阶巴特沃斯对上,如下所示。值得注意的是,我们的采样频率为 1 Khz,即奈奎斯特频率为 500 Hz。因此,0.25 的归一化截止频率等于 125 Hz,尽管在此阶段这是任意的。可能的问题包括最后一行中的 2 个滤波器的总和,或者需要向高通添加一些积分器项。我们目前也有一些随无人机一起提供的库存免费过滤器(所有过滤器都是来自 Quanser 的一个大包装,他们的自动驾驶汽车研究套件),但只使用它们而不知道它们做什么似乎乏善可陈。完成后不久,我还将仔细研究 IMU 和磁力计的过滤器,因为我认为我可以做得更好。
clc;
clear;
close all;
w_n=0.25; %cutoff frequency
[zL1,pL1,kL1] = butter(1,w_n,'low');
[numL1,denL1] = zp2tf(zL1,pL1,kL1);
sysL1=tf(numL1,denL1);
[zH1,pH1,kH1] = butter(1,w_n,'high');
[numH1,denH1] = zp2tf(zH1,pH1,kH1);
sysH1=tf(numH1,denH1);
sys1=sysL1+sysH1;
制作这个传递函数的波特图给了我一些与我所期望的完全不同的东西,如下所示。
感谢任何帮助和指导,非常感谢!