多维单元阵列的Matlab实现



我有3个单元格数组相同数量的单元格,但是我想减少只有一个单元格数组具有多个维度,以便它们可以按列访问,如数组的列。我在Matlab的环境中工作,但是我试图这样做,但不幸的是,我发现没有单元访问列如矩阵。对处理这种情况有什么建议吗?

我的代码:

    P = cell(1,10);
    Pd = cell(1,10);
Pdd = cell(1,10);
    for ii=1:10
        P{ii}= [repmat([0 0 0],2,1)];
        Pd{ii} = [repmat([1 1 1],2,1)];
Pdd{ii} = [repmat([2 2 2],2,1)];
end

垂直连接三个单元格数组:

Pall = [P; Pd; Pdd]

这给出了一个3x10的单元格数组Pall,这样Pall(1,:)就是P,等等。

如果你想避免从一开始就创建多个单元格数组:做类似的事情:

for ii=1:10
   Pall{1,ii}= [repmat([0 0 0],2,1)];
   Pall{2,ii} = [repmat([1 1 1],2,1)];
   Pall{3,ii} = [repmat([2 2 2],2,1)];
end

要避免循环,使用示例中的值:

Pall = mat2cell(repmat([repmat([0 0 0],2,1); repmat([1 1 1],2,1); repmat([2 2 2],2,1)],1,10),[2 2 2],3*ones(1,10))

相关内容

  • 没有找到相关文章

最新更新