关于线性化的问题,如何解决?(matlab)

你好,我在复现Adaptive filter of non-linear systems with generalised unknown disturbances Yuemei Qin,这篇文章,做出了线性系统的最小上限滤波,在做非线性的过程中,利用一阶求导线性化出现的图像不太对,想咨询一下您

img

你把源码复制记事本发过来

根据问题的描述,这是一个关于线性化问题的求解。根据给出的参考资料,可以使用MATLAB的filter函数来实现线性系统的最小上限滤波。下面是一种可能的解决方案:

首先,根据问题描述,你尝试使用一阶求导进行线性化,但结果似乎不正确。这可能是因为你使用了不适当的线性化方法或者参数设置不正确。

要解决这个问题,一种常见的方法是使用泰勒级数展开来线性化非线性系统。具体步骤如下:

  1. 找到非线性系统的工作点(即非线性系统的平衡点),记作(x_eq, y_eq)。
  2. 计算非线性系统在工作点处的雅可比矩阵,记作J_eq。
  3. 将非线性系统的状态和输入变量分别表示为 x(t) 和 u(t),其中 x(t) 和 u(t) 是关于时间 t 的函数。
  4. 在非线性系统的工作点处,将状态和输入变量分别表示为偏离工作点的量:x(t) = x_eq + Δx(t) 和 u(t) = u_eq + Δu(t),其中 Δx(t) 和 Δu(t) 是关于时间 t 的偏差量。
  5. 根据泰勒级数展开,将 x(t) 和 u(t) 在工作点处展开为一阶项:x(t) = x_eq + J_eq * Δx(t) 和 u(t) = u_eq + Δu(t)。
  6. 根据线性化的状态方程和输出方程,得到线性系统的方程:dx(t)/dt = J_eq * Δx(t) + B * Δu(t) 和 y(t) = C * Δx(t) + D * Δu(t),其中 B、C 和 D 分别是非线性系统在工作点处的输入矩阵、输出矩阵和直流增益矩阵。
  7. 使用filter函数对线性化的方程进行求解,得到线性化系统的输出。
  8. 根据需要,可以对得到的线性化系统进行进一步处理,如设计控制器等。

这只是一个大致的解决思路,具体的实现细节需要根据具体的问题和非线性系统的特点来确定。

由于我无法直接访问外部参考资料的链接,我无法提供更详细的代码和示例。但你可以根据上述步骤,结合你已有的matlab知识和filter函数的文档,尝试实现线性系统的最小上限滤波。

希望这个回答对你有帮助,祝你成功解决问题!如果还有其他问题,请随时提问。