2011-10-23 1 views
0

그래서 루프에서 루프의 데이터가로드에 성공한 경우에만 모든 명령문을 실행하고 싶습니다. 다른 방법은 루프가 다음 반복을 계속하기를 원합니다.조건이 성공적인 데이터로드 일 때 if 문을 사용하는 방법은 무엇입니까? MatLab

 for l=1:.5:numfilesdata 

    if H(x,y)= load(['C:\Users\Abid\Documents\MATLAB\Data\NumberedQwQoRuns\Run' num2str(t) '\Zdata' num2str(l) '.txt']); 


     %%%%%Converting Files 
     for x=1:50; 
      for y=1:50; 
      if H(x,y)<=Lim; 
       H(x,y)=0; 
      else 
       H(x,y)=1; 
      end 
      end 

      A(t,l)=(sum(sum(H))); %Area 

      R(t,l)=(4*A(t,l)/pi)^.5; %Radius 
     end 
     end 

당신은 내가 0.5 씩 증가하고, 부하가 나는 루프가 기본적으로 모든 작업을 건너 뛰고 다음 단계로 이동하려는 증가에서 작동하지 않는 경우에 볼 수 있듯이. 파일이 이전에 존재하는 경우

는 아비드에게,

답변

1

확인 감사 로딩 및 처리 :

if H(x,y)= load([...]); %# This tries to load dat file at x,y position in `H` 

x와 y :이 라인의 아주 확실하지 않다

if exist(filename,'file') 
    ... 
end 
1

첫 번째 루프 반복에서 알 수없는 것처럼 보이고 50,50 (후속 루프의 마지막 인덱스)으로 폴백합니다.

당신은 시도 할 수 있습니다 :

H = load([...]); %# This tries to load dat file in `H` 

if numel(H) ~= 0 
    %# iterate over H 
end 
당신은 try/catch 블록 사용할 수
1

:

for i=1:10 
    try 
     H = load(sprintf('file%d.txt',i), '-ascii'); 

     %# process data here ... 

    catch ME 
     fprintf('%s: %s\n', ME.identifier, ME.message) 
     continue 

    end 
end