2014-09-25 4 views

ответ

2

Вы можете сделать это с

diag(fliplr(mat)); 

fliplr делает именно то, что он говорит на олово, и переворачивает матрицу слева направо, так что верхний левый становится верхний правый и наоборот.

+0

ах да большое вам спасибо –

0

Предполагая, что матрица является квадратной, вы также можете сделать это напрямую через linear indexing:

n = size(mat,1); 
d2 = mat((n:-1:1)*(n-1)+1).' 

Это может быть быстрее в некоторых случаях (diag сам по себе, как правило, быстрее, чем линейной индексации). Этот метод, вероятно, можно адаптировать и к неквадратичным матрицам. Я все равно придерживаюсь решения @ MrAzzaman, так как он гораздо читабельнее и почти наверняка достаточно быстро почти во всех случаях.

Смежные вопросы