【发布时间】:2018-02-05 05:14:27
【问题描述】:
我有以下功能代码(不是我自己的),我正在尝试生成 C++ 代码。
exampleData = double(dataRight(:,2)) < (pointsRight(1,2) + objLength + 0.101);
但是,表达式的右侧失败了,原因是小于号的左侧和右侧之间的大小不匹配。
Size mismatch (size [:? x 1] ~= size [0 x 0]).
但是,matlab 的网站说,在这种情况下,不匹配大小是the typical use case。此外,Matlab Coder 没有特别的异常或奇怪之处,所以我有点迷茫为什么会收到这个错误。
【问题讨论】:
-
你能在
pointsRight上分享一个转储吗?你真的试过这个吗?据我所知,大小不匹配错误是当您想要访问不存在的行列时.. -
[0.051759680404457,0.01,0.0784]。代码在编码器尝试转换之外运行良好。此外,
test = (pointsRight(1,2) + objLength + 0.101)运行良好。具体是<的引入导致了错误。 -
啊我明白了.. 所以基本上问题是
(pointsRight(1,2) + objLength + 0.101)标量(只有一个元素),而double(dataRight(:,2))可能有多个元素(多行).. -
我不确定我是否理解。这是特定于编码器的限制吗?
A = [5,4,3]; B= A > 4在编码器之外工作。它产生 [1,0,0]。 -
嗯,我明白你的意思。这确实很奇怪。我认为这是 C++ 代码生成的限制。
标签: matlab