tomwalters@0: % method of class @frame tomwalters@0: % tomwalters@0: % INPUT VALUES: tomwalters@0: % tomwalters@0: % RETURN VALUE: tomwalters@0: % tomwalters@0: % tomwalters@0: % (c) 2003, University of Cambridge, Medical Research Council tomwalters@0: % Stefan Bleeck (stefan@bleeck.de) tomwalters@0: % http://www.mrc-cbu.cam.ac.uk/cnbh/aimmanual tomwalters@0: % $Date: 2003/07/27 15:29:59 $ tomwalters@0: % $Revision: 1.12 $ tomwalters@0: tomwalters@0: function hand=plottemporalprofile(current_frame,options,ax) tomwalters@0: tomwalters@0: if nargin <3 tomwalters@0: ax=gca; tomwalters@0: end tomwalters@0: if nargin <2 tomwalters@0: options=[]; tomwalters@0: end tomwalters@0: tomwalters@0: start_time=getminimumtime(current_frame); tomwalters@0: if start_time < 0 % these are frames read in from ams tomwalters@0: % max_time=getmaximumtime(current_frame); tomwalters@0: fr=getpart(current_frame,start_time,0); tomwalters@0: current_frame=reverse(current_frame); tomwalters@0: start_time=0; tomwalters@0: current_frame=setstarttime(current_frame,0); tomwalters@0: end tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: if ~isfield(options,'has_x_axis'); tomwalters@0: has_x_axis=1; tomwalters@0: else tomwalters@0: has_x_axis=options.has_x_axis; tomwalters@0: end tomwalters@0: tomwalters@0: if ~isfield(options,'is_log'); tomwalters@0: is_log=1; tomwalters@0: else tomwalters@0: is_log=options.is_log; tomwalters@0: end tomwalters@0: tomwalters@0: % for compatibility. tomwalters@0: if isfield(options,'minimum_time'); tomwalters@0: options.minimum_time_interval=options.minimum_time; tomwalters@0: end tomwalters@0: if isfield(options,'maximum_time'); tomwalters@0: options.maximum_time_interval=options.maximum_time; tomwalters@0: end tomwalters@0: tomwalters@0: if ~isfield(options,'minimum_time_interval'); tomwalters@0: if is_log tomwalters@0: minimum_time_interval=0.001; tomwalters@0: else tomwalters@0: minimum_time_interval=0; tomwalters@0: end tomwalters@0: else tomwalters@0: minimum_time_interval=options.minimum_time_interval; tomwalters@0: end tomwalters@0: tomwalters@0: if isfield(options,'time_profile_scale'); tomwalters@0: time_profile_scale=options.time_profile_scale; tomwalters@0: else tomwalters@0: time_profile_scale=1; tomwalters@0: end tomwalters@0: % if the time scale is reversed (time from left to right) tomwalters@0: if isfield(options,'time_reversed'); tomwalters@0: time_reversed=options.time_reversed; tomwalters@0: else tomwalters@0: time_reversed=0; tomwalters@0: end tomwalters@0: tomwalters@0: if ~isfield(options,'maximum_time_interval'); tomwalters@0: maximum_time_interval=0.035; tomwalters@0: else tomwalters@0: maximum_time_interval=options.maximum_time_interval; tomwalters@0: end tomwalters@0: tomwalters@0: % if maximum_time_interval>getmaximumtime(current_frame) tomwalters@0: % maximum_time_interval=getmaximumtime(current_frame); tomwalters@0: % end tomwalters@0: tomwalters@0: tomwalters@0: scale_summe=getscalesumme(current_frame); %for scaling properties tomwalters@0: tomwalters@0: % start plotting: tomwalters@0: plot_struct.t_min=minimum_time_interval; tomwalters@0: plot_struct.t_max=maximum_time_interval; tomwalters@0: plot_struct.has_axis=0; tomwalters@0: plot_struct.is_log=is_log; tomwalters@0: plot_struct.has_y_axis=0; tomwalters@0: tomwalters@0: % interval sum tomwalters@0: % partframe=getpart(current_frame,minimum_time_interval,maximum_time_interval); tomwalters@0: % summe=getsum(partframe); % here it is calculated tomwalters@0: % axis off tomwalters@0: tomwalters@0: sr=getsr(current_frame); tomwalters@0: % start_time=getminimumtime(current_frame); tomwalters@0: % sumvalues=getpart(summe,(minimum_time_interval+start_time),maximum_time_interval+start_time); tomwalters@0: % min_x_screen=round(abs((minimum_time_interval-start_time+1/sr)*sr)); % thats the first point we want to see on the screen tomwalters@0: % max_x_screen=round(abs((maximum_time_interval-start_time)*sr)); % thats the first point we want to see on the screen tomwalters@0: tomwalters@0: start_time=getminimumtime(current_frame); tomwalters@0: if is_log tomwalters@0: min_x_screen=1; tomwalters@0: max_x_screen=round(abs((maximum_time_interval-start_time)*sr)); % thats the first point we want to see on the screen tomwalters@0: else tomwalters@0: min_x_screen=round(abs((minimum_time_interval-start_time+1/sr)*sr)); % thats the first point we want to see on the screen tomwalters@0: max_x_screen=round(abs((maximum_time_interval-start_time)*sr)); % thats the first point we want to see on the screen tomwalters@0: end tomwalters@0: tomwalters@0: tomwalters@0: if max_x_screen>getnrpoints(current_frame) tomwalters@0: max_x_screen=getnrpoints(current_frame); tomwalters@0: maximum_time_interval=(max_x_screen/sr)+start_time; tomwalters@0: end tomwalters@0: tomwalters@0: tomwalters@0: current_frame_values=getvalues(current_frame); tomwalters@0: cvals=current_frame_values(:,min_x_screen:max_x_screen); tomwalters@0: tomwalters@0: if getxaxis(current_frame)=='0' tomwalters@0: cvals=cvals/1000; tomwalters@0: end; tomwalters@0: tomwalters@0: if size(cvals,1)==1 tomwalters@0: sumcvals=cvals; tomwalters@0: else tomwalters@0: sumcvals=sum(cvals)'; tomwalters@0: end tomwalters@0: % cvals=getvalues(summe); tomwalters@0: % min_x_screen=1; tomwalters@0: % max_x_screen=size(cvals,1); tomwalters@0: hand=plot(ax,sumcvals); tomwalters@0: tomwalters@0: maxshowy=1.1; tomwalters@0: if min(cvals) >= 0 tomwalters@0: minshowy=0; tomwalters@0: else tomwalters@0: minshowy=-1; tomwalters@0: end tomwalters@0: tomwalters@0: maxy=maxshowy*scale_summe/time_profile_scale; tomwalters@0: if maxy==0 tomwalters@0: maxy=1; tomwalters@0: end tomwalters@0: if time_profile_scale==-1 % decide myself tomwalters@0: maxy=1.2*max(sumcvals); tomwalters@0: end tomwalters@0: tomwalters@0: % save the two profiles to text files for further analysis tomwalters@0: % 1: freq profile tomwalters@0: x1=getcf(current_frame); tomwalters@0: y1=sum(cvals'); bleeck@3: % x1= bleeck@3: % A1=[x1' y1']; tomwalters@0: % save freqp.txt A1 -ascii bleeck@3: % dlmwrite('freqprofile.txt',A1, '\t') tomwalters@0: tomwalters@0: tomwalters@0: % 2: temp profile bleeck@3: % sr=getsr(current_frame); bleeck@3: % x2=1000/sr:1000/sr:getlength(current_frame)*1000; bleeck@3: % y2=sum(cvals); bleeck@3: % A2=[x2' y2']; tomwalters@0: % save tempp.txt A1 -ascii tomwalters@0: % dlmwrite('tempprofile.txt',A2, '\t') tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: tomwalters@0: if is_log tomwalters@0: min_x_screen=round(abs((minimum_time_interval-start_time+1/sr)*sr)); % thats the first point we want to see on the screen tomwalters@0: if max_x_screen ==min_x_screen tomwalters@0: max_x_screen =min_x_screen +1; tomwalters@0: end tomwalters@0: try tomwalters@0: set(ax,'xlim',[min_x_screen max_x_screen]); tomwalters@0: set(ax,'ylim',[minshowy maxy]); tomwalters@0: tomwalters@0: % axis([min_x_screen max_x_screen minshowy maxy]); tomwalters@0: end tomwalters@0: if time_reversed tomwalters@0: set(ax,'XDir','reverse') % turn them around, because the higher values shell end on the right tomwalters@0: end tomwalters@0: set(ax,'XScale','log') tomwalters@0: t=minimum_time_interval; tomwalters@0: ti=[t 2*t 4*t 8*t 16*t 32*t 64*t]; tomwalters@0: tix=(ti)*sr; % there shell be the tix tomwalters@0: % tix(1)=tix(1)+1; tomwalters@0: ti=(ti*1000); tomwalters@0: ti=fround(ti,2); tomwalters@0: else % its not logarithmic! tomwalters@0: if time_reversed tomwalters@0: set(ax,'XDir','reverse') % turn them around, because the higher values shell end on the right tomwalters@0: else tomwalters@0: set(ax,'XDir','normal') % normale ausrichtung tomwalters@0: end tomwalters@0: nrx=size(cvals,2); tomwalters@0: if scale_summe==0 tomwalters@0: scale_summe=1; tomwalters@0: end tomwalters@0: axis([1 length(sumcvals) minshowy maxy]); tomwalters@0: nr_labels=8; tomwalters@0: tix=1:(nrx-1)/nr_labels:nrx; tomwalters@0: xstep=(maximum_time_interval-minimum_time_interval)*1000/(nr_labels); %works from -35 to 5 tomwalters@0: ti=([minimum_time_interval*1000:xstep:maximum_time_interval*1000+1]); tomwalters@0: ti=round(ti*10)/10; tomwalters@0: set(ax,'XScale','linear') tomwalters@0: % text(min_x_screen*1.5,-scale_summe/5,'Time (ms)'); % this is at a nice position tomwalters@0: end tomwalters@0: tomwalters@0: if has_x_axis tomwalters@0: if max(tix)>1 tomwalters@0: set(ax,'XTick',tix); tomwalters@0: set(ax,'XTickLabel',ti); tomwalters@0: end tomwalters@0: else tomwalters@0: set(ax,'xtick',[]); % we dont want any z-Ticks! tomwalters@0: end % axis tomwalters@0: tomwalters@0: % if scale_summe==0 tomwalters@0: % axis([min_x_screen max_x_screen minshowy maxshowy]); tomwalters@0: % else tomwalters@0: % axis([min_x_screen max_x_screen minshowy maxshowy*scale_summe/time_profile_scale]); tomwalters@0: % end tomwalters@0: tomwalters@0: if getxaxis(current_frame)=='0' tomwalters@0: d=size(cvals); tomwalters@0: ti = [0:1:16]; tomwalters@0: step=(d(2)/16); tomwalters@0: tix = [0:step:d(2)]; tomwalters@0: end; tomwalters@0: tomwalters@0: % stefan for the scale profile tomwalters@0: if strcmp(getxaxis(current_frame),'harmonic ratio') tomwalters@0: ti=get(ax,'XTickLabel'); tomwalters@0: ti=str2num(ti)/1000; tomwalters@0: end tomwalters@0: tomwalters@0: tomwalters@0: set(ax,'XTick',tix); tomwalters@0: set(ax,'XTickLabel',ti); tomwalters@0: set(ax,'YTickLabel',[]); tomwalters@0: