Matlab编码器/代码生成 - 阵列大小不匹配

时间:2017-08-28 00:21:27

标签: matlab

我试图通过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编码器的特殊例外或奇怪,所以我有点迷失了为什么我会收到此错误。

1 个答案:

答案 0 :(得分:0)

长话短说:您必须自己实施c风格的解决方法。我相信由问题引起的是上面数组的无限大小。我用size(array)和for循环解决了这个问题。

这是问题代码:

dataRight = dataRight(double(dataRight(:,2))>pointsRight(1,2)+0.099 & double(dataRight(:,2))<pointsRight(1,2)+objLength + 0.101,:);

以下是编码器接受的代码:

[widthDataRight,heightDataRight]= size(dataRight)
tempDataRight = zeros(widthDataRight,heightDataRight)
for i = 1:widthDataRight
     val = dataRight(i,2)
     tempDataRight = dataRight(double(val)>pointsRight(1,2)+0.099 & double(val)<pointsRight(1,2)+objLength + 0.101,:);
end