在一条语句中声明多维数组

4

假设我想用一条语句创建一个尺寸为3×4×4的矩阵A(即一个等式,不包含任何连接符),类似于以下内容:

%// This is one continuous row
A = [ [ [3 3 4 4], [8 11 8 7], [4 4 6 7], [4 7 6 6] ];  ...
      [ [3 2 4 2], [9 6 4 12], [4 3 3 4], [5 10 7 3] ]; ...
      [ [2 2 1 2], [3 3 3 2], [2 2 2 2],  [3 3 3 3] ] ]
2个回答

6

连接运算符[]只能在二维中使用,例如[a b]表示水平连接或者[a; b]表示垂直连接。要创建更高维度的矩阵,可以使用reshape函数,或者先初始化所需尺寸的矩阵,然后再填充数值。例如,您可以这样操作:

A = reshape([...], [3 4 4]);  % Where "..." is what you have above

或者这个:
A = zeros(3, 4, 4);  % Preallocate the matrix
A(:) = [...];        % Where "..." is what you have above

第二个是我做的。非常感谢。 - Viktor

6

您可以使用cat函数将二维矩阵沿第三个维度“叠加”,例如:

A = cat(3, ones(4), 2*ones(4), 3*ones(4));

从技术上讲,这是连接操作,但仍然只有一个赋值操作。

CATLAB


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接