将N ^ 2个3x3矩阵级联为3Nx3N矩阵 [英] concatenation of N^2 3x3 matrixes into a 3Nx3N matrix

查看:191
本文介绍了将N ^ 2个3x3矩阵级联为3Nx3N矩阵的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有N ^ 2个矩阵. 每个矩阵都是3x3矩阵. 将它们串联到3Nx3N矩阵的一种方法是编写 A(:,:,i)= # 3x3 matrix i=1:N^2

I have N^2 matrixes. Each one is a 3x3 matrix. One way to concatenation them to a 3Nx3N matrix is to write A(:,:,i)= # 3x3 matrix i=1:N^2

B=[A11 A12 ..A1N;A21 ...A2N;...] 但是当N大时,是一件繁琐的工作. 您提供什么?

B=[A11 A12 ..A1N;A21 ...A2N;...] But When N is large is a tedious work. What do you offer?

推荐答案

这是一个非常快的单行代码,仅使用 PERMUTE :

Here's a really fast one-liner that only uses RESHAPE and PERMUTE:

B = reshape(permute(reshape(A,3,3*N,N),[2 1 3]),3*N,3*N).';

和测试:

>> N=2;
>> A = rand(3,3,N^2)
A(:,:,1) =
    0.5909    0.6571    0.8082
    0.7118    0.6090    0.7183
    0.4694    0.9588    0.5582
A(:,:,2) =
    0.1791    0.6844    0.6286
    0.4164    0.4140    0.5833
    0.1380    0.1099    0.8970
A(:,:,3) =
    0.2232    0.2355    0.1214
    0.1782    0.6873    0.3394
    0.5645    0.4745    0.9763
A(:,:,4) =
    0.5334    0.7559    0.9984
    0.8454    0.7618    0.1065
    0.0549    0.5029    0.3226

>> B = reshape(permute(reshape(A,3,3*N,N),[2 1 3]),3*N,3*N).'
B =
    0.5909    0.6571    0.8082    0.1791    0.6844    0.6286
    0.7118    0.6090    0.7183    0.4164    0.4140    0.5833
    0.4694    0.9588    0.5582    0.1380    0.1099    0.8970
    0.2232    0.2355    0.1214    0.5334    0.7559    0.9984
    0.1782    0.6873    0.3394    0.8454    0.7618    0.1065
    0.5645    0.4745    0.9763    0.0549    0.5029    0.3226

这篇关于将N ^ 2个3x3矩阵级联为3Nx3N矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆