Matlab中如何将4×3矩阵每行重复n次生成指定3D矩阵
实现矩阵行重复并生成指定结构3D矩阵
已知4×3矩阵:
A = [0.5991 0.2336 0.0323; 0.3799 0.8422 0.5569; 0.8399 0.2050 0.6213; 0.1740 0.2895 0.0185];
需要将每一行重复n次(示例n=2),生成第三维度为4的3D矩阵,其中每个第三维度切片对应原矩阵一行的重复结果。以下是两种实现方法:
方法一:向量化操作(高效)
利用repelem实现行重复,结合reshape和permute调整维度顺序,适合处理大规模矩阵:
n = 2; % 对每行重复n次,得到(4*n)×3的矩阵 A_repeated = repelem(A, n, 1); % 重组维度并调整顺序,得到n×3×4的目标3D矩阵 A_new = permute(reshape(A_repeated, n, 4, 3), [1 3 2]);
方法二:循环实现(直观)
通过循环逐个处理原矩阵的每一行,逻辑清晰易理解:
n = 2; % 预分配3D矩阵空间 A_new = zeros(n, 3, 4); for i = 1:size(A, 1) % 将第i行重复n次,赋值给第三维度的第i个切片 A_new(:,:,i) = repmat(A(i,:), n, 1); end
验证结果:执行后A_new(:,:,1)会输出原矩阵第一行重复2次的结果,其余切片依次对应原矩阵后续行的重复结果,完全符合需求。
内容的提问来源于stack exchange,提问作者learning statistics
相关产品推荐
相关产品推荐

