1

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

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 说,a{:,:}(x,y,z) 是错误的单元格引用......

4

1 回答 1

0

这是一种次优的方法,它不是内存效率,但它非常简单:假设x=79,是原始元胞数组的维度y=95z=68并且它们中的每一个都给出相同的维度 ixj矩阵(6 x 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给单元阵列:

d=cell(6,6);

for i=1:6
    for j=1:6
        d{i,j}=squeeze(c(i,j,:,:,:));
    end
end
于 2013-06-07T18:55:28.350 回答