我想要做的是在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
我想要做的是在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
創建使用燙髮一個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]);
這相當於獲得第二個數組的所有排列,並且有一個非常方便的功能,perms
, 爲了那個原因。