Matlab编码器/代码生成——数组大小不匹配 我有以下功能代码(不是我自己),我试图通过C++代码生成来实现。 exampleData = double(dataRight(:,2)) < (pointsRight(1,2) + objLength + 0.101);

Matlab编码器/代码生成——数组大小不匹配 我有以下功能代码(不是我自己),我试图通过C++代码生成来实现。 exampleData = double(dataRight(:,2)) < (pointsRight(1,2) + objLength + 0.101);,matlab,Matlab,然而,matlab的网站说,在这种情况下,不匹配的大小是。此外,Matlab Coder没有特别的异常或奇怪之处,所以我有点不明白为什么会出现这个错误。长话短说:您必须自己实现一个c风格的解决方法。我相信问题的原因是数组的无限大,如上所述。我用大小(数组)和for循环解决了这个问题 这是问题代码: dataRight = dataRight(double(dataRight(:,2))>pointsRight(1,2)+0.099 & double(dataRight(:,2))&

然而,matlab的网站说,在这种情况下,不匹配的大小是。此外,Matlab Coder没有特别的异常或奇怪之处,所以我有点不明白为什么会出现这个错误。

长话短说:您必须自己实现一个c风格的解决方法。我相信问题的原因是数组的无限大,如上所述。我用大小(数组)和for循环解决了这个问题

这是问题代码:

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

dataRight=dataRight(double(dataRight(:,2))>pointsRight(1,2)+0.099&double(dataRight(:,2))pointsRight(1,2)+0.099&double(val)您能否在
pointsRight上共享转储文件?
?您真的尝试过吗?据我所知,不匹配大小错误是在您想要访问不存在的行列时出现的。[0.051759680404457,0.01,0.0784]。代码运行良好,不需要编码器进行转换。此外,
test=(pointsRight(1,2)+objLength+0.101)
运行良好。这是我看到的
的具体介绍。。所以基本上问题是
(pointsRight(1,2)+objLength+0.101)
标量(只有一个元素),而
双元素(dataRight)((2))可能不止一个元素(多行)…我不确定我理解。这是一个编码器特定的限制吗?<代码> A=(5,4,3];B= A>4 < /Cord>作品,在编码器之外。它产生[1,0,0]。嗯,我明白你的意思。这确实是怪异的。我认为这是C++代码生成的局限性。
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