У меня есть массив ячеек размером m x 1, и каждая ячейка снова массива s x t (размер варьируется). Я хотел бы конкатенировать по вертикали. Код выглядит следующим образом:Более быстрая конкатенация массивов ячеек разных размеров
function(cell_out) = vert_cat(cell_in)
[row,col] = cellfun(@size,cell_in,'Uni',0);
fcn_vert = @(x)([x,repmat({''},size(x,1),max(cell2mat(col))-size(x,2))]);
cell_out = cellfun(fcn_vert,cell_in,'Uni',0); % Taking up lot of time
cell_out = vertcat(cell_out{:});
end
Шаг 3 занимает много времени. Это правильный способ сделать или есть еще один более быстрый способ достичь этого?
Вы пробовали 'profile'ing кода? – Shai
Просто небольшое улучшение: вам не нужно '' uni ', 0' для первого 'cellfun'. Вывод размера является однородным. – Daniel
@ Daniel Размер варьируется и не является однородным. Не могли бы вы еще раз проверить? – nik