生成多维数组(张量)
在为高维数组赋值的时候, 希望同时对多个维度赋相同的值, 如
A = zeros(3,3,5);
B = eye(3);
考虑将 \(A\) 的 5 个维度矩阵的值都设为 \(B\).
注意! 此处是错误语法 直接使用如下的语法会报错
A(:,:,1:5) = B; % 报错内容: 赋值具有的非单一 rhs 维度少于非单一下标数
正确的做法是先利用 \(B\) 生成一个与 \(A\) 维度相同的高维数组, 再对 \(A\) 进行赋值, 此时赋值前需要如下操作(即生成每个维度的矩阵都是 \(B\) 且大小为 (3,3,5) 的数组)
C = repmat(B, [1,1,5]);
A = C;
此外, 生成高维数组的函数还有 cat, 使用方法如下
A = eye(3);
dim = 3;
B = cat(dim, A, 2*A, 3*A)
% B(:,:,1) =
% 1 0 0
% 0 1 0
% 0 0 1
% B(:,:,2) =
% 2 0 0
% 0 2 0
% 0 0 2
% B(:,:,3) =
% 3 0 0
% 0 3 0
% 0 0 3
但是当需要赋值的维数较高时, 属实有点不方便.