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的内容
B_5_4_17的内容