Test #5 is incorrect. Transpose on x makes the diagonal [1 5 9], [1 6 11] are not on any diagonal. #5 is the transpose of #4 and taking the transpose does not change the diagonal, unless you have some other definition for diagonal. A good solution is x(find(eye(size(x))))