为什么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
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...