重塑单元格:将具有i个观测值的1xj单元转换为具有j个观测值的1xi单元

时间:2018-09-09 20:57:03

标签: matlab cell reshape

我想知道重塑细胞的最佳实践。

假设我有一个1x5的单元格,每个单元格中都有2个观察值。在我的示例中,我将使用此单元格VAR。为了运行一个示例:

cbar=linspace(0,1,2);
for i=1:5
    for j=1:2
VAR{i}(j)=i+cbar(j);
    end
end

假设我要创建另一个单元格,该单元格将为1x2,每个单元格中有5个观察值-因此,我正在重塑上面的VAR单元格。下面是我无法解决的方法

for i=1:5
    for j=1:2
   VAR_new{j}(i)=VAR{i}(j);
    end
end

碰巧由于某种原因,VAR_new为空。

如何正确执行此操作?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以结合使用reshape来将矩阵重塑为所需的尺寸,并结合mat2cell来将矩阵转换为单元格数组:

VAR_new = mat2cell(reshape([VAR{:}],5,[]),5,repelem(1,2));

>> VAR_new

VAR_new =

  1×2 cell array

    {5×1 double}    {5×1 double}

>> VAR_new{1}

     1
     2
     2
     3
     3

>> VAR_new{2}

     4
     4
     5
     5
     6