2013-04-15 198 views
0

我需要生成10X5 matrix的所有可能組合。我需要的全部是10X1 matrix10X2 matrix,10X3 matrix等。什麼是最有效的方法。我可以使用多個循環,但效率不高。 例如:我有一個矩陣:從MXN矩陣生成2^N-1個矩陣數

col1 col2 col3 col4 

我想:

col1 and col2 and col3 and col4 

則:

col1 col2 and col1 col3 and col1 col4

等返回的所有2^5-1組合列

+1

組合列,行還是兩者?一個簡短的例子,比如4乘3,會有所幫助。 – Oleg

+0

你的問題嚴重缺乏信息。你只想要第一列的矩陣,第一列和第二列的矩陣,等等?或者你想在行內有所有可能的值排列? – Jonas

+0

@OlegKomarov我編輯過問題。關於前面提到的錯誤。 – MaxSteel

回答

3

你可以在一個循環中使用nchoosek

for k = 1:ceil(5/2) %only need to go half way up otherwise start repeating 
    index{k} = nchoosek(1:5, k); 
end 

然後利用指數通過選擇列

+0

非常感謝。在matlab中,所有的事情都變得簡單:)感謝真棒的回答。 – MaxSteel

2

我不會去爲您解決,但這裏有一些有用的功能,以獲得小矩陣。你必須澄清你的輸入到底是什麼。

>> nchoosek([1:4],3) 

ans = 

    1  2  3 
    1  2  4 
    1  3  4 
    2  3  4 

>> combntns([1:3],2) 

ans = 

    1  2 
    1  3 
    2  3 

>> perms([1:3]) 

ans = 

    3  2  1 
    3  1  2 
    2  3  1 
    2  1  3 
    1  2  3 
    1  3  2 
+0

感謝您的輸入。我可以在未來使用這些。非常感謝。第一個功能做了這項工作 – MaxSteel