2016-09-16 3 views
3

내가 MATLAB에 다음 코드에서 일하고 있어요 : 나는 끝을 위해 전에이 줄 m=unique(x);를 작성하여 m을 업데이트했지만Matlab : for 루프의 제한을 동적으로 업데이트하는 방법?

m=unique(x); 
for i=1:length(m) 
%some code that increase the number of unique values in x 
....... 
....... 
%here I tried to update m 
m=unique(x); 
end 

는, for 루프의 한계는 여전히 예전의 값을 갖는다. for 루프의 제한을 동적으로 업데이트해야합니다. 그게 가능하니? 가능하다면 어떻게 할 수 있습니까?

답변

5

MATLAB이 for i = 1:length(m)을 충족하면 문을 for i = [1 2 3 ... length(m)]으로 변환합니다. 하드 코딩 된 것으로 간주 할 수 있습니다. 따라서 for 루프 내 for-limit 업데이트는 영향을 미치지 않습니다.

m = unique(x); 
i = 1; 
while true 
    if i > length(m) 
     break 
    end 
    % do something 
    i = i + 1; 
    m = unique(x); 
end 
+7

또는 약간 더 간단합니다.'m = unique (x); ii = 0; ii

+0

@ LuisMendo 귀하의 답변은 훨씬 더 나은, 너무 나쁜 그것은 단지 의견입니다. – Bernhard