继续丹尼尔的回答,您的问题源于您不太了解如何permute
工作的事实。的目标permute
是重新排列矩阵的维度,但保持矩阵的大小不变。您指定要“置换”的矩阵以及告诉您哪些输入维度映射到输出的向量。
这permute(vid, [2 1 3]);
意味着输入的第二维进入输出的第一维。输入的第一个维度转到输入的第二个维度,第三个维度保持不变。这样做的效果vid
是一个 3D 矩阵,其中每个 2D 切片/帧都被转置,同时在最终输出中保持相同数量的切片/帧。您正在交换第二维和第一维,这基本上是转置所做的。
因此,第一个加载语句通过变量加载到您的帧中vid
,并且vid123
最初有一些帧,其中每个帧都被转置 - 这些对应于第一个视频。在此之后,您将加载第二个视频,该视频vid
会被第二个视频中的帧覆盖。然后,您将这些框架添加到vid123
. 因此,您只需将第一帧和第二帧中的帧拼凑在一起 - 转置创建一个更大的视频。
我强烈建议您重新保存它,以便两个视频被不同的变量清楚地分开,或者可能有一个包含两个视频的结构。将变量vid
存储在两个单独的文件中是有问题的。
像这样的东西会起作用:
load([filename '_vid1']);
vid1 = vid;
load([filename '_vid2']);
vid2 = vid;
clear vid;
save videos;
...甚至这会起作用:
load([filename '_vid1']);
s.vid1 = vid;
load([filename '_vid2']);
s.vid2 = vid;
clear vid;
save videos;
在第一个版本中,两个视频都存储在单独的变量中vid1
,vid2
而第二个版本,两个视频都保存在一个结构中。