Автоматически увеличивать имя файла VideoWriter MATLAB
У меня есть MATLAB для записи трех веб-камер одновременно. Я хочу захватить и сохранить каждый канал в файл и автоматически увеличить его имя файла, он будет заменен на Experion_0001.avi, за которым следует эксперимент_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 каждый раз.
Есть мысли о том, как это эффективно реализовать?
Благодарю.
1 ответ
Не забывайте, что у 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