在Matlab中将矢量附加到3d矩阵

时间:2016-07-09 14:30:41

标签: matlab matrix vector append

我希望通过 z 矩阵将行向量(以及后面的列向量)附加到现有的 x y 。所以基本上“为原始3d矩阵中的每个z添加一个新行(在”底部“)。考虑以下简短的Matlab程序

appendVector = [1 2 3 4 5]; % Small matrix for brevity. Actual matrices used are much larger.
origMatrix   = ones(5,5,3);
appendMatrix = [origMatrix( ... ); appendVector];

我的问题是:我如何添加(使用Matlab风格的矩阵地址,而不是“手动”C类循环)origMatrix(...)以便附加上面的向量?请随意添加关于如何对列向量执行相同操作的建议(我认为正确的方法是在Matlab中使用'-operator)。

1 个答案:

答案 0 :(得分:1)

A" row"在3D矩阵中实际上是一个多维数组。

size(origMatrix(1,:,:))
%   5   3

因此,要附加一行,您需要附加一个5 x 3数组。

toAppend = rand(5, 3);
appendMatrix = cat(1, origMatrix, toAppend);

可以只追加一个5元素的向量,并为第三个维度指定一个索引。在这种情况下,"行"的值对于第三维中的所有其他索引,将用零填充。

appendVector = [1 2 3 4 5];
origMatrix = ones(5,5,3);

appendMatrix = origMatrix;
appendMatrix(end+1, :, 1) = appendVector;

相反,如果您希望沿第三维追加相同的向量,可以使用repmat将向量转换为1 x 5 x 3数组,然后附加该数据。

appendVector = repmat([1 2 3 4 5], 1, 1, size(origMatrix, 3));
appendMatrix = cat(1, origMatrix, appendVector);