使用Matlab查找和替换

时间:2013-07-28 15:26:18

标签: matlab

在下面,我把C,A,B只是为了让它易于理解。实际的单元格数组没有这种类型的标题。

我有一个矩阵[3 7 2 9 34; 10 9 7 34 NaN; 27 2 9 NaN NaN; 6 7 3 26 NaN]

C  A  B
-------------------
3  7  2  9   34
10 9  7  34  NaN
27 2  9  NaN NaN
6  7  3  26  NaN

和矩阵[2 3; 2 10; 2 27; 1 10; 1 6; 1 6; 2 10]看起来像

D  C
------
2  3
2  10
2  27
1  10
1  6
1  6
2  10

我想通过使用Matlab查找和替换来获得

D  A  B
-----------
2  7  2  9  34
2  9  7  34
2  2  9
1  9  7  34
1  7  3  26
1  7  3  26
2  9  7  34

如果第一单元阵列的C列和第二矩阵的C列相同,这个问题就很容易了。

但是他们不同的事实让我很难。

我可以使用for和if来做到这一点。例如,如果第二矩阵的C列为3,则它将被7 2 9 34替换。

但这很慢。所以我需要一个更快的代码。

起初我认为它很独特,但无法弄清楚如何达到理想的效果。

1 个答案:

答案 0 :(得分:1)

如果mat1和mat2是你描述的第一个和第二个矩阵,那么应该使用索引函数进行连接。

[~, I] = ismember(mat2(:, 2), mat1(:, 1));
Output = [mat2(:, 1) mat1(I, 2:end)]