现代控制理论—连续系统的离散化
连续系统和离散系统
- 连续系统:时间是连续变量,状态方程和输出方程在连续时间上定义,常见形式为微分方程。
- 状态方程:
- 离散系统:时间是离散变量,只在特定的采样时刻
( 为整数, 为采样周期)进行更新,常用差分形式描述。 - 离散状态方程:
连续系统离散化的常见方法
矩阵指数法(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);