单元格中的双数组,如何建立索引?

时间:2013-06-07 13:05:56

标签: matlab

我有一个包含数组格式的单元格

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)是坏细胞引用.........

1 个答案:

答案 0 :(得分:0)

这是一个次优的方法,它不是内存效率,但它非常简单: 假设x=79y=95z=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