如何根据条件将新值添加到matlab的表中?

时间:2018-06-13 17:33:13

标签: arrays matlab

考虑在matlab中使用此表:

t = table([1; 0; 3; 1], [0; 1; 0; 4], 'VariableNames', {'A', 'B'});

A    B
_    _

1    0
0    1
3    0
1    4

我想附加一个新列C,其中包含基于条件的特定值。目前我使用这个循环:

for i=1:height(t)

    if t(i, 'A').Variables == 1
        t.C(i, 1) = 4;

    elseif t(i, 'A').Variables == 3
        t.C(i, 1) = 5;

    end

end

然而,这是一个时间comsuming操作是一个表大小超过100k行的情况。

对此最好的解决方案是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

[t{t.A==1, 'C'}] = 4;
[t{t.A==3, 'C'}] = 5;

这使用了

的事实
  • 表格内容可以通过{}索引,就像在单元格数组中一样;
  • 表格列可以按名称编制索引。

或者,如@SardarUsama所述,您可以使用更简单的

t.C(t.A==1)=4;
t.C(t.A==3)=5;

这使用点表示法来索引列。结果是一个数字列向量,可以直接为其指定标量。