在matlab中将4d矩阵转换为3d矩阵数组

在matlab中将4d矩阵转换为3d矩阵数组,matlab,Matlab,我有一个四维矩阵(45x66x53x15),我想将它转换成一个四维的三维矩阵数组,并且必须在每个矩阵中添加一个字符,比如(a代表mat1(45x66x53x1),b代表mat2(45x66x53x2),等等),我猜是一个结构数组,比如每个矩阵中都有一个字符字段和一个三维矩阵。做这件事最好最简单的方法是什么 一种简单的方法是使用for循环 A = rand(2,3,4,5); % Some example data for idx = 1:size(A,4); % Loop along the

我有一个四维矩阵(45x66x53x15),我想将它转换成一个四维的三维矩阵数组,并且必须在每个矩阵中添加一个字符,比如(a代表mat1(45x66x53x1),b代表mat2(45x66x53x2),等等),我猜是一个结构数组,比如每个矩阵中都有一个字符字段和一个三维矩阵。做这件事最好最简单的方法是什么


一种简单的方法是使用for循环

A = rand(2,3,4,5); % Some example data

for idx = 1:size(A,4); % Loop along the 4th dimension
    B.(char(idx + 96)) = A(:,:,:,idx);
end
这使得:

B = 
    a: [2x3x4 double]
    b: [2x3x4 double]
    c: [2x3x4 double]
    d: [2x3x4 double]
    e: [2x3x4 double]
char(idx+96)
部分只是基于索引创建
a,b,c…
列表的一种方法。您可以轻松地将其替换为自己的字段名称列表

4d数组已经是3d数组了
A(:,:,:,1)
是第一个数组,
A(:,:,:,2)
是第二个数组,依此类推。