fork download
  1. diamond = ...
  2. @(a)cellfun(@(x)x(x>0)',num2cell(spdiags(flipud(a)),1),'un',0)
  3.  
  4. d = diamond([1 2 3; 4 5 6])
  5. %slightly nicer display
  6. disp("\nd =");
  7. celldisp(d)
  8.  
Success #stdin #stdout 0.46s 121792KB
stdin
Standard input is empty
stdout
diamond =

@(a) cellfun (@(x) x (x > 0)', num2cell (spdiags (flipud (a)), 1), 'un', 0)

d = 
{
  [1,1] =  1
  [1,2] =

     4   2

  [1,3] =

     5   3

  [1,4] =  6
}

d =
d{1} = 

 1

d{2} = 

   4   2

d{3} = 

   5   3

d{4} = 

 6