我正在尋找索引M使用線性索引選擇N個元組。前一段時間我寫了對M代碼選擇2爲一些對索引功能:智能線性索引有N個項目的元組從1開始:M
function K=pairidx(i, j)
if(i>j)
swap(i,j);
K=j-(i+1) + (i)*(2*M-1)-i*(i-1)/2;
end
我現在需要的是這個到M泛化選擇N.理想情況下,我將有一個可逆函數在那裏我可以轉換從索引K到某個元組(K_1,K_2,...,K_N)。到目前爲止,我一直在做一個暴力方法,其中N = 3我寫了下面的函數,但我希望這不是最好的。
function lookup=tripletable()
d=nchoosek(M,N);
idx=1;
lookup=zeros(d,3);
for i=1:M
for j=i+1:M
for k=j+1:M
lookup(idx,:)=[i,j,k];
idx=idx+1;
end
end
end
除非我誤解你,你可以使用內置函數並[c = nchoosek(V,K )](http://www.mathworks.com/help/matlab/ref/nchoosek.html),其中v是元素的向量。 – jerad