-5

在下面,我把 C、A、B 放在一起只是为了便于理解。实际的元胞数组没有这种类型的标题。

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

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

如果第 1 个元胞数组的 C 列和第 2 个矩阵的 C 列相同,这个问题就很简单了。

但是它们不同的事实使我很难做到这一点。

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

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

起初我想到了独特的,但无法弄清楚如何导致预期的结果。

4

1 回答 1

1

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

[~, I] = ismember(mat2(:, 2), mat1(:, 1));
Output = [mat2(:, 1) mat1(I, 2:end)]
于 2013-07-28T16:39:25.753 回答