ループを実行するプログラムがあり、2 つの時間カウンターが必要です。1 つはループ用で、ループの 1 回の反復にかかった時間をログで示します。もう 1 つはプログラム全体用です。私の知る限りでは、tic
1toc
回しか機能しません。
ベストアンサー1
あなたはこの tic toc 構文だけを知っています:
tic; someCode; elapsed = toc;
しかし、別の構文もあります:
start = tic; someCode; elapsed = toc(start);
2 番目の構文では、同じ時間測定を行いますが、複数のストップウォッチ タイマーを同時に実行することもできます。tic の出力を変数 tStart に割り当て、toc を呼び出すときに同じ変数を使用します。MATLAB は、tic とそれに関連する toc コマンド間の経過時間を測定し、経過時間を秒単位で表示します。この構文を使用すると、ネストされた操作のタイミングを含む、複数の同時操作の時間を測定できます (tic toc の matlab ドキュメント)。
あなたの場合の使い方は次のとおりです。これがあなたのコードだとしましょう:
for i = 1:M
someCode;
end
tic and toc を次のように挿入します。
startLoop = tic;
for i = 1:N
startIteration = tic;
someCode;
endIteration = toc(startIteration);
end
endLoop = toc(startLoop);
上記の構文を使用して、i 番目の要素が i 番目の反復の時間測定値であるベクトルを作成することもできます。次のようになります。
startLoop = tic;
for i = 1:N
startIteration(i) = tic;
someCode;
endIteration(i) = toc(startIteration(i));
end
endLoop = toc(startLoop);