Simulink框图替代S函数加速仿真

从毕设开始就一直用matlab仿真,主要是机器人和电机方面的,一般都用S函数建立模型。在仿真过程中反复调用S函数,导致仿真速度一直很慢,几个小时都有。在学电机课程中,遇到了同样的问题。但是别人用框图建立的模型就无比流畅,因此我又用框图把原来的机器人模型重新搭了一遍,那感觉就像是,飞鸽传书到5G。记录一些感受。
我认为用框图搭模型的缺点有以下:
1. 搭模型比写代码更慢。这可能跟熟练度有关系,我因为不太熟悉矩阵的框图操作,耽误了好久。但是确实慢一些,尤其是矩阵多的话。
2. 可读性差。代码的命名如果还可以那代码看起来不是太难,尤其是S函数一般不太长,比较清晰;但是一行代码、一个公式可能就是一片元器件,几行混在一起如果不注释,自己查问题都头疼。所以,一定要,注释清楚重要的信号线、模块
3. 不容易改。比如我有个循环语句,为了提高速度在框图里可以扩展成n个模块并联(其实是我不知道有for)。最后要改,就先改一个,然后复制粘贴到其他的地方,好在只要一开始模块大小就是一样的,调整好位置线会自动接上。
4. Debug时数据读取不太方便。标量、不太长的向量可以点击信号线直接看,但是矩阵和长向量就不行,需要display。而且仿真的时候不能改动框图,所以只能先停再加。
矩阵无法显示

总的来说利大于弊,习惯了就好。下面记录一些用到的向量,矩阵操作。

  1. 矩阵乘法/求逆/转置
    在这里插入图片描述
    Number of inputs: 输入的个数,也可以用符号同时表示个数和选择乘除法
    Multiplication:数乘以矩阵或者数乘用Element-wise,矩阵乘法用Matrix
    在这里插入图片描述
    转置通过Math Function中的Transpose实现,埃尔米特矩阵也在这里
    在这里插入图片描述
  2. 向量点积、叉积
    在这里插入图片描述
    在这里插入图片描述
  3. 向量模长、范数
    长度为2的话,可以用math Function 中的hypot
    在这里插入图片描述
    大于2的,可以用点乘、相加再开方的方法,这样可以直接求矩阵的行、列向量模长
    在这里插入图片描述
  4. 矩阵拆分和拼接
    拆分用selector
    在这里插入图片描述
    如果是矩阵,设置输入维数为2维。列表中1、2分别代表行和列,Index option可以选择Index vector (dialog),在对话框中设置,我这里设置的第1,3行、第2,4列;也可以选择Index vector (port)动态设置。在这里插入图片描述
    拼接用Matrix Concatenate
    在这里插入图片描述
    参数Concatenate dimension1和2分别表示竖直拼接和水平拼接
    在这里插入图片描述
    暂时就想到这些,欢迎交流和指正 (:
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值