Ответ 1
Все, что вам нужно, - это немного привязка и перестройка. Сначала вы привязываетесь к размерности 2, затем транспонируете и линеаризуете (AB(:)
), чтобы получить вектор, первые три элемента которого являются первой строкой A, затем первой строкой B, затем второй строкой A и т.д. Все, что осталось в конце, вызывает функцию reshape, чтобы снова вернуть все в массив.
nColumns = size(A,2);
AB = [A,B]';
AB = reshape(AB(:),nColumns,[])';
В качестве альтернативы вы можете сконструировать AB напрямую с помощью индексации. В этом случае A разрешено иметь еще одну строку, чем B. Это, вероятно, быстрее, чем указано выше.
[nRowsA,nCols] = size(A);
nRowsB = size(B,1);
AB = zeros(nRowsA+nRowsB,nCols);
AB(1:2:end,:) = A;
AB(2:2:end,:) = B;