2013-07-28 112 views
-5

在下面,我將C,A,B只是爲了便於理解。實際的單元格數組沒有這種類型的標題。使用Matlab查找和替換

我有一個矩陣[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是相同的,這問題會很容易。

但他們不同的事實使我感到困難。

我可以這樣做,用於和如果。例如,如果第二矩陣的列C是3,則它將被7 2 9 34替換。

但是,這非常緩慢。所以我需要更快的代碼。

起初我想到了獨特的,但無法弄清楚如何導致期望的結果。

+0

你需要澄清你的問題,最重要的是,一旦你澄清了它,你必須告訴我們你已經嘗試了什麼。 – CTZStef

+0

輸出沒有意義 – P0W

+0

@CTZStef好的,我現在就去做。 – user1849133

回答

1

如果mat1和mat2是您所描述的第一個和第二個矩陣,那麼應該使用索引函數完成您需要的連接。

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

謝謝。也許第二個「墊子」應該是「mat1」,對吧? :)也許是一個錯字? – user1849133