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



我有一个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];

谢谢!

是:

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

或者简单地说:

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

注意:附带说明一下,您应该避免使用数据集。根据文档:"数据集数据类型将来可能会被删除释放要处理异构数据,请使用Matlab表数据键入。"

如果有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

相关内容

最新更新