有一个一阶微分方程组:
在数字计算机上实现此方程,就需要将其转换为离散时间。用 x ( kT )和 u ( kT )表示 kT 时刻 x ( t )和 u ( t )的值。使用后向差分估计( k +1) T 时刻的导数
然后取系统的离散时间形式如下
重新排列得
x (( k +1) T )=(1 -aT ) x ( kT )+ Tbu ( kT )
x (0)= x 0
例如,假设 x 0 =1, u ( t )=cos( t )则
该递归离散时间模型用于在数字计算机上实现连续时间系统。
以输入 u 为单位阶跃输入,该系统的Simulink框图如图4-8所示。
当仿真运行时,Simulink将框图转换为离散时间形式并运行程序。输入 u 为单位阶跃输入, u 上方为Simulink库的常数模块,其中为“1”。虽然使用了1/ s 模块(积分器),但仿真仍是一个时域过程。模块应当使用积分符号∫,但常用1/ s 表示。
图4-8 , x (0)= x 0 的Simulink框图
在拉普拉斯域中(假设零初始状态下)为
Simulink框图如图4-9所示。
Simulink随后将其转换为
x (( k +1) T )=(1 -aT ) x ( kT )+ Tbu ( kT )
然后在数字计算机上生成C代码。当使用传递函数的时候,Simulink假设初始条件为零。
图4-9 的Simulink框图
在这两例中, u 作为单位阶跃输入,“1”被放入Simulink库中的constant模块,则 u ( kT )=1( k =0,1,2,…)。
图4-10所示为例1中的水平弹簧质点系统的仿真框图。此框图的左上角显示了已选择的Simulation值。右侧是DEBUG和MODELING。单击MODELING,选择后单击Model Settings打开Configuration_Parameters对话框,如图4-11所示。
图4-10 的仿真
图4-11 配置参数的对话框
在图4-11的Simulation time模块中,已设置Start time:0.0和Stop time:10(s)。注意Solver options设置为Type:fixed-step,Solver:ode1(Euler),Fixed-step size(fundamental sample time):0.001(s)。图4-10的垂直黑色条为Mux模块,可以在Simulink库的Signal Routing中找到。双击To File模块可以打开如图4-12的对话框。数据存储在名为output.mat的MATLAB数据文件中。这个文件中的数据被称为outputdata,是由三行数组(矩阵)组成的,第一行为时间,第二行为位置 x ,第三行为输入力 f 。
在运行Simulink文件之前,请运行如下MATLAB程序:
运行Simulink程序,随后转到MATLAB运行以下程序绘制数据。
图4-12 到文件模块的对话框