function varargout = miplot(varargin)% MIPLOT provides an intelligent plotting tool for LTPDA.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DESCRIPTION: MIPLOT provides an intelligent plotting tool for LTPDA.%% CALL: h = plot (a,pl)%% INPUTS: pl - a parameter list% a - input analysis object%% OUTPUTS: h - handles to plot objects%% Plot parameters: % % 'type' - one of the data class types% 'tsdata' [default], 'fsdata', 'cdata', 'xydata', 'xyzdata'.%% 'Arrangement' - select the plot layout:% 'single' - plots all AOs on individual figures% 'stacked' - plots all AOs on the same axes [default]% 'subplots' - plots all AOs on subplots% % Line parameters:% % The following properties take cell array values. If the length of % the cell array is shorter than the number of lines to plot, the % remaining lines will be plotted with the default options.% % 'Colors' - a cell array of color definitions which will be% looped over for each line.% % 'LineStyles' - a cell array of line styles. % % 'Legends' - specify a cell array of strings to be used for% the plot legends. If a cell contains an empty% string, the default legend string is built. % If a single string 'off' is given instead of a% cell array, then the legends are all switched% off.% % 'XLabels' - Specify the labels to be used on the x-axis. The% units are added from the data object 'xunits'% property.% % 'YLabels' - Specify the labels to be used on the y-axis. The% units are added from the data object 'yunits'% property. If the object contains complex data,% you should specify two y-labels for that object.% % 'XScales' - Specify the scales to be used on the x-axes.% % 'YScales' - Specify the scales to the used on the y-axes. If% an object contains complex data, you should % specify two y-labels for that object.% % 'LineWidths' - an array of line widths. If the length of the% array is shorter than the number of lines to% plot, the remaining lines will be plotted with% the default line width.% % % % % % VERSION: $Id: miplot.m,v 1.3 2008/02/07 19:51:53 hewitson Exp $%% The following call returns a parameter list object that contains the% default parameter values:%% >> pl = miplot(ao, 'Params')%% HISTORY: 22-12-07 M Hewitson% Creation%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TODO:% 1) Add XRange, YRange, ZRange% 2) Add/test math functions to all plots% % %% Check if this is a call for parametersVERSION = '$Id: miplot.m,v 1.3 2008/02/07 19:51:53 hewitson Exp $';bs = [];if nargin == 2 if isa(varargin{1}, 'ao') && ischar(varargin{2}) in = char(varargin{2}); if strcmp(in, 'Params') varargout{1} = getDefaultPL(); return elseif strcmp(in, 'Version') varargout{1} = VERSION; return end endend%% Collect input ao's, plist's and ao variable namesin_names = {};for ii = 1:nargin in_names{end+1} = inputname(ii);end[as, upl, invars] = collect_inputs(varargin, in_names);%% Go through AOs and collect them into similar typestsAOs = [];fsAOs = [];xyAOs = [];xyzAOs = [];cAOs = [];for j=1:numel(as) switch class(as(j).data) case 'tsdata' tsAOs = [tsAOs as(j)]; case 'fsdata' fsAOs = [fsAOs as(j)]; case 'xydata' xyAOs = [xyAOs as(j)]; case 'xyzdata' xyzAOs = [xyzAOs as(j)]; case 'cdata' cAOs = [cAOs as(j)]; otherwise warning('!!! Unknown data type %s', class(as(j).data)); endend%% Now plot all the objects on separate figures%----------- TSDATA% get default plistdpl = getDefaultPlist('tsdata');% combine the plistspl = combine(upl, dpl);% Call x-y plot[hfig, hax, hli] = xy_plot(tsAOs, pl);%----------- XYDATA% get default plistdpl = getDefaultPlist('xydata');% combine the plistspl = combine(upl, dpl);% Call x-y plot[hfig, hax, hli] = xy_plot(xyAOs, pl);%----------- XYZDATA% get default plistdpl = getDefaultPlist('xyzdata');% combine the plistspl = combine(upl, dpl);% Call x-y-z plot[hfig, hax, hli] = xyz_plot(xyzAOs, pl);%----------- CDATA% get default plistdpl = getDefaultPlist('cdata');% combine the plistspl = combine(upl, dpl);% Call x-y plot[hfig, hax, hli] = y_plot(cAOs, pl);%----------- FSDATA% get default plistdpl = getDefaultPlist('fsdata');% combine the plistspl = combine(upl, dpl);% Call fsdata plot[hfig, hax, hli] = fs_plot(fsAOs, pl);%--------------------------------------------------------------------------% Plot fsdata objects%function varargout = fs_plot(varargin)aos = varargin{1};pl = varargin{2};% Extract parametersarrangement = find(pl, 'Arrangement');colors = find(pl, 'Colors');linestyles = find(pl, 'LineStyles');linewidths = find(pl, 'LineWidths');legends = find(pl, 'Legends');ylabels = find(pl, 'YLabels');xlabels = find(pl, 'XLabels');yscales = find(pl, 'YScales');xscales = find(pl, 'XScales');yranges = find(pl, 'YRanges');xranges = find(pl, 'XRanges');xmaths = find(pl, 'XMaths');ymaths = find(pl, 'YMaths');complexPlotType = find(pl, 'complexPlotType');% check whether we want legends or notif iscell(legends) legendsOn = 1;else if strcmpi(legends, 'off') legendsOn = 0; else legendsOn = 1; legends = []; endendif ~iscell(linestyles), linestyles = {linestyles}; endif ~iscell(legends), legends = {legends}; endif ~iscell(ylabels), ylabels = {ylabels}; endif ~iscell(xlabels), xlabels = {xlabels}; endif ~iscell(xmaths), xmaths = {xmaths}; endif ~iscell(ymaths), ymaths = {ymaths}; endif ~iscell(xscales), xscales = {xscales}; endif ~iscell(yscales), yscales = {yscales}; endif ~iscell(xranges), xranges = {xranges}; endif ~iscell(yranges), yranges = {yranges}; end% collect figure handlestsfig = [];tsax = [];tsli = [];% Legend holderlegendStr = [];if ~isempty(aos) % Now loop over AOs Na = length(aos); % - first to check if any are complex haveComplex = 0; for j=1:Na a = aos(j); y = a.data.y; ymath = ''; if j<=length(ymaths) if ~isempty(ymaths{j}) eval(sprintf('y = %s;', ymaths{j})); ymath = ymaths{j}; end end xmath = ''; if j<=length(xmaths) if ~isempty(xmaths{j}) eval(sprintf('x = %s;', xmaths{j})); xmath = xmaths{j}; end end if ~isreal(y) haveComplex = 1; end end % Loop over the AOs now for j=1:Na % set real and imag subplot handles to empty tsax_r = []; tsax_i = []; % Get this AO a = aos(j); %------- Apply math functions x = a.data.x; y = a.data.y; ymath = ''; if j<=length(ymaths) if ~isempty(ymaths{j}) eval(sprintf('y = %s;', ymaths{j})); ymath = ymaths{j}; end end xmath = ''; if j<=length(xmaths) if ~isempty(xmaths{j}) eval(sprintf('x = %s;', xmaths{j})); xmath = xmaths{j}; end end % what figures do we need? switch arrangement case 'single' tsfig = [tsfig figure]; col = colors{1}; % check if this data set is real or complex if ~isreal(y) % complex means we use two subplots tsax_r = subplot(2,1,1); tsax_i = subplot(2,1,2); tsax = [tsax tsax_r tsax_i]; else % real means we use a single subplot tsax_r = subplot(1, 1, 1); tsax = [tsax tsax_r]; end case 'stacked' if j==1, tsfig = figure; end % if at least one of the input fsdata AOs is complex, we need to % allow for subplots if haveComplex tsax_r = subplot(2,1,1); tsax_i = subplot(2,1,2); tsax = [tsax_r tsax_i]; else tsax_r = subplot(1, 1, 1); tsax = tsax_r; end col = colors{mod(j-1,length(colors))+1}; hold(tsax_r, 'on'); if ishandle(tsax_i) hold(tsax_i, 'on'); end case 'subplots' if j == 1, tsfig = figure; end c = 1+(j-1)*2; sx = Na; sy = 2; % Now we have one or two subplots per input object. if ~isreal(y) tsax_r = subplot(sx, sy,c); tsax_i = subplot(sx, sy,c+1); tsax = [tsax tsax_r tsax_i]; else tsax_r = subplot(sx, sy, c:c+1); tsax = [tsax tsax_r]; end col = colors{1}; otherwise error('### Unknown plot arrangement'); end %------- Plot the data % plot real or complex data and setup default values for scale and % labels as we go. if isreal(y) tsli = [tsli plot(tsax_r, x, y)]; ylabelr = 'amplitude'; ylabeli = 'imag'; yscaleR = 'log'; yscaleI = 'lin'; xscaleR = 'log'; xscaleI = 'lin'; else switch complexPlotType case 'realimag' tsli = [tsli plot(tsax_r, x, real(y))]; tsli = [tsli plot(tsax_i, x, imag(y))]; ylabelr = 'real'; ylabeli = 'imag'; yscaleR = 'lin'; yscaleI = 'lin'; xscaleR = 'lin'; xscaleI = 'lin'; case 'absdeg' tsli = [tsli plot(tsax_r, x, abs(y))]; tsli = [tsli plot(tsax_i, x, phase(y))]; ylabelr = 'amplitude'; ylabeli = 'Phase [deg]'; yscaleR = 'log'; yscaleI = 'lin'; xscaleR = 'log'; xscaleI = 'log'; case 'absrad' tsli = [tsli plot(tsax_r, x, abs(y))]; tsli = [tsli plot(tsax_i, x, angle(y))]; ylabelr = 'amplitude'; ylabeli = 'phase [rad]'; yscaleR = 'log'; yscaleI = 'lin'; xscaleR = 'log'; xscaleI = 'log'; otherwise error('### Unknown plot type for complex data'); end end %------- Axis properties % Set ylabel c = 1+(j-1)*2; if c<=length(ylabels) if ~isempty(ylabels{c}) ylstrR = ylabels{c}; else ylstrR = ylabelr; end else ylstrR = ylabelr; end if c<length(ylabels) if ~isempty(ylabels{c+1}) ylstrI = ylabels{c+1}; else ylstrI = ylabeli; end else ylstrI = ylabeli; end if ~isempty(ymath) ymath = strrep(ymath, 'y', sprintf('%s', a.data.yunits)); ylstrR = [ylstrR ' [' ymath ']' ]; else ylstrR = [ylstrR ' [' a.data.yunits ']' ]; end ylabel(tsax_r, ylstrR); if ishandle(tsax_i) ylabel(tsax_i, ylstrI); end % Set xlabel if j<=length(xlabels) && ~isempty(xlabels{j}) xlstr = xlabels{j}; else xlstr = find(pl, 'XLabel'); end if ~isempty(xmath) xmath = strrep(xmath, 'x', sprintf('%s', a.data.xunits)); xlstr = [xlstr ' [' xmath ']' ]; else xlstr = [xlstr ' [' a.data.xunits ']' ]; end xlabel(tsax_r, xlstr); if ishandle(tsax_i) xlabel(tsax_i, xlstr); end % Set grid on or off grid(tsax_r, 'on'); if ishandle(tsax_i) grid(tsax_i, 'on'); end % Set Y scale c = 1+(j-1)*2; if c<=length(yscales) if ~isempty(yscales{c}) yscaleR = yscales{c}; end end if c<length(yscales) if ~isempty(yscales{c+1}) yscaleI = yscales{c+1}; end end set(tsax_r, 'YScale', yscaleR); if ishandle(tsax_i) set(tsax_i, 'YScale', yscaleI); end % Set X scale c = 1+(j-1)*2; if c<=length(xscales) if ~isempty(xscales{c}) xscaleR = xscales{c}; end end if c<length(xscales) if ~isempty(xscales{c+1}) xscaleI = xscales{c+1}; end end set(tsax_r, 'XScale', xscaleR); if ishandle(tsax_i) set(tsax_i, 'XScale', xscaleI); end % Set Y range c = 1+(j-1)*2; if c<=length(yranges) if ~isempty(yranges{c}) set(tsax_r, 'YLim', yranges{c}); end end if c<length(yranges) if ~isempty(yranges{c+1}) if ishandle(tsax_i) set(tsax_i, 'YLim', yranges{c+1}); end end end % Set X range c = 1+(j-1)*2; if c<=length(xranges) if ~isempty(xranges{c}) set(tsax_r, 'XLim', xranges{c}); end end if c<length(xranges) if ~isempty(xranges{c+1}) if ishandle(tsax_i) set(tsax_i, 'XLim', xranges{c+1}); end end end %------- line properties % Set line color if isreal(y) set(tsli(end), 'Color', col); else set(tsli(end-1), 'Color', col); set(tsli(end), 'Color', col); end % Set line style if j<=length(linestyles) && ~isempty(linestyles{j}) if isreal(y) set(tsli(end), 'LineStyle', linestyles{j}); else set(tsli(end-1), 'LineStyle', linestyles{j}); set(tsli(end), 'LineStyle', linestyles{j}); end end % Set line widths if j<=length(linewidths) && ~isempty(linewidths(j)) if isreal(y) set(tsli(end), 'LineWidth', linewidths(j)); else set(tsli(end-1), 'LineWidth', linewidths(j)); set(tsli(end), 'LineWidth', linewidths(j)); end end % Set legend string lstr = ''; if legendsOn if j<=length(legends) && ~isempty(legends{j}) lstr = legends{j}; else lstr = ltpda_label(a.name); end end legendStr = [legendStr cellstr(lstr)]; % Set the legend now if we can if legendsOn if strcmp(arrangement, 'single') || strcmp(arrangement, 'subplots') legend(tsax_r, legendStr{end}); end end end % End loop over AOs % Process legends for stacked plots if legendsOn if strcmp(arrangement, 'stacked') h = legend(tsax_r, legendStr); set(h, 'FontSize', 10) end endend% Set outputsif nargout > 0 varargout{1} = tsfig;endif nargout > 1 varargout{2} = tsax;endif nargout == 3 varargout{3} = tsli;endif nargout > 3 error('### Too many output arguments');end%--------------------------------------------------------------------------% Plot tsdata and xydata objects%function varargout = xy_plot(varargin)aos = varargin{1};pl = varargin{2};% Extract parametersarrangement = find(pl, 'Arrangement');colors = find(pl, 'Colors');linestyles = find(pl, 'LineStyles');linewidths = find(pl, 'LineWidths');legends = find(pl, 'Legends');ylabels = find(pl, 'YLabels');xlabels = find(pl, 'XLabels');xmaths = find(pl, 'XMaths');ymaths = find(pl, 'YMaths');% check whether we want legends or notif iscell(legends) legendsOn = 1;else if strcmpi(legends, 'off') legendsOn = 0; else legendsOn = 1; legends = []; endendif ~iscell(linestyles), linestyles = {linestyles}; endif ~iscell(legends), legends = {legends}; endif ~iscell(ylabels), ylabels = {ylabels}; endif ~iscell(xlabels), xlabels = {xlabels}; endif ~iscell(xmaths), xmaths = {xmaths}; endif ~iscell(ymaths), ymaths = {ymaths}; end% collect figure handlestsfig = [];tsax = [];tsli = [];% Legend holderlegendStr = [];if ~isempty(aos) % Now loop over AOs Na = length(aos); for j=1:Na % Get this AO a = aos(j); % what figures do we need? switch arrangement case 'single' tsfig = [tsfig figure]; tsax = subplot(1,1,1); col = colors{1}; case 'stacked' if j==1, tsfig = figure; end tsax = subplot(1,1,1); col = colors{mod(j-1,length(colors))+1}; hold on; case 'subplots' if j == 1, tsfig = figure; end tsax = [tsax subplot(Na, 1, j)]; col = colors{1}; otherwise error('### Unknown plot arrangement'); end %------- Apply math functions x = a.data.x; y = a.data.y; ymath = ''; if j<=length(ymaths) if ~isempty(ymaths{j}) eval(sprintf('y = %s;', ymaths{j})); ymath = ymaths{j}; end end xmath = ''; if j<=length(xmaths) if ~isempty(xmaths{j}) eval(sprintf('x = %s;', xmaths{j})); xmath = xmaths{j}; end end %------- Plot the data tsli = [tsli plot(tsax(end), x, y)]; %------- Axis properties % Set ylabel if j<=length(ylabels) && ~isempty(ylabels{j}) ylstr = ylabels{j}; else ylstr = find(pl, 'YLabel'); end if ~isempty(ymath) ymath = strrep(ymath, 'y', sprintf('%s', a.data.yunits)); ylstr = [ylstr ' [' ymath ']' ]; else ylstr = [ylstr ' [' a.data.yunits ']' ]; end ylabel(ylstr); % Set xlabel if j<=length(xlabels) && ~isempty(xlabels{j}) xlstr = xlabels{j}; else xlstr = find(pl, 'XLabel'); end if ~isempty(xmath) xmath = strrep(xmath, 'x', sprintf('%s', a.data.xunits)); xlstr = [xlstr ' [' xmath ']' ]; else xlstr = [xlstr ' [' a.data.xunits ']' ]; end xlabel(xlstr); % Set grid on or off grid(tsax(end), 'on'); %------- line properties % Set line color set(tsli(end), 'Color', col); % Set line style if j<=length(linestyles) && ~isempty(linestyles{j}) set(tsli(end), 'LineStyle', linestyles{j}); end % Set line widths if j<=length(linewidths) && ~isempty(linewidths(j)) set(tsli(end), 'LineWidth', linewidths(j)); end % Set legend string lstr = ''; if legendsOn if j<=length(legends) && ~isempty(legends{j}) lstr = legends{j}; else lstr = ltpda_label(a.name); end end legendStr = [legendStr cellstr(lstr)]; % Set the legend now if we can if legendsOn if strcmp(arrangement, 'single') || strcmp(arrangement, 'subplots') legend(legendStr{end}); end end end % Process legends for stacked plots if legendsOn if strcmp(arrangement, 'stacked') h = legend(legendStr); set(h, 'FontSize', 10) end endend% Set outputsif nargout > 0 varargout{1} = tsfig;endif nargout > 1 varargout{2} = tsax;endif nargout == 3 varargout{3} = tsli;endif nargout > 3 error('### Too many output arguments');end%--------------------------------------------------------------------------% Plot cdata objects%function varargout = y_plot(varargin)aos = varargin{1};pl = varargin{2};% Extract parametersarrangement = find(pl, 'Arrangement');colors = find(pl, 'Colors');linestyles = find(pl, 'LineStyles');linewidths = find(pl, 'LineWidths');legends = find(pl, 'Legends');ylabels = find(pl, 'YLabels');xlabels = find(pl, 'XLabels');xmaths = find(pl, 'XMaths');ymaths = find(pl, 'YMaths');% check whether we want legends or notif iscell(legends) legendsOn = 1;else if strcmp(legends, 'off') legendsOn = 0; else legendsOn = 1; legends = []; endendif ~iscell(linestyles), linestyles = {linestyles}; endif ~iscell(legends), legends = {legends}; endif ~iscell(ylabels), ylabels = {ylabels}; endif ~iscell(xlabels), xlabels = {xlabels}; endif ~iscell(xmaths), xmaths = {xmaths}; endif ~iscell(ymaths), ymaths = {ymaths}; end% collect figure handlestsfig = [];tsax = [];tsli = [];% Legend holderlegendStr = [];if ~isempty(aos) % Now loop over AOs Na = length(aos); for j=1:Na % Get this AO a = aos(j); % what figures do we need? switch arrangement case 'single' tsfig = [tsfig figure]; tsax = subplot(1,1,1); col = colors{1}; case 'stacked' if j==1, tsfig = figure; end tsax = subplot(1,1,1); col = colors{mod(j-1,length(colors))+1}; hold on; case 'subplots' if j == 1, tsfig = figure; end tsax = [tsax subplot(Na, 1, j)]; col = colors{1}; otherwise error('### Unknown plot arrangement'); end %------- Apply math functions x = 1:length(a.data.y); y = a.data.y; ymath = ''; if j<=length(ymaths) if ~isempty(ymaths{j}) eval(sprintf('y = %s;', ymaths{j})); ymath = ymaths{j}; end end xmath = ''; if j<=length(xmaths) if ~isempty(xmaths{j}) eval(sprintf('x = %s;', xmaths{j})); xmath = xmaths{j}; end end %------- Plot the data idcs = plot(tsax(end), x, y); tsli = [tsli idcs(1:end).']; %------- Axis properties % Set ylabel if j<=length(ylabels) && ~isempty(ylabels{j}) ylstr = ylabels{j}; else ylstr = find(pl, 'YLabel'); end if ~isempty(ymath) ymath = strrep(ymath, 'y', sprintf('%s', a.data.yunits)); ylstr = [ylstr ' [' ymath ']' ]; else ylstr = [ylstr ' [' a.data.yunits ']' ]; end ylabel(ylstr); % Set xlabel if j<=length(xlabels) && ~isempty(xlabels{j}) xlstr = xlabels{j}; else xlstr = find(pl, 'XLabel'); end if ~isempty(xmath) xmath = strrep(xmath, 'x', sprintf('%s', a.data.xunits)); xlstr = [xlstr ' [' xmath ']' ]; else xlstr = [xlstr ' [' a.data.xunits ']' ]; end xlabel(xlstr); % Set grid on or off grid(tsax(end), 'on'); %------- line properties % Set line color set(tsli(end), 'Color', col); % Set line style if j<=length(linestyles) && ~isempty(linestyles{j}) set(tsli(end), 'LineStyle', linestyles{j}); end % Set line widths if j<=length(linewidths) set(tsli(end), 'LineWidth', linewidths(j)); end % Set legend string if legendsOn if j<=length(legends) && ~isempty(legends{j}) legendStr = [legendStr legends(j)]; else lstr = ltpda_label(a.name); legendStr = [legendStr cellstr(lstr)]; end end % Set the legend now if we can if legendsOn if strcmp(arrangement, 'single') || strcmp(arrangement, 'subplots') legend(legendStr{end}); end end end % Process legends for stacked plots if legendsOn if strcmp(arrangement, 'stacked') h = legend(legendStr); set(h, 'FontSize', 10) end endend% Set outputsif nargout > 0 varargout{1} = tsfig;endif nargout > 1 varargout{2} = tsax;endif nargout == 3 varargout{3} = tsli;endif nargout > 3 error('### Too many output arguments');end%--------------------------------------------------------------------------% Plot xyzdata objects%function varargout = xyz_plot(varargin)aos = varargin{1};pl = varargin{2};% Extract parametersarrangement = find(pl, 'Arrangement');colors = find(pl, 'Colors');linestyles = find(pl, 'LineStyles');linewidths = find(pl, 'LineWidths');legends = find(pl, 'Legends');zlabels = find(pl, 'ZLabels');ylabels = find(pl, 'YLabels');xlabels = find(pl, 'XLabels');xmaths = find(pl, 'XMaths');ymaths = find(pl, 'YMaths');zmaths = find(pl, 'ZMaths');% check whether we want legends or notif iscell(legends) legendsOn = 1;else if strcmp(legends, 'off') legendsOn = 0; else legendsOn = 1; legends = []; endend% collect figure handlestsfig = [];tsax = [];tsli = [];% Legend holderlegendStr = [];if ~isempty(aos) % Now loop over AOs Na = length(aos); for j=1:Na % Get this AO a = aos(j); % what figures do we need? switch arrangement case 'single' tsfig = [tsfig figure]; tsax = subplot(1,1,1); case 'subplots' if j == 1, tsfig = figure; end tsax = [tsax subplot(Na, 1, j)]; otherwise error('### Unknown plot arrangement'); end %------- Apply math functions x = a.data.x; y = a.data.y; z = a.data.z; ymath = ''; if j<=length(ymaths) if ~isempty(ymaths{j}) eval(sprintf('y = %s;', ymaths{j})); ymath = ymaths{j}; end end xmath = ''; if j<=length(xmaths) if ~isempty(xmaths{j}) eval(sprintf('x = %s;', xmaths{j})); xmath = xmaths{j}; end end zmath = ''; if j<=length(zmaths) if ~isempty(zmaths{j}) eval(sprintf('z = %s;', zmaths{j})); zmath = zmaths{j}; end end %------- Plot the data idcs = pcolor(x,y,z); tsli = [tsli idcs(1:end).']; % plot properties set(idcs, 'EdgeColor', 'none'); %------- Axis properties % Reverse y-direction for spectrograms set(tsax(end), 'YDir', 'reverse'); % Set ylabel if j<=length(ylabels) && ~isempty(ylabels{j}) ylstr = ylabels{j}; else ylstr = find(pl, 'YLabel'); end if ~isempty(ymath) ymath = strrep(ymath, 'y', sprintf('%s', a.data.yunits)); ylstr = [ylstr ' [' ymath ']' ]; else ylstr = [ylstr ' [' a.data.yunits ']' ]; end ylabel(ylstr); % Set xlabel if j<=length(xlabels) && ~isempty(xlabels{j}) xlstr = xlabels{j}; else xlstr = find(pl, 'XLabel'); end if ~isempty(xmath) xmath = strrep(xmath, 'x', sprintf('%s', a.data.xunits)); xlstr = [xlstr ' [' xmath ']' ]; else xlstr = [xlstr ' [' a.data.xunits ']' ]; end xlabel(xlstr); % Set grid on or off grid(tsax(end), 'on'); % Set title string if ~strcmpi(legends, 'off') if j<=length(legends) && ~isempty(legends{j}) legendStr = [legendStr legends(j)]; else lstr = ltpda_label(a.name); legendStr = [legendStr cellstr(lstr)]; end end % Set the legend now if we can tstr = legendStr{end}; if legendsOn title(tstr); end % Set colorbars hc = colorbar('peer', tsax(end)); if j<=length(zlabels) if ~isempty(zlabels{j}) zlstr = zlabels{j}; end else zlstr = find(pl, 'Zlabel'); end if ~isempty(zmath), zlstr = [zlstr sprintf('\n%s', zmath)]; end ylh = get(hc, 'YLabel'); set(ylh, 'String', zlstr); set(ylh, 'Fontsize', get(tsax(end), 'Fontsize')) set(ylh, 'FontName', get(tsax(end), 'FontName')) set(ylh, 'FontAngle', get(tsax(end), 'FontAngle')) set(ylh, 'FontWeight', get(tsax(end), 'FontWeight')) endend% Set outputsif nargout > 0 varargout{1} = tsfig;endif nargout > 1 varargout{2} = tsax;endif nargout == 3 varargout{3} = tsli;endif nargout > 3 error('### Too many output arguments');end%--------------------------------------------------------------------------% Default Parameter Lists%function out = getDefaultPlist(varargin)% list of available parameter setssets = {'tsdata', 'fsdata', 'cdata', 'xydata'};% Get the LTPDA color set for linescolors = getappdata(0,'ltpda_default_plot_colors');if nargin == 0 out = sets; returnendset = varargin{1};out = plist('Colors', colors, ... 'Arrangement', 'stacked');switch set case 'fsdata' out = append(out, 'type', 'fsdata', ... 'complexPlotType', 'absdeg', ... 'XLabel', 'Frequency'); case 'tsdata' out = append(out, 'type', 'tsdata', ... 'Xlabel', 'Time', ... 'Ylabel', 'Amplitude'); case 'xydata' out = append(out, 'type', 'xydata', ... 'Xlabel', 'X-data', ... 'Ylabel', 'Y-data', ... 'YMaths', '', ... 'XMaths', ''); case 'xyzdata' out = plist('Colors', colors, 'Arrangement', 'single', ... 'type', 'xydata', ... 'Xlabel', 'Time', ... 'Ylabel', 'Frequency',... 'Zlabel', 'Amplitude', ... 'YMaths', '', ... 'ZMaths', '', ... 'XMaths', ''); case 'cdata' out = append(out, 'type', 'tsdata', ... 'Xlabel', 'Index', ... 'Ylabel', 'Value'); otherwise out = plist();end