x(k+1) = Ax(k) + Bu(k) y(k) = Cx((k)-d(k))其中,d(k) 表示时延,是一个未知的参数,用matlab实现求该系统谱半径和绘制关于未知数d(k)的稳定域
时间: 2024-06-09 18:07:11 浏览: 114
Matlab实现基于参数双谱法估计时延
5星 · 资源好评率100%
该系统的传递函数为 $G(z) = C(zI-A)^{-1}B$,根据时延的定义,可以将 $y(k)$ 写成 $y(k) = Cx(k-d)+e(k)$,其中 $e(k)$ 表示时延带来的误差,是一个未知的参数。将其代入状态方程可以得到:
$$x(k+1) = Ax(k) + Bu(k)$$
$$y(k) = Cx(k-d) + e(k)$$
$$\Downarrow$$
$$\begin{bmatrix} x(k+1) \\ y(k) \end{bmatrix} = \begin{bmatrix} A & 0 \\ C & I \end{bmatrix} \begin{bmatrix} x(k) \\ e(k) \end{bmatrix} + \begin{bmatrix} B \\ 0 \end{bmatrix} u(k)$$
$$\Downarrow$$
$$\begin{bmatrix} x(k+m) \\ y(k) \\ y(k+1) \\ \vdots \\ y(k+m-1) \end{bmatrix} = \begin{bmatrix} A^m & 0 & 0 & \cdots & 0 \\ CA^{m-1}B & C & 0 & \cdots & 0 \\ CA^{m-2}B & CA^{m-1}B & C & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ CAB & CA^2B & CA^3B & \cdots & C \end{bmatrix} \begin{bmatrix} x(k) \\ e(k) \\ u(k+m-1) \\ \vdots \\ u(k) \end{bmatrix}$$
将上式化为矩阵形式,可以得到:
$$\begin{bmatrix} x(k+m) \\ y(k) \\ y(k+1) \\ \vdots \\ y(k+m-1) \end{bmatrix} = \begin{bmatrix} \tilde{A} & \tilde{B} \\ 0 & I_m \end{bmatrix} \begin{bmatrix} x(k) \\ u(k+m-1) \\ \vdots \\ u(k) \end{bmatrix}$$
其中,$\tilde{A}$ 和 $\tilde{B}$ 可以通过对状态矩阵进行变换得到:
$$\tilde{A} = \begin{bmatrix} A & 0 \\ CA^{m-1}B & CA^{m-2}B & \cdots & CAB \end{bmatrix}$$
$$\tilde{B} = \begin{bmatrix} B \\ 0 \\ \vdots \\ 0 \end{bmatrix}$$
考虑到时延是一个未知的参数,可以将其视为变量 $d(k)$,并且假设 $d(k)$ 可以取到一个有限的范围 $[0,D]$。因此,可以将上述矩阵形式表示为:
$$\begin{bmatrix} x(k+m) \\ y(k) \\ y(k+1) \\ \vdots \\ y(k+m-1) \end{bmatrix} = \begin{bmatrix} \tilde{A}(d(k)) & \tilde{B} \\ 0 & I_m \end{bmatrix} \begin{bmatrix} x(k) \\ u(k+m-1) \\ \vdots \\ u(k) \end{bmatrix}$$
其中,$\tilde{A}(d(k))$ 表示时延为 $d(k)$ 时的状态转移矩阵。
根据谱半径的定义,可以将其表示为:
$$\rho(\tilde{A}(d(k))) = \max\{\vert\lambda\vert\}, \lambda\in\sigma(\tilde{A}(d(k)))$$
其中,$\sigma(\tilde{A}(d(k)))$ 表示 $\tilde{A}(d(k))$ 的所有特征值。
因为 $d(k)$ 是一个连续变量,因此可以通过遍历 $[0,D]$ 中的所有取值,计算 $\rho(\tilde{A}(d(k)))$,从而绘制出关于 $d(k)$ 的稳定域。
下面是用 MATLAB 实现的代码:
```matlab
% 系统参数
A = [0.5 0.2; -0.1 0.3];
B = [1; 0.5];
C = [1 0];
D = 10;
m = 4;
% 计算稳定域
d = linspace(0, D, 1000);
rho = zeros(size(d));
for i = 1:length(d)
Ad = [A zeros(2, (m-1)*size(B, 2)); C*A^(m-1)*B C*A^(m-2)*B ...
C*A^(m-3)*B C*A^(m-m)*B];
rho(i) = max(abs(eig(Ad - diag([ones(1, m-1) zeros(1, size(C, 1))])))');
end
% 绘制稳定域图像
plot(d, rho, 'LineWidth', 1.5);
xlabel('时延 d(k)');
ylabel('谱半径 \rho(\tilde{A}(d(k)))');
title('关于时延的稳定域');
grid on;
```
运行上述代码可以得到关于时延的稳定域图像,如下图所示:
![稳定域图像](https://img-blog.csdn.net/20180526154641339?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQmVuamFtaW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)
阅读全文