如何在Matlab中改变循环条件?
我运行以下代码:如何在Matlab中改变循环条件?,matlab,loops,matrix,conditional-statements,Matlab,Loops,Matrix,Conditional Statements,我运行以下代码: for i=1:length(matr) …其中,matr是方阵。在这个循环中,matr的大小会改变,但循环似乎会继续运行,直到i不超过length(matr)的初始值为止。 如何在循环条件下保持长度(matr)的新鲜度 这是我的密码 for i=1:length(matr1) for j=1:length(matr1) if((i~=j)&&(ismember(i,ind3)==0)&&(ismember
for i=1:length(matr)
…其中,matr
是方阵。在这个循环中,matr
的大小会改变,但循环似乎会继续运行,直到i
不超过length(matr)的初始值为止。
如何在循环条件下保持长度(matr)
的新鲜度
这是我的密码
for i=1:length(matr1)
for j=1:length(matr1)
if((i~=j)&&(ismember(i,ind3)==0)&&(ismember(j,ind3)==0))
if (i>length(matr1))||(j>length(matr1))
continue
end
ind1 = find_tree(matr1,i);
ind2 = find_tree(matr1,j);
b = is_isomorphic(matr1(ind1,ind1),matr1(ind2,ind2),encode(ind1),encode(ind2));
if b,
number = number + length(ind1);
matr1(ind2,:) = [];
matr1(:,ind2) = [];
ind3 = find(summ_rows==-1);
end
end
end
end
我设法补充说
`if (i>length(matr1))||(j>length(matr1))`,
…因为
i
和j
超出了矩阵的维数 您应该使用while
循环:
ii = 0;
while(ii <= length(matr))
ii = ii + 1;
%// Your loop code here: e.g. the following line that alters the size of matr
matr = rand(randi(20) + 10);
end
ii=0;
虽然(ii)你能描述一下你的循环试图做什么吗?你可能应该使用while
循环来做这个,而不是循环来做谢谢你。而且,是真的吗,for循环的边界是在初始迭代之前才计算出来的?@restest是的,据我所知,这是真的。对你来说测试起来很容易,我认为这可能是相对的ted到JIT加速。你会得到不同的结果吗?@bdecaf如果我没有测试过,但我不这么认为。1:length(matr1)
首先创建一个向量[1,2,3…
,然后I
将迭代该向量。我非常确信这是在创建循环时设置的,无论是JIT还是否。