matlab-simulink 报错集锦

1.小白错误:如果simulink中有m 或 s function,要先运行一下它,工作区才有相关参数,simulink才能跑下去

否则会报错:大致就是找不到“xxx”,这个xxx就是simulink中 sfunction 或 m 文件的名字

2. 大致的报错就是说:xxx的输出必须为长度位 x 的实数向量

这个其实就是说输出的vector少了一维,那么都定义好了为什么会少了一维?
如果输出因为某种运算变大或变小
那么就会出现输出为 NaN 或者 Inf 的问题,而matlab不把NaN 和 Inf 看作为数据,因此会少了一维或多维。

解决方案:
1.加satuation模块,限制输出上下限
2.直接在sfcntion或者m里面添加限额的判断语句

3. 大致报错:在状态 x 出 出现了奇点,建议你减小步长

就是出现了 1/0的情况,或者函数变化太大,没法求导

解决方案很多,不同情况的解决方案不同。
1.加satuation
2.将仿真设置里面的起始时间从0 改成 0.001
3.将固定步长 改为 变步长
4.保持固定步长,自己缩小步长(3、4选一个就行,一个不行试一下另一个)

4. 合并两个simulink的时候,可能会出现单独测,两边都跑的通,放一起跑不通的现象

问题在于,两个simulink的求解器或者其他设置不同。
我遇到的问题就是两个simulink 一个用的变步长求解,一个用定步长求解
用变步长求解的设置为定步长后就报错了,用信号检测发现它有一个很明显的脉冲。
那么在尖峰的时候,就没法求导,就出现了奇点,但是因为使用的时变步长,它采样点会很细(会自动变细),所以就不会认为是一个尖峰。
所以正确做法是把变步长改为定步长,然后把采样时间间隔调的很小,然后试着跑一下。
跑过了
两个放一起,用统一的采样时间间隔,就可以跑通了。

5.matlab m 程序,当你发现你的程序跑的很慢,在所有该加分号的后面加分号,会提升效率

打印会大大拖慢matlab的运行速度,尤其是有很多循环,且次数很大的时候。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值