我有一个包含数组格式的单元格
a{x,y,z}(i,j)
a是3维细胞 和 每个单元格都有i * j数组
a <79x95x68 cell>
val(:,:,1) =
Columns 1 through 2
[6x6 double] [6x6 double]
[6x6 double] [6x6 double]
[6x6 double] [6x6 double]
我想将其重新排列为以下格式
a{i,j}(x,y,z)
怎么样?有什么好主意吗?我必须做迭代吗?
matlab说,{:,:}(x,y,z)是坏细胞引用.........
答案 0 :(得分:0)
这是一个次优的方法,它不是内存效率,但它非常简单:
假设x=79
,y=95
,z=68
是原始单元格数组的维度,并且每个维度都提供相同的维度ixj
矩阵(6乘6)。首先,您可以从单元格数组中创建矩阵:
b=horzcat(a{:});
然后我们可以将它重塑为一个5维数组(这只是出于教学目的)所以你已经将它命名为(i,j,x,y,z)......
c=reshape(b,6,6,x,y,z);
然后您可以使用c(i,j,x,y,z)
,或将c
分配给cellarray:
d=cell(6,6);
for i=1:6
for j=1:6
d{i,j}=squeeze(c(i,j,:,:,:));
end
end