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