0

我将 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 回答