matlab的m函数入门2

1. 概述

阅读此篇 matlab中s-function函数的使用的一点思考和帮助,并对最后一段代码进行解析,便于初学者更好的入门。

2. 代码解析
function [sys,x0]=dong(t,x,u,flag)
%一系统如下:
%  dx1=x2
%  dx2=9.81*sin(x(1))-2*x(2)+u
%  此系统的输出是 sys = [dx1;dx2]

% 根据 传入 flag 值的不同分别执行不同的程序,最终的输出一定是 sys 的值
if flag==0  %当 flag 的值为 0 ,直接输出 [2;0;2;1;0;0]
    sys=[2;0;2;1;0;0];
    x0=[0;0]; % 注意x0 = [0;0] 是不会输出的,输出一定是 dong函数的结果 sys
elseif flag==1 
    %当 flag 的值为 1 ,直接输出 [2;0;2;1;0;0],此时注意调用格式为:
    %   dong(t,[x1,x2],u,flag) 即 x 应该为 1*2 的向量
    sys=[x(2);9.81*sin(x(1))-2*x(2)+u];
elseif flag==3   %当 flag 的值为 3 ,直接输出输入的变量值x1,x2
    sys=[x(1);x(2)];
else   %当 flag 的值为其他值时,输出为空
    sys=[];
end
3. 运行解析
  • 当在matlab编辑器中输入完上述代码后,若直接点击运行按钮会出现错误如下
    在这里插入图片描述
    图片左边是编辑器窗口的错误提示信息,右边是命令行窗口的错误提示信息,这是因为我们没有给这个函数设置输入参数,现在有两种输入方法
  • 在编辑器输入输入参数,及在提示错误后,直接在编辑器中输入参数,下图蓝色部分,以为flag==0,因此命令行窗口中输出为 ans = [2 0 2 1 0 0]T
    在这里插入图片描述
  • 在命令窗口输入 dong(1,[1,1],1,0)后回车,出现结果如下(和上面编辑器输入一样)
    在这里插入图片描述
4. 思考
  • 命令行窗口输入如下代码,观察结果并思考,更好的理解此m函数```
dong(1,[1,1],1,0)
dong(1,[1,1],1,1)
dong(1,[1,1],1,3)
dong(1,[1,1],1,2)
dong(1,[1,1],1,4)

dong(1,1,1,0)
dong(1,1,1,1)
dong(1,1,1,3)
dong(1,1,1,2)
5. 参考链接
  1. 略谈matlab中S函数的概念及使用
  2. S函数初识m文件写成的S函数
  3. matlab中s-function函数的使用
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值