poster
2019-12-10, 20:48
我想生成一个N×N×3的矩阵A这样A(:,:,i) = eye(n)*i 。在不使用for循环的情况下(即以矢量化方式)如何做到这一点?
回答:
如果在引入BSXFUN之前具有较旧的MATLAB版本,请考虑以下选项(与@Jonas给出的 (https://stackoverflow.com/questions/4392021/matlab-how-to-generate-3d-matrix-with-this-sequence/4392223#4392223)答案相同):
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
更多&回答... (https://stackoverflow.com/questions/4392021)
回答:
如果在引入BSXFUN之前具有较旧的MATLAB版本,请考虑以下选项(与@Jonas给出的 (https://stackoverflow.com/questions/4392021/matlab-how-to-generate-3d-matrix-with-this-sequence/4392223#4392223)答案相同):
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
更多&回答... (https://stackoverflow.com/questions/4392021)