从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));
答案 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);