如何更新matlab数据集中的几行值?

时间:2015-02-07 19:42:05

标签: matlab dataset

我有 46x46 数据集,我需要在单行中更新多个值。

例如:

data =   
A B C D  
0 0 0 0  
0 0 0 0  
0 0 0 0

我想让它像

A B C D  
0 0 0 0  
0 1 0 1  
0 0 0 0 

我能写这样的东西:

data(2, ['B', 'D']) = [1, 1];

谢谢!

2 个答案:

答案 0 :(得分:0)

是:

data(2, [2 4]) = mat2dataset([1 1]);

或简单地说:

data(2, [2 4]) = mat2dataset(1);
  

注意:作为旁注,您应该避免使用数据集。根据   文档:"将来可能会删除数据集数据类型   发布。要使用异构数据,请使用Matlab表数据   改为输入。"

答案 1 :(得分:0)

如果您有table(建议替换dataset类型),则可以使用'VariableNames'属性引用列的名称:

首先构建表:定义列名并用零填充所有列:

data = table(zeros(3,1), zeros(3,1), zeros(3,1), zeros(3,1), ....
       'VariableNames', {'A','B','C','D'});

这给出了

data = 
    A    B    C    D
    _    _    _    _
    0    0    0    0
    0    0    0    0
    0    0    0    0

然后,要更改问题条目中的条目,可以使用

data(2, ismember(data.Properties.VariableNames, {'B' 'D'})) = {1, 1};

data(2, ismember(data.Properties.VariableNames, {'B' 'D'})) = deal({1});

或更直接

data.B(2) = 1;
data.D(2) = 1;

以上任何一个都给出了

data = 
    A    B    C    D
    _    _    _    _
    0    0    0    0
    0    1    0    1
    0    0    0    0