我有一個46x46數據集,我需要更新單行中的幾個值。如何在matlab的數據集中更新行中的幾個值?
例如:
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];
謝謝!
我有一個46x46數據集,我需要更新單行中的幾個值。如何在matlab的數據集中更新行中的幾個值?
例如:
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
非常感謝!) 還沒算出來)) – EdZhavoronkov 2015-02-07 20:48:16