我想生成一个N×N×3的矩阵A这样A(:,:,i) = eye(n)*i 。在不使用for循环的情况下(即以矢量化方式)如何做到这一点?
回答:
如果在引入BSXFUN之前具有较旧的MATLAB版本,请考虑以下选项(与
@Jonas给出的答案相同):
N = 4; M = 3; A = repmat(eye(N),[1 1 M]) .* repmat(permute(1:M,[3 1 2]),[NN 1]) A(:,:,1) = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 A(:,:,2) = 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 A(:,:,3) = 3 0 0 0 0 3 0 0 0 0 3 0 0 0 0 3
更多&回答...