samer@4: function B = rot45(A) samer@4: % rot45 - rotate square array by 45 degrees samer@4: % samer@4: % rot45 :: [[N,N]] -> [[N,N]]. samer@4: % samer@4: % Array is SUBSAMPLED, so, you should pre-filter to avoid aliasing. samer@4: % Result is padded with zeros in the corners. samer@4: samer@4: n = length(A); samer@4: samer@4: B = diag(A,0)'; samer@4: pad = [0]; samer@4: samer@4: for k=2:2:n-1 samer@4: B = [ pad diag(A,k)' pad; B; pad diag(A,-k)' pad]; samer@4: pad = [pad 0]; samer@4: end