在下面,我把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替换。
但这很慢。所以我需要一个更快的代码。
起初我认为它很独特,但无法弄清楚如何达到理想的效果。
答案 0 :(得分:1)
如果mat1和mat2是你描述的第一个和第二个矩阵,那么应该使用索引函数进行连接。
[~, I] = ismember(mat2(:, 2), mat1(:, 1));
Output = [mat2(:, 1) mat1(I, 2:end)]