Я пытаюсь заставить combnk сгенерировать все комбинации строк в ячейке. Например.:
someStrings = {'a','b','dog','goat'};
results = arrayfun(@(k) combnk(someStrings,k),1:length(someStrings),'UniformOutput',0);
Это дает мне массив ячеек 4*1
из массивов ячеек со следующими размерами:
{4x1 cell} {6x2 cell} {4x3 cell} {1x4 cell}
То, что я хочу, это массив ячеек 15*1
из массивов ячеек, каждый из которых имеет размер {1xN}
; то есть 4 массива ячеек размером {1,1}
, 6 размером {1,2}
и т. д. Как я могу сделать это эффективно?
РЕДАКТИРОВАТЬ: Хорошо, теперь я здесь:
results = transpose(arrayfun(@(k) num2cell(combnk(someStrings,k),2),1:length(someStrings),'UniformOutput',0));
finalResults = vertcat(results{:});
Можно ли превратить это в одну строку? Как вы индексируете массив ячеек, например «{:}», но в строке был создан массив ячеек?