0

したがって、ループでは、そのループ内のデータのロードが成功した場合にのみ、すべてのステートメントが実行されるようにします。それ以外の場合は、ループを次の反復に続行します。

       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 ずつインクリメントしています。そのインクリメントで負荷が機能しない場合は、ループで基本的にすべての操作をスキップして次のステップに進みます。

ありがとう、アビド

4

3 に答える 3

1

ロードして処理する前に、ファイルが存在するかどうかを確認してください。

if exist(filename,'file')
    ...
end
于 2011-10-23T08:41:47.327 に答える
1

TRY/CATCHブロックを使用できます。

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
于 2011-10-23T23:39:46.013 に答える
1

この行についてはよくわかりません:

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
于 2011-10-23T09:31:36.277 に答える