Matlab编码器错误"for loop index expressions.."如何修改代码?
Matlab coder error "for loop index expressions.." how to modify code?
在 Matlab 编码器上,每当我在 for 循环中用于索引向量时,我都会收到错误 "FOR loop index expressions of unknown size are only supported if they are of the form A:B or A:B:C",例如:
for e=s:-1:1
for l=1:s
for k=1:b
E=find(sum(B(:,l,:))==k)';
coder.varsize('E', [1,70],[0,1]);
for j=E
coder.varsize('i', [1,70],[0,1]);
for i=E
if isequal(B(:,e,i),B(:,e,j)) %for k=1 we want the second column of i to be identical to the first colum of j or vice versa.
if isequal(sort(sum(B(1:s,s+1:b+s,i))),sort(sum(B(1:s,s+1:b+s,j))))
B(:,l,i)=B(:,l,j);
B(l,:,i)=B(l,:,j);
else
;
end
end
end
end
end
end
end
我知道编码器需要 "A:B" 之类的东西,但是我的向量 E 包含例如 [7,11,13] 并且我不能使用 "E(1,1):E(1,3)" 这样的东西,因为那样我显然得到 7 8 9 10 11 12 13.
关于如何修改代码有什么建议吗?
谢谢
为什么不简单地做:
for ind = 1:length(E)
i = E(ind);
% ...
end
在 Matlab 编码器上,每当我在 for 循环中用于索引向量时,我都会收到错误 "FOR loop index expressions of unknown size are only supported if they are of the form A:B or A:B:C",例如:
for e=s:-1:1
for l=1:s
for k=1:b
E=find(sum(B(:,l,:))==k)';
coder.varsize('E', [1,70],[0,1]);
for j=E
coder.varsize('i', [1,70],[0,1]);
for i=E
if isequal(B(:,e,i),B(:,e,j)) %for k=1 we want the second column of i to be identical to the first colum of j or vice versa.
if isequal(sort(sum(B(1:s,s+1:b+s,i))),sort(sum(B(1:s,s+1:b+s,j))))
B(:,l,i)=B(:,l,j);
B(l,:,i)=B(l,:,j);
else
;
end
end
end
end
end
end
end
我知道编码器需要 "A:B" 之类的东西,但是我的向量 E 包含例如 [7,11,13] 并且我不能使用 "E(1,1):E(1,3)" 这样的东西,因为那样我显然得到 7 8 9 10 11 12 13.
关于如何修改代码有什么建议吗?
谢谢
为什么不简单地做:
for ind = 1:length(E)
i = E(ind);
% ...
end