当一个Matlab函数块运行在一个仿真软件模型给出了一个错误,我怎么能找到错误发生,行吗?金宝app

7视图(30天)
当运行仿真软件模型,其中包含一金宝app个“解释Matlab函数”,如果一个错误发生在Matlab函数似乎没有简单的方法来找出函数的线给了错误。当发生错误时,弹出一个仿真软件诊断窗口告诉我错误发金宝app生,阻止它发生。但并没有说什么线函数的误差引起的。
这是我经常遇到的问题,很难调试。例如,它仅仅发生在半个小时到一个模拟。我可能会做的是开始输出一串值的命令窗口我可以了解在函数错误发生,但我可以花费很长的时间去寻找这样的错误在仿真时远。
似乎Matlab必须知道线引起的错误,对吗?我怎么能让它告诉我吗?
感谢任何帮助!

接受的答案

安德森
安德森 2013年5月31日
好吧,一个同事(Alexander Brissette)使用try - catch想出一个好的解决方案。是这样的:
试一试
<代码可能产生的错误>
犯错
犯错
err.stack
行= err.stack (1) .line
结束
这个打印错误、文件名和行号。您还可以将一个观察点“捕获”块中可以看到你所有的变量时发生错误。你可以把一个完整的功能在try块。函数被调用时,它甚至在仿真软件!金宝app

更多的答案(2)

大卫·桑切斯
大卫·桑切斯 2013年5月31日
3评论
安德森
安德森 2013年5月31日
这两个模型的错误金宝app消息是:错误解读Matlab功能块和矩阵维度必须一致
不幸的是至少有几百的矩阵运算函数,给出了错误,所以这是一个乏味的过程来缩小。
如果你的意思是“复杂的”(真实+虚构的),不,没有复杂的信号。

登录置评。


Kaustubha Govind
Kaustubha Govind 2013年5月31日
你可以尝试使用 dbstop如果错误 是否发生错误时执行减免。
1评论
安德森
安德森 2013年5月31日
这似乎是一个好主意,但它不工作。看来“dbstop如果错误”从内部函数被调用时,将忽略仿真软件。金宝app我不“清除所有在运行之前,所以我不确定为什么仿真软件会忽略dbstop ....金宝app

登录置评。

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!