matlab矩阵重组

matlab中已有5个17×4的矩阵,现在要将这5个矩阵中对应行数相同的行重组成17个5×4的新矩阵,即原矩阵17个行分别重组,请问该怎么编写程序

clc,clear;
%% 输入5个17×4的矩阵
a1=rand(17,4)
a2=rand(17,4)
a3=rand(17,4)
a4=rand(17,4);
a5=rand(17,4);
%% 读取矩阵行数
[m,n]=size(a1);
%% 循环提取矩阵
for i=1:m
    a=a1(i,:);                                                             %提取矩阵i行
    b=a2(i,:);
    c=a3(i,:);
    d=a4(i,:);
    e=a5(i,:);
    eval(['f',num2str(i),'=','cat(1,a,b,c,d,e)'])                          %合并各个矩阵的i行形成新矩阵                     
end

5x17x4的矩阵中相同的行重组成17x5×4的新矩阵。。那到底哪些行是相同的呢?

主要使用cat permute这俩函数

运行脚本

%制造一个17x4   5片  的魔方
A=magic(4);
A_17_4=[A;A;A;A;1,2,3,4];
A_17_4_5 = cat(3,A_17_4,A_17_4,A_17_4,A_17_4,A_17_4);

B_5_4_17 = myFun2(A_17_4_5);

函数脚本

function [ B_5_4_17 ] = myFun2( A_17_4_5 )

    %循环次数按行分,是17次
    iSize = size(A_17_4_5,1);
    B_5_4_17=[];
    for i=1:1:iSize
        %取得每片的第一行
        B = A_17_4_5(i,:,:);
        %第一维与第三维位置交换
        B = permute(B,[3,2,1]);
        %B是个5x4的矩阵,一片一片排列这些B
        B_5_4_17=cat(3,B_5_4_17,B);
    end

end

A_17_4_5的内容

img

B_5_4_17的内容

img