Я хотел бы спросить, существует ли более эффективный код для выполнения следующей задачи:
a = cell(10,1); for i = 1 : 10 a{i,1} = randn(200,5); end for j =1:5 b{j} = [a{1,1}(:,j) a{2,1}(:,j) a{3,1}(:,j) a{4,1}(:,j) a{5,1}(:,j)]; end
Спасибо!
Ваше решение работает просто отлично. Это немного более компактно (и легче обобщать). Если все ячейки содержат матрицы одинакового размера, вы можете объединить их в одну матрицу и выбрать один столбец каждые n:
for i = 1 : 10 a{i,1} = randn(200,5); end % Transform first five cells in one big matrix c = cat(2,(a{1:5})); n = size(a{1} , 2); b = cell(5,1); for j =1:5 % Take one column every 5 (or every "n" in general) b{j} = c(: , 1:n:end ); end