2012-05-03 19 views
0

我想要做的是在Matlab中以最簡單的方式執行以下操作:如何在Matlab中生成兩組的所有雙射?

假設我們有兩個數組{1,2,3} {4,5,6}。

算法應該給我所有的雙射:

1-4 2-5 3-6/1-4 2-6 3-5/1-5 2-4 3-6 /二月1日至5日-6 3-4/1-6 2-5 3-4/1-6 2-4 3-5

回答

1

創建使用燙髮一個3D矩陣由trutheality和repmat所建議重複第一矩陣:

x = [1 2 3]; 
y = [4 5 6]; 

Y = perms(y); 
X = repmat(x,length(perms(y)),1); 

Result = cat(3,X,Y); 
NicerResult = permute(Result, [2, 3, 1]); 
2

這相當於獲得第二個數組的所有排列,並且有一個非常方便的功能,perms , 爲了那個原因。

相關問題