Вы можете сделать это, получив линейные индексы диагоналей и используя его для формирования новой матрицы
[M,~,N]=size(A);%# A is your matrix
indx=cumsum([1:(M+1):M^2; M^2.*ones(N-1,M)]);%#diagonal indices
B=A(indx');%'# transpose to get MxN
В приведенном выше примере я использовал ~
, чтобы игнорировать этот вывод из функции. Однако это работает, только если вы используете MATLAB R2009b и выше. Если ваша версия старше этой, используйте вместо этого фиктивную переменную.