2
A=[a_11, a_12; a_21, a_22]
Скошенная диагональ [a_12, a_21]
. Прямо сейчас, я переворачиваю матрицу и использую diag.Есть ли функция для получения косой диагонали матрицы в Matlab?
A=[a_11, a_12; a_21, a_22]
Скошенная диагональ [a_12, a_21]
. Прямо сейчас, я переворачиваю матрицу и использую diag.Есть ли функция для получения косой диагонали матрицы в Matlab?
В качестве альтернативы fliplr
и diag
, вы можете индексировать непосредственно в матрицу, как это:
A = magic(3);
s = length(A);
idx = s:(s-1):(s*(s-1)+1);
%# for anti-diagonal, use the following
%#idx = (s*(s-1)+1):(-s+1):s;
skewDiag = A(idx)
skewDiag =
4 5 6
Не будет ли это быть ограничен матрицами 3х3? Общий случай? – pjama
№. Это не ограничивается матрицами 3x3. Это общее решение для ЛЮБОГО размера квадратной матрицы. Только пример был 3х3. –
@ Джонас: Кажется, что вы вычисляете «антидиагональную», которая не соответствует запросам OP. В некоторой литературе «асимметричная диагональ» такая же, как ваша «антидиагональная», но пример OP означает, что здесь дело обстоит не так. Спасибо – eat