matlab不用循环,三维矩阵按横切页(垂直于纸面且)向右展开为2维,即(i,j,:)展开。将二维矩阵每行顺序不变依次向左复制,如:(a,b,c)复制为(a,a,a,b,b,b,c,c,c)

xiaoxiao2021-02-28  44

概述:将将二维矩阵每行顺序不变依次向左复制和三维矩阵按横切页(垂直于纸面且)向右展开为2维其中的主要计算方法一致,所以放在一起说明。复制的主要要点是将二维矩阵扩展为三维>>>展开三维矩阵。

一、横向展开(复制)

1、生成一个2*3*4的三维矩阵

a=[1 2 3;4 5 6]; a=repmat(a,1,1,4)

 得到的矩阵为

a(:,:,1)=a(:,:,2)=a(:,:,3)=[1 2 3

                                     4 5 6]

2、使用b=shiftdim(a,2)对三维矩阵进行轮换变换,即从r行、c列、p页变成p行、r列、c页的矩阵。

得到

                                                                 

3、使用c=rot90(b,270),对b逆时针旋转90度

                                                          

4、使用d=reshape(c,2,8)进行变换

得到

即按照对页面切片展开了。

5、总结。

对于二维矩阵a(r,c)复制可分为四步

1、A=repmat(A,1,1,p) 

对于矩阵A(r,c,p)展开可分为三步

2、B=shiftdim(A,2)

3、C=rot90(B,270)

4、D=reshape(C,r,c*p)

二、纵向展开(复制)

1、A=repmat(A,1,1,p) 

对于矩阵A(r,c,p)展开可分为三步

2、B=reshape(A,r*c,p)

声明:本文为本人原创,未经本人同意不得转载

转载请注明原文地址: https://www.6miu.com/read-2627822.html

最新回复(0)