qtest = ... @(A)all(sum([A A' (d=@spdiags)(A) d(flip(A))],1)==1) S = [0 0 0 1 0 0 0 0; 0 0 0 0 0 0 1 0; 0 0 1 0 0 0 0 0; 0 0 0 0 0 0 0 1; 0 1 0 0 0 0 0 0; 0 0 0 0 1 0 0 0; 1 0 0 0 0 0 0 0; 0 0 0 0 0 1 0 0] qtest(S) S = [0 0 0 1 0; 1 0 0 0 0; 0 1 0 0 0; 0 0 0 0 1; 0 0 1 0 0] qtest(S) S = [1 0; 1 0] qtest(S) S = [0 0 1; 0 0 0; 0 1 0] qtest(S) S = [0 0 1 0; 1 0 0 0; 0 0 0 1; 0 1 0 0] qtest(S) S = [1] qtest(S)