查看单个帖子
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在MATLAB中没有for循环的情况下生成此3-D矩阵?

我想生成一个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

更多&回答...
poster 当前离线   回复时引用此帖