samer@0: function u=construct(s,sizes_in) samer@0: acquire(s); samer@0: eff_size=sizes_in{1}; samer@0: if s.opts.transpose, eff_size = eff_size([2,1]); end samer@0: if isempty(s.opts.dom), dom=1:eff_size(1); else dom=s.opts.dom; end samer@0: figure(fig(s)); set(gcf,'Name',name(s)); samer@0: samer@0: if s.opts.transpose, pre=@transpose; else pre=@id; end samer@0: if isempty(dom) samer@0: h=s.opts.plotfn(pre(zeros(sizes_in{1})),s.opts.args{:}); samer@0: else samer@0: h=s.opts.plotfn(dom,pre(zeros(sizes_in{1})),s.opts.args{:}); samer@0: end samer@0: samer@0: if isempty(s.opts.xlim) && numel(dom)>1, s.opts.xlim=[dom(1),dom(end)]; end samer@0: if ~isempty(s.opts.ylim), ylim(s.opts.ylim); end samer@0: if ~isempty(s.opts.xlim), xlim(s.opts.xlim); end samer@0: if isfield(s.opts,'ylabel'), ylabel(s.opts.ylabel); end samer@0: if isfield(s.opts,'xlabel'), xlabel(s.opts.xlabel); end samer@0: samer@0: u=mkunit(s); samer@0: if length(h)==1 samer@0: if autoflush(s), u.process =@proc_flush; samer@0: else u.process=@proc_noflush; end samer@0: else samer@0: af=autoflush(s); samer@0: u.process =@proc_mat; samer@0: end samer@0: samer@0: u.sizes_out = {}; samer@0: u.dispose = @dispose; samer@0: samer@0: function dispose, delete(h); release(s); end samer@0: function proc_flush(x), set(h,'YData',pre(x)); drawnow; end samer@0: function proc_noflush(x), set(h,'YData',pre(x)); end samer@0: function proc_mat(x), samer@0: if s.opts.transpose samer@0: for i=1:length(h) samer@0: set(h(i),'YData',x(i,:)'); samer@0: end samer@0: else samer@0: for i=1:length(h) samer@0: set(h(i),'YData',x(:,i)); samer@0: end samer@0: end samer@0: if af, drawnow; end samer@0: end samer@0: end