繁体   English   中英

表和变量名-MATLAB

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM