0%

连续系统的离散化

现代控制理论—连续系统的离散化

连续系统和离散系统

  • 连续系统:时间是连续变量,状态方程和输出方程在连续时间上定义,常见形式为微分方程。
    • 状态方程:
  • 离散系统:时间是离散变量,只在特定的采样时刻(为整数,为采样周期)进行更新,常用差分形式描述。
    • 离散状态方程:

连续系统离散化的常见方法

矩阵指数法(Exact Discretization)

  • 假设输入在一个采样周期内保持恒定(也就是在每一个输出周期内,持续保持一个输出值,直到下一个输出周期到达),利用矩阵指数计算状态转移矩阵:
  • 这种方法精确且适合于线性系统,但计算矩阵指数需要较多计算资源。

零阶保持(ZOH,Zero-Order Hold)

  • 假设在每个采样周期,输入保持恒定。这是数字控制器中最常见的假设。
  • 离散化结果:
  • 优点:零阶保持方法真是反映了输入的恒定值,适用于数字控制系统。
  • 缺点:仅适用于输入恒定的情况,无法捕捉输入频繁变化的场景。

向后差分器(Backward Difference Method)

  • 用差分近似替代连续系统的微分:
  • 得到离散状态方程:
  • 优点:该方法计算简单。
  • 缺点:在系统动态较快时,误差较大。

双线性变换(Tustin变换)

  • 双线性变换通过将-域中的系统映射到-域:
  • 离散化之后的传递函数:
  • 优点:保留了系统的稳定性,适用于模拟动态快的系统。
  • 缺点:对于高频成分的处理不够精确。

连续系统离散化的关键问题

  • 采样周期的选择:采样周期太短会导致计算成本的增加,太长会丢失系统的动态信息。通常,采样周期应满足奈奎斯特采样定律,即采样频率大于信号最高频率的两倍。
  • 量化误差:离散化过程中需要考虑计算机处理中的精度限制,避免由于量化误差导致的系统不稳定性。
  • 抗混叠滤波:在进行离散化之前,常需要对连续信号进行滤波处理,以避免高频成分造成混叠现象。

MATLAB实现示例

以下是MATLAB中实现连续系统到离散系统转换的代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
% 定义连续系统状态空间模型
A = [0 1; -2 -3];
B = [0; 1];
C = [1 0];
D = 0;

% 采样周期
T = 0.1;

% 使用零阶保持法进行离散化
sys_c = ss(A, B, C, D); % 连续系统
sys_d = c2d(sys_c, T, 'zoh'); % 离散系统

% 输出离散化后的系统矩阵
[A_d, B_d, C_d, D_d] = ssdata(sys_d);
disp('离散化后的系统矩阵:');
disp('A_d = '); disp(A_d);
disp('B_d = '); disp(B_d);
disp('C_d = '); disp(C_d);
disp('D_d = '); disp(D_d);