0001 function [spectrogram,t,f] = MTPointSpectrogram(times,varargin)
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 
0016 
0017 
0018 
0019 
0020 
0021 
0022 
0023 
0024 
0025 
0026 
0027 
0028 
0029 
0030 
0031 
0032 
0033 
0034 
0035 
0036 
0037 
0038 
0039 
0040 
0041 
0042 
0043 
0044 
0045 
0046 
0047 
0048 
0049 
0050 
0051 
0052 
0053 
0054 
0055 
0056 
0057 
0058 CheckChronux('mtspecgrampt');
0059 
0060 
0061 frequency = 20000;
0062 window = 5;
0063 range = [];
0064 overlap = [];
0065 step = [];
0066 show = 'off';
0067 cutoffs = [0 13];
0068 tapers = [3 5];
0069 pad = 0;
0070 parent = [];
0071 averageTrials = 1;
0072 
0073 
0074 if nargin < 1 | mod(length(varargin),2) ~= 0,
0075   error('Incorrect number of parameters (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0076 end
0077 
0078 
0079 if ~isdvector(times),
0080     error('Parameter ''times'' is not a vector (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0081 end
0082 
0083 
0084 for i = 1:2:length(varargin),
0085     if ~ischar(varargin{i}),
0086         error(['Parameter ' num2str(i+2) ' is not a property (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).']);
0087     end
0088     switch(lower(varargin{i})),
0089         case 'frequency',
0090             frequency = varargin{i+1};
0091             if ~isdscalar(frequency,'>0'),
0092                 error('Incorrect value for property ''frequency'' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0093             end
0094         case 'range',
0095             range = varargin{i+1};
0096             if ~isdvector(range,'#2','>=0','<'),
0097                 error('Incorrect value for property ''range'' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0098             end
0099         case 'window',
0100             window = varargin{i+1};
0101             if ~isdscalar(window,'>0'),
0102                 error('Incorrect value for property ''window'' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0103             end
0104         case 'overlap',
0105             overlap = varargin{i+1};
0106             if ~isdscalar(overlap,'>0'),
0107                 error('Incorrect value for property ''overlap'' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0108             end
0109         case 'step',
0110             step = varargin{i+1};
0111             if ~isdscalar(step,'>0'),
0112                 error('Incorrect value for property ''step'' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0113             end
0114         case 'tapers',
0115             tapers = varargin{i+1};
0116             if ~isivector(tapers,'#2','>0'),
0117                 error('Incorrect value for property ''tapers'' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0118             end
0119         case 'pad',
0120             pad = varargin{i+1};
0121             if ~isdscalar(pad,'>-1'),
0122                 error('Incorrect value for property ''pad'' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0123             end
0124         case 'show',
0125             show = varargin{i+1};
0126             if ~isastring(show,'on','off'),
0127                 error('Incorrect value for property ''show'' (type ''help <a href="matlab:help FindRipples">FindRipples</a>'' for details).');
0128             end
0129         case 'cutoffs',
0130             cutoffs = varargin{i+1};
0131             if ~isdvector(cutoffs,'#2','>=0','<'),
0132                 error('Incorrect value for property ''cutoffs'' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0133             end
0134         case 'parent',
0135             parent = varargin{i+1};
0136             if ~ishandle(parent),
0137                 error('Incorrect value for property ''parent'' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0138             end
0139         otherwise,
0140             error(['Unknown property ''' num2str(varargin{i}) ''' (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).']);
0141     end
0142 end
0143 
0144 
0145 if isempty(step),
0146     if isempty(overlap),
0147         overlap = window/2;
0148     end
0149 else
0150     if isempty(overlap),
0151         overlap = window-step;
0152     elseif overlap ~= window-step,
0153         error('Incompatible ''step'' and ''overlap'' parameters (type ''help <a href="matlab:help MTPointSpectrogram">MTPointSpectrogram</a>'' for details).');
0154     end
0155 end
0156 
0157 
0158 parameters.Fs = frequency;
0159 if ~isempty(range), parameters.fpass = range; end
0160 parameters.tapers = tapers;
0161 parameters.pad = pad;
0162 parameters.trialave = averageTrials;
0163 
0164 
0165 [spectrogram,t,f] = mtspecgrampt_optimized(times,[window window-overlap],parameters);
0166 t = t';
0167 f = f';
0168 spectrogram = spectrogram';
0169 if strcmp(lower(show),'on'),
0170     if isempty(parent), parent = figure; end
0171     logTransformed = log(spectrogram);
0172     PlotColorMap(logTransformed,1,'x',t,'y',f,'cutoffs',cutoffs);
0173     xlabel('Time (s)');
0174     ylabel('Frequency (Hz)');
0175     title('Power Spectrogram');
0176 end