2011-02-25 62 views
3

我的問題是與Matlab有關。有一個名爲nchoosek的函數([vector],integer)。通過使用這個函數,我想獲得給定向量的所有2元素組合。 (即nchoosek([1:10000,2])))。如matlab文檔中所述,這非常緩慢。Matlab nchoosek問題

問題是:「是否有更快的方式來完成同樣的工作?」。

謝謝你的時間我真的很感謝你的努力。

回答

3

如果它只是您需要的2元素組合,您可以使用NDGRID。請注意,所有最大爲N的兩元素組合都需要N^2值,所以如果Matlab開始分頁,過程將會很慢。

N = 100; 
[xx,yy] = ndgrid(1:N,1:N); 
allCombinations = [xx(:),yy(:)]; 

請注意,功能NDGRIDnchoosek顯著不同。 前者返回包含所有可能的N^2組合的雙行向量,而後者則捨棄兩次相同元素的組合,以及只改變順序的組合。導致只有(N^2-N)/ 2行元素。

+0

感謝它的工作... – conapart 2011-02-25 12:16:13

+0

@conapart:請考慮接受/ upvoting答案,你覺得有用。 – Jonas 2011-02-25 14:30:44