如何解决为什么ToMatlab []在Matlab中随机产生无效矩阵垂直错误? 包括错误修正
| 我一直在使用ToMatlab [](可从http://library.wolfram.com/infocenter/MathSource/577/获得)将Mathematica表达式转换为Matlab,以便对模型进行数值模拟。 我最近遇到了一个错误:我试图让Matlab评估ToMatlab []产生的函数,但是它给了我以下错误:??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
这意味着我有一个非正方形矩阵(即没有矩阵)。
到处搜索并发现(一个)提到该错误,但未提及解决方案:http://groups.google.com/forum/#!searchin/comp.soft-sys.math.mathematica/tomatlab/comp.soft- sys.math.mathematica / cxNZC9IYgfQ / 2Q6jP4U4hzkJ
解决方法
深入研究它,发现问题出在哪里:
如果foldlines []例程在二进制和一元运算符(例如+和-)之前用\“ ... \”文字折叠一行,则使用原始ToMatlab []例程转换符号矩阵会引入错误。 ),并且不能用空格将其右操作数分隔开(例如,用\“ + 5 \”代替\“ + 5 \”)。
原因是根据Matlab文档,点-点符号\“ ... \”被解释为矩阵中的空格。这导致引入了额外的元素。请参阅随附的示例以获取说明。
我可以通过在Plus转换模式\“ ToMatlabaux [e_ /; Head [e] === Plus]中用\” + \“替换\” + \“来填充\” + \“运算符来解决此错误\”。我对原始ToMatlab []例程进行了此更改,并进行了类似(但不重要)的样式更改,并将其上传到以下位置的pastebin中:
http://pastebin.com/TcjErHVT-ToMatlab错误修正
我试图就此问题与Ojanen博士联系,但我从他的旧邮件服务器收到一个错误,说他的用户名在那里不再存在。
我也将此事告知了Wolfram,但他们说,应由贡献者来更新自己在Library Archive中的代码。
[附加示例]
EDU>> [3 + 5]
ans =
8
EDU>> [3 + ...
5]
ans =
8
EDU>> [3 +...
5]
ans =
3 5
EDU>> [3 (+ 5)]
ans =
3 5
EDU>> [3 ...
+5]
ans =
3 5
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。