wolffd@0: function y = peaksegments(func,d,p,varargin) wolffd@0: wolffd@0: y = cell(1,length(d)); wolffd@0: for h = 1:length(d) wolffd@0: if not(iscell(d{h})) % for histograms wolffd@0: p{h} = {p{h}(:,:,1)'}; wolffd@0: d{h} = {d{h}'}; wolffd@0: end wolffd@0: for i = 1:length(d{h}) wolffd@0: %sum(var(p{h}{i},1,2)) wolffd@0: %p{h}{i} = repmat(p{h}{i}(:,1,1),[1,size(p{h}{i},2),size(p{h}{i},3)]); wolffd@0: d{h}{i} = d{h}{i} + repmat(min(d{h}{i}),[size(d{h}{i},1),1,1]); wolffd@0: for j = 1:size(d{h}{i},3) wolffd@0: for k = 1:size(d{h}{i},2) wolffd@0: yk = []; wolffd@0: nb = 0; wolffd@0: f = find(not(isnan(d{h}{i}(1:end,k,j)))); wolffd@0: while not(isempty(f)) wolffd@0: l = f(1); wolffd@0: f = find(isnan(d{h}{i}(l:end,k,j)))+l-1; wolffd@0: if isempty(f) wolffd@0: f = size(d{h}{i},1)+1; wolffd@0: end wolffd@0: r = l:f(1)-1; wolffd@0: if length(r)>1 wolffd@0: nb = nb+1; wolffd@0: if nargin > 3 wolffd@0: for g = 1:length(varargin) wolffd@0: if g == 1 wolffd@0: v{g} = repmat(varargin{g}{h}{i}{1,k,j}(nb),... wolffd@0: [length(r),1,1]); wolffd@0: else wolffd@0: v{g} = varargin{g}{h}{i}{1,k,j}(nb); wolffd@0: end wolffd@0: end wolffd@0: else wolffd@0: v = {}; wolffd@0: end wolffd@0: yk(nb,1) = func(abs(d{h}{i}(r,k,j)),... wolffd@0: p{h}{i}(r,k,1),... wolffd@0: v{:}); wolffd@0: end wolffd@0: f = find(not(isnan(d{h}{i}(f(1):end,k,j))))+f(1)-1; wolffd@0: end wolffd@0: y{h}{i}{1,k,j} = yk; wolffd@0: end wolffd@0: end wolffd@0: end wolffd@0: end