Is there a function that creates anti diagonal matrix from some vector, something like reverse diag() ?
-
Login or Register
- Log in with
------------------------------------------------- mata (type end to exit) ------------------------------------------ : : real matrix antiDiag(real colvector v) > { > > real colvector p > > p = 1::rows(v) > _sort(p,-1) > > return(diag(v)[,p']) > > } : : antiDiag(1::10) 1 2 3 4 5 6 7 8 9 10 +---------------------------------------------------+ 1 | 0 0 0 0 0 0 0 0 0 1 | 2 | 0 0 0 0 0 0 0 0 2 0 | 3 | 0 0 0 0 0 0 0 3 0 0 | 4 | 0 0 0 0 0 0 4 0 0 0 | 5 | 0 0 0 0 0 5 0 0 0 0 | 6 | 0 0 0 0 6 0 0 0 0 0 | 7 | 0 0 0 7 0 0 0 0 0 0 | 8 | 0 0 8 0 0 0 0 0 0 0 | 9 | 0 9 0 0 0 0 0 0 0 0 | 10 | 10 0 0 0 0 0 0 0 0 0 | +---------------------------------------------------+ : : end --------------------------------------------------------------------------------------------------------------------
Comment