function a = zigzag1(n) j = 1:n; u = repmat([-1; 1], n, 1); v = j.*(2*j-3); v = reshape([v; v+1], 2*n, 1); a = zeros(n, n); for i = 1:n a(:, i) = v(i+j); v += u; endfor endfunction function a = zigzag2(n) a = zigzag1(n); v = (1:n-1)'.^2; for i = 2:n a(n+2-i:n, i) -= v(1:i-1); endfor endfunction >> zigzag2(5) ans = 0 1 5 6 14 2 4 7 13 15 3 8 12 16 21 9 11 17 20 22 10 18 19 23 24