我試圖建立所有可能的數組的長度n的n個元素的矢量,每個位置至少有2個整數。我應該得到2^n個組合,在這種情況下是16。我的代碼生成只有一半,輸出不保存到一個數組從子陣列向量構建所有可能的陣列。隨着遞歸
allinputs = {[1 2] [2 3] [3 4] [5 6]}
A = []
我運行的命令是
inputArray = inputBuilder(A,[],allinputs,1)
的功能
function inputArray = inputBuilder(A,currBuild, allInputs, currIdx)
if currIdx <= length(allInputs)
for i = 1:length(allInputs{currIdx})
mybuild = [currBuild allInputs{currIdx}(i)];
inputBuilder(A,mybuild,allInputs,currIdx + 1);
end
if currIdx == length(allInputs)
A = [A mybuild];
%debug output
mybuild
end
if currIdx == 1
inputArray = A;
end
end
end
我希望所有16數組獲取矢量中的輸出。或者一些簡單的方法來訪問它們。我怎樣才能做到這一點?
編輯: 遞歸可能是一個要求,因爲所有的輸入將有不同長度的子陣列。 allinputs = {[1] [2 3] [3 4] [5 6 7]}
與此陣列這將是1個* 2個* 2個* 3或12個可能的內置陣列
爲什麼不使用現有的方法/函數來獲取矢量或單元格的所有可能組合?或者,也許你想要一些複雜的? – Marcin 2014-11-22 02:15:18
例如,使用文件交換中的'allcomb.m'功能並生成所有可能的組合。相應地索引您的單元陣列。使用遞歸是你的一個要求嗎? – 2014-11-22 02:20:34
遞歸不是要求,但這是我的想法。也想更好地學習matlab,但Marcin的答案非常接近。謝謝! – Drew 2014-11-22 04:18:37