如何在Matlab中改变循环条件?

Mac*_*nos 2 matlab loops matrix conditional-statements

我运行这段代码:

for i=1:length(matr)
Run Code Online (Sandbox Code Playgroud)

...哪里matr是方阵.在这个循环中大小的matr变化,但似乎循环继续运行,直到i不超过初始值length(matr)

如何保持length(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
Run Code Online (Sandbox Code Playgroud)

我设法添加

`if (i>length(matr1))||(j>length(matr1))`, 
Run Code Online (Sandbox Code Playgroud)

...因为ij超出了矩阵的维度.

Dan*_*Dan 6

你应该使用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
Run Code Online (Sandbox Code Playgroud)