Как использовать оператор if, когда условием является успешная загрузка данных? MatLab

#matlab #for-loop #if-statement #matlab-load

#matlab #для цикла #if-statement #matlab-загрузка

Вопрос:

Итак, в цикле я хочу, чтобы все операторы выполнялись только в том случае, если загрузка данных if в этом цикле прошла успешно. Иначе я хочу, чтобы цикл продолжался до следующей итерации.

        for l=1:.5:numfilesdata

     if H(x,y)= load( ['C:UsersAbidDocumentsMATLABDataNumberedQwQoRunsRun' 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
  

Как вы можете видеть, я увеличиваю на .5, и если загрузка не работает с этим шагом, я хочу, чтобы цикл по существу пропустил все операции и перешел к следующему шагу.

Спасибо, Abid

Ответ №1:

Перед загрузкой и обработкой проверьте, существуют ли файлы:

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

Ответ №2:

Я не совсем уверен в этой строке:

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

x и y кажутся неизвестными на первой итерации цикла, затем возвращаются к 50,50 (последний индекс последующего цикла).

Вы можете попробовать:

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

if numel(H) ~= 0
  %# iterate over H
end
  

Ответ №3:

Вы могли бы использовать блок TRY / CATCH:

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

        %# process data here ...

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

    end
end