Все, что вам нужно, это немного оцепенения и изменения. Сначала вы объединяете по измерению 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;