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