【问题标题】:design a Matlab filter from measured transfer function根据测量的传递函数设计一个 Matlab 滤波器
【发布时间】:2015-04-13 16:51:07
【问题描述】:

我目前正在处理我获取的一些数据。问题是:我要测量的值和我的传感器之间有一个元素(要清楚:我的麦克风和我测量的声音之间有一个管道)。该管道通过传递函数 H 过滤我的信号 X。

我想对测量信号进行反卷积以消除该管道的影响(我的麦克风得到 Y=H*X,我想要 X)。我测量了 H,并安装了它:

 0.003682 s^4 + 90.87 s^3 - 4.835e05 s^2 + 1.051e08 s + 4.499e12
 ———————————————————————————————————————————————————————————————
  s^4 + 628.3 s^3 + 1.759e07 s^2 + 2.668e09 s + 4.053e12

我使用标准 matlab 函数 filter(b,a,Y) 来反转由 H 引起的滤波,其中 b 是 H 的分母,a 是其分子...这应该是 H 的逆。但是我得到的不是我的去卷积信号,而是一个向量NaN。

有人知道为什么吗?我完全不知道,我对数字滤波不是很放心...

【问题讨论】:

  • 您好,欢迎来到 SO!能否请您提供您的 Matlab 代码,如果可能的话,还可以提供 Y 的示例,以便我们自己进行测试?我的猜测:你的数据 Y 中有一个 NaN。
  • 我检查过:我的数据中没有 NaN,别担心。

标签: matlab filter transfer-function


【解决方案1】:

您的传递函数的分母与分子具有相同的等级。这意味着,在时间 t(k) 中,要计算输出 y(k),您需要同时控制 u(k)。有时它会导致问题,因此(如果可以)尝试以其他方式识别 H - 以获得传递函数,其中分子的等级低于分母的等级。你可以在 MATLAB 中使用 for it 工具箱,只需在命令窗口中输入“ident”即可。

否则,您可以将测量信号乘以逆 H。这意味着,如果您得到 H 的传递函数(这是 num[H]/den[H]),您应该将信号乘以 den[H] /num[H]。这种方法可能会带来一点延迟,但我认为这种延迟不会那么重要。

【讨论】:

  • @elduche 我希望您正在检查计算的传递函数的稳定性。你找到的那个在右半平面上有零,当你反转时它会变成不稳定的极点。我会听取 Rafal 的建议。
猜你喜欢
  • 2016-07-30
  • 1970-01-01
  • 2018-11-03
  • 2014-07-06
  • 1970-01-01
  • 2021-03-08
  • 2016-08-20
  • 2010-12-24
  • 1970-01-01
相关资源
最近更新 更多