我目前正在处理我获得的一些数据。问题是:我想要测量的值和我的传感器之间有一个元素(要清楚:我的麦克风和我测量的声音之间有一条管道)。该管道通过传递函数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的分母和它的分子......这应该是逆H.但不是我的解卷积信号,我得到了NaN的载体。
有人知道为什么吗?我完全不知道,我对数字过滤并不是很放心......
答案 0 :(得分:2)
您的转移函数的分母与分子具有相同的等级。这意味着,在时间t(k),要计算输出y(k),你需要在同一时间控制u(k)。有时会导致问题,所以(如果可以的话)尝试以其他方式识别H - 获得传递函数,其中分子的等级低于分母的等级。您可以在MATLAB中使用它的工具箱,只需编写" ident"在命令窗口中。
否则,你可以将你的测量信号乘以逆H.这意味着,如果你得到H的传递函数(这是num [H] / den [H]),你应该将你的信号乘以den [H] / NUM [H]。这种方法可能会带来一点延迟,但我认为这种延迟并不是那么重要。