#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