用2个Cell Array制作一个MatLab表

时间:2015-11-13 14:39:24

标签: matlab matrix

从2个单元阵列生成表的最有效方法是什么。数组A包含数据,数组B包含相应的名称。我想将它们组合成一个方便的表结构。

Cell_Array_A =
{[10x10],[10x10],[];
 [10x11],[],[10x12];
 [9x10],[13x10],[]}

Cell_Array_B = 
{['A','B',[];
 'B',[],'A';
 'B','A',[]}

它应该生成一个包含标题“A”和“B”的表格。但是,在我的真实数据集中,我有很多变量名,我不知道。所以我需要一种方法来读取第一行中的所有变量,并使用它们为矩阵的其余部分创建表。

所需输出的示例:

'A' 'B'
[10x10] [10x10]
[10x12] [10x11]
[13x10] [9x10]

到目前为止,我尝试过排列处理数组以摆脱空数组。然而,这不是很有效。我为数组A和B中的每一行运行以下代码。下面是数组A中第一行的示例,我稍后将其用作我的表的平板电脑。

order_row = {};
order_row = Cell_Array_A(1,:);
ordered_filenames = order_row(~cellfun('isempty',order_row));

1 个答案:

答案 0 :(得分:2)

编辑回答这个想法是1)收集非空列标题,2)为每个唯一列标题收集相应的值:

    % Unique variable names
    nul_names = cellfun(@isempty,Cell_Array_B);
    var_names = unique(Cell_Array_B(~nul_names));

    % Function to find a column header index
    ixhead = @(h,c) cellfun(@(x) isequaln(x,h), c(:));

    % Collect the values
    var_values = cellfun( ...
       @(h) Cell_Array_A(ixhead(h, Cell_Array_B)), var_names, ...
       'UniformOutput', false ...
    );

    % Create the table
    tbl = table(var_values{:}, 'VariableNames', var_names);