Re: [問題] 產生所有[1~H 1~H 1~H .. 1~H]這些vector已回收

看板MATLAB作者 (幻無影)時間15年前 (2010/05/25 01:11), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《GSXSP (Gloria)》之銘言: : 我想要做summation : [h_1 h_2 ... h_n] : h_i = 1,2,...,H : 所以我要產生 : h = [h_1 h_2 ... h_n] 總共 2^H 個vector : 不知道有沒有什麼建議的做法呢? : 我目前能想到的兩個做法 : (1) : for h(1) = 1:H : for h(2) = 1:H : . : . : n層for迴圈 : 缺點: 太多for : (2) : for i = 1:H^n : h = i的H進位表示 + 1 : end : 缺點: 要算i的H進位表示有點麻煩,不知道有沒有function可以用呢? : (3) : 不知道有沒有別的的做法 假設你的各個 h 為一長度 5 的向量且每一個元素的範圍為 1~7, 則生出那堆 h 向量的程式碼可寫成如下: H = 1:7; % index range n = 5; % number of digits [X{n:-1:1}] = ndgrid(H); X = reshape(cat(n+1, X{:}), [], n); 跑完之後看你要拿第幾個 h。 矩陣 X 中的第 k 個 row 就是生出來的第 k 個 h 向量。 例如:X(3, :) <== 第三個 h 向量 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: DigiPrince 來自: 140.113.94.230 (05/25 01:12)

05/25 01:22, , 1F
Very Cool! 謝謝~
05/25 01:22, 1F
文章代碼(AID): #1B-hDOUD (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1B-hDOUD (MATLAB)