Автоматически увеличивать имя файла 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
Другие вопросы по тегам