0

同時に 3 つの Web カメラを記録するように MATLAB を設定しました。各フィードをキャプチャしてファイルに保存し、ファイル名を自動的にインクリメントしたいと考えています。これは、experiment_0001.avi に置き換えられ、その後に experiment_0002.avi が続きます。

現時点で私のコードは次のようになります

set(vid1,'LoggingMode','disk');
set(vid2,'LoggingMode','disk');

avi1 = VideoWriter('X:\ABC\Data Collection\Presentations\Correct\ExperimentA_002.AVI');
avi2 = VideoWriter('X:\ABC\Data Collection\Presentations\Correct\ExperimentB_002.AVI');
set(vid1,'DiskLogger',avi1);
set(vid2,'DiskLogger',avi2);

毎回002を増やしています。

これを効率的に実装する方法について何か考えはありますか?

ありがとう。

4

1 に答える 1

0

matlab は C プログラミング言語にルーツがあることを忘れないでください。つまり、sprintfのようなものが機能します

したがって、3 つのスペースにゼロが埋め込まれた整数値を出力しているので、次のようなものが必要になりますsprintf('%03d',n)% は、テキストではない出力する値があることを意味します。0 は左側のゼロ パッドを意味し、3 は 3 桁までのパッドを意味し、d は数値自体が整数であることを意味します。

文字列の代わりに sprintf を使用してください。s は、フォーマットされたS文字列印刷を意味します。したがって、文字列が出力されます。ここにあなたができることのアイデアがあります

set(vid1,'LoggingMode','disk');
set(vid2,'LoggingMode','disk');

for (n=1:2:max_num_captures)
    avi1 = VideoWriter(sprintf('X:\ABC\Data Collection\Presentations\Correct\ExperimentA_%03d.AVI',n));
    avi2 = VideoWriter(sprintf('X:\ABC\Data Collection\Presentations\Correct\ExperimentB_002.AVI',n));
    set(vid1,'DiskLogger',avi1);
    set(vid2,'DiskLogger',avi2);
end
于 2015-04-08T23:27:37.397 に答える