Как создать двойники из клеточных массивов? - PullRequest
0 голосов
/ 27 апреля 2018

Я хотел бы спросить, существует ли более эффективный код для выполнения следующей задачи:

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

Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2018

Ваше решение работает просто отлично. Это немного более компактно (и легче обобщать). Если все ячейки содержат матрицы одинакового размера, вы можете объединить их в одну матрицу и выбрать один столбец каждые 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...