samer@4: function Y=mapcols(f,X) samer@4: % mapcols - Map a function of a vector over the columns of an array samer@4: % samer@4: % mapcols :: samer@4: % ([[N]->A] -> [[M]->B]) ~'function maps a column of A to one of B', samer@4: % [[N,L]->A] samer@4: % -> [[M,L]->B]. samer@4: samer@4: n=size(X,2); samer@4: if n==0, Y=[]; samer@4: else samer@12: y1=f(X(:,1)); samer@12: if size(y1,2)>1 samer@12: Y=repmat(y1(:),1,n); samer@12: for i=2:n samer@12: Y(:,i)=flatten(f(flatten(X(:,i)))); samer@12: end samer@12: else samer@12: Y=repmat(y1,1,n); samer@12: for i=2:n, Y(:,i)=f(X(:,i)); end samer@4: end samer@4: end samer@4: