MATLAB S函数中的mdlDerivatives是怎么应用的?讲的越详细越好。

发布网友 发布时间:2022-04-24 01:28

我来回答

2个回答

热心网友 时间:2023-10-18 13:40

1、首先打开matlab软件。

2、以函数xsin2x/x^2+1为例,在matlab命令行输入函数表达式。

3、首先定义一个符号变量,在命令行输入 syms x y。

4、在matlab中输入函数表达式。

5、最后使用函数极限limit求得函数的极限,将对应的参数带入limit中,limit(y,x,0),求得函数趋于0的极限。

热心网友 时间:2023-10-18 13:40

这个是典型的s-function计算状态方程。
首先定义了ABCD的值,mdlInitializeSizes里面写入初始值,mdlDerivatives下面写入微分方程,mdlOutputs里面写入输出方程。
mdlDerivatives虽然写入的是微分方程,其实本质上是对方程进行积分,然后输出到sys里面,sys通过中间变量x传输到Output的x里面。追问例子中的sys = A*x + B*u;sys = C*x + D*u;两条语句中的各个变量具体是怎么样变化?能不能详细的说明一下啊?这两条语句中B和D后面的u是指的什么? x的值从哪里输入,通过什么样的途径发生改变?

追答s-function利用flag依次调用各个子程序。
t是时间,x是中间变量,u是输入,ABCD是赋予的系统参数
function sys=mdlDerivatives(t,x,u,A,B,C,D)
sys = A*x + B*u; % end mdlDerivatives
首先,这些参数传递给mdlDerivatives的 A*x + B*u,计算之后赋予sys,mdlDerivative对该sys进行积分,积分后的值赋予x,然后进行下一个flag。
function sys=mdlOutputs(t,x,u,A,B,C,D)
sys = C*x + D*u; % end mdlOutputs
其次,这些参数传递给mdlOutputs的 C*x + D*u,计算之后赋予sys。
最后,mdlOutputs将sys中的数输出到外部。

对于初学者而言,我上面所说的已经足够了。即便是simulink也只是把必要的部分给用户进行编程,而不会涉及更深的东西。你应该要理解的是,simulink是在每个采样点计算一次整个模型,当把这些采样点上的数据连起来,就能看见整个仿真时间内动态的波形了。

热心网友 时间:2023-10-18 13:40

1、首先打开matlab软件。

2、以函数xsin2x/x^2+1为例,在matlab命令行输入函数表达式。

3、首先定义一个符号变量,在命令行输入 syms x y。

4、在matlab中输入函数表达式。

5、最后使用函数极限limit求得函数的极限,将对应的参数带入limit中,limit(y,x,0),求得函数趋于0的极限。

热心网友 时间:2023-10-18 13:40

这个是典型的s-function计算状态方程。
首先定义了ABCD的值,mdlInitializeSizes里面写入初始值,mdlDerivatives下面写入微分方程,mdlOutputs里面写入输出方程。
mdlDerivatives虽然写入的是微分方程,其实本质上是对方程进行积分,然后输出到sys里面,sys通过中间变量x传输到Output的x里面。追问例子中的sys = A*x + B*u;sys = C*x + D*u;两条语句中的各个变量具体是怎么样变化?能不能详细的说明一下啊?这两条语句中B和D后面的u是指的什么? x的值从哪里输入,通过什么样的途径发生改变?

追答s-function利用flag依次调用各个子程序。
t是时间,x是中间变量,u是输入,ABCD是赋予的系统参数
function sys=mdlDerivatives(t,x,u,A,B,C,D)
sys = A*x + B*u; % end mdlDerivatives
首先,这些参数传递给mdlDerivatives的 A*x + B*u,计算之后赋予sys,mdlDerivative对该sys进行积分,积分后的值赋予x,然后进行下一个flag。
function sys=mdlOutputs(t,x,u,A,B,C,D)
sys = C*x + D*u; % end mdlOutputs
其次,这些参数传递给mdlOutputs的 C*x + D*u,计算之后赋予sys。
最后,mdlOutputs将sys中的数输出到外部。

对于初学者而言,我上面所说的已经足够了。即便是simulink也只是把必要的部分给用户进行编程,而不会涉及更深的东西。你应该要理解的是,simulink是在每个采样点计算一次整个模型,当把这些采样点上的数据连起来,就能看见整个仿真时间内动态的波形了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com