如何从另一个文件MATLAB中替换一行

时间:2017-09-17 09:50:23

标签: arrays matlab cell

我有像这样的单元格数组:

M =
 [002]  [A] [0] [0]   [0]     [381]
 [002]  [B] [0] [0]   [0]     [166]
 [002]  [C] [0] [0]   [0]     [136]
 [002]  [D] [0] [0]   [0]     [880]
 [003]  [E] [0] [0]   [0]     [839]
 [003]  [F] [0] [0]   [0]     [156]
 [003]  [G] [0] [0]   [0]     [789]
 [003]  [H] [0] [0]   [0]     [676]
 [003]  [I] [0] [0]   [0]     [778]
 [004]  [J] [0] [0]   [0]     [787]

我有一个输入文件,其中包含:

[X] [4] [3]  [E]      [839]
[Y] [7] [4]  [F]      [156]
[Z] [8] [1]  [I]      [778]

我想要第二个文件([E], [F], and [I])中的第三列作为索引来找到M中的值,然后替换M中的行(但没有改变M的第一列),所以我得到了新的矩阵像这样:

N =
 [002]  [A] [0] [0]   [0]     [381]
 [002]  [B] [0] [0]   [0]     [166]
 [002]  [C] [0] [0]   [0]     [136]
 [002]  [D] [0] [0]   [0]     [880]
 [003]  [X] [4] [3]   [E]     [839]
 [003]  [Y] [7] [4]   [F]     [156]
 [003]  [G] [0] [0]   [0]     [789]
 [003]  [H] [0] [0]   [0]     [676]
 [003]  [Z] [8] [1]   [I]     [778]
 [004]  [J] [0] [0]   [0]     [787]

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用ismember

N = M;                                     %Making a copy of M
N(ismember(M(:,2),inp(:,4)),2:end) = inp;  %Replacing with desired terms from input

阅读:Access Data in Cell Array