[英]Table and variable names - matlab
假设我有以下MATLAB
代码:
clear; clc
Items = {'counter','item1', 'item2', 'item3', 'item4'};
a = rand(8,4);
j = (1:8)';
t = table(j,a(:,1), a(:,2), a(:,3), a(:,4),'VariableNames',Items)
我想知道如果我有20个项目,是否有完善的方法来扩展此列表。 遵循此代码,我应该在table
内部包括每个单个a(:,i), i = 1,...,20
,另外,我必须对Items
列表执行相同的操作。 我猜有比这更方便的方法。
您可以使一个单元格中包含所有列。
for i=1:size(a,2)
acell{end+1}=a(:,i);
end
然后打电话
table(j,acell{:},'VariableNames',Items)
这是一个例子:
Items = {'counter'};
a = rand(8,6);
j = (1:8)'
acell = [];
for i=1:size(a,2)
acell{end+1}=a(:,i);
Items{end+1}=['item',num2str(i)];
end
t = table(j,acell{:},'VariableNames',Items);
参见array2table
:
a = rand(8,4);
[l, w] = size(a);
j = 1:l;
Items = cell(1, w + 1);
Items{1} = 'counter';
for ii = 2:length(Items)
Items{ii} = sprintf('item%u', ii - 1);
end
t = array2table([j', a], 'VariableNames', Items);
编辑:似乎有很多与array2table
相关的开销。 它本质上是mat2cell
的包装器,因此仅单独使用它并跳过所有错误检查可能会带来速度上的好处。 还没有测试过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.