MATLAB 排列組合問題

2021-10-24 22:36:17 字數 915 閱讀 4223

畢設ing, 最近每天除了看**就是matlab**。

matlab程式設計強調"vectorization'',對矩陣進行操作(畢竟人家名字就叫mat lab,矩陣的實驗室)

對於排列組合問題,按照c語言的思路肯定就用for迴圈。但是在matlab裡,for迴圈是不吃香的。乙個乙個for迴圈巢狀,又沒有括號...看著挺暈的 。更簡便、效率更高的方法就是 using vector operations instead of loops。詳見: improving the speed of matlab calculations

下面是幾個我自己用到的有關排列組合的函式,啊真的很簡單。

向量x中重複選取y個元素

function y = perm_comb(x,y) 

[y] = ndgrid(x);

y = reshape(cat(y+1,y),,y);

二維座標下選取n個座標點

x,y是x,y軸最大值,np表示要選幾個點,函式輸出所有座標點

function co = choosecoord(x,y,np)

[a b] = meshgrid(1:x,1:y);

co = [reshape(x,np,1) reshape(y,np,1)];

meshgrid函式是用來生成座標網格點矩陣的,輸出兩個矩陣,乙個是所有點的x座標,另乙個是所有點的y座標。這個座標系上所有點就用這倆矩陣裡的所有元素表示(比如第一行第一列的座標就是(a(1,1), b(1,1)), 第二行第一列(a(1,2), b(1,2))...)

還有就是nchoosek(a,b): a可以是向量也可以是乙個數字。向量的話,輸出b列的矩陣,表示從a向量裡選b個元素的所有可能組合;a是數字的話,輸出c(a,b)的計算結果。

matlab排列組合

matlab做排列組合 比如要abcd的全排列 permutation 可以用perms函式 perms abc 執行結果 cba cab bca bac abc acb perms 1 2 3 ans 3 2 1 3 1 2 2 3 1 2 1 3 1 2 3 1 3 2 以下是幾個常用的排列 組...

Matlab 排列組合

1 求n的階乘,方法如下 a factorial n b gamma n 1 c v n vpa v 2 求組合 數 方法如下 a combntns x,m 列舉出從n 個元素中取出m 個元素的組合。其中,x是含有n 個元素的向量。b nchoosek n,m 從n各元素中取m 個元素的所有組合數。...

MATLAB 排列組合操作

1 求n的階乘,方法如下 a factorial n b gamma n 1 c v n vpa v 2 求組合 數 方法如下 a combntns x,m 列舉出從n個元素中取出m個元素的組合。其中,x是含有n個元素的向量。b nchoosek n,m 從n各元素中取m個元素的所有組合數。ncho...