我有 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];
谢谢!
答案 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