-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfetPcaAmpWid.m
35 lines (29 loc) · 893 Bytes
/
fetPcaAmpWid.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function mrPcaVpp = fetPcaAmpWid(tr, nPca, varargin)
P = funcDefStr(funcInStr(varargin{:}), 'fZscore', 1, 'hFunc', [], 'nInterp', 1);
if nargin < 2, nPca = 4; end
nSamples = size(tr,1);
nChans = size(tr,2);
nTrans = size(tr,3);
mrAmp = zeros([nChans, nTrans], 'like', tr);
mrWid = zeros([nChans, nTrans], 'like', tr);
% tic
%viRange = 1:nPca;
for iChan = 1:nChans
mr = tr2mr(tr, iChan);
[mrWav1, mrPca1, vrLat] = princomp(mr);
mrSpkWav1 = mrPca1(:, 1:nPca) * mrWav1(:,1:nPca)';
if P.nInterp>1
mrSpkWav1 = interp1(1:nSamples, mrSpkWav1, ...
1:1/nInterp:nSamples, 'spline');
end
[vrMin, viMin] = min(mrSpkWav1);
mrAmp(iChan,:) = vrMin; %amp determined
vrThresh = vrMin / exp(1);
for iSpk=1:nSpks
end
ml = bsxfun(@lt, mrSpkWav1(1:viMin,:), vrThresh);
end
% toc
if P.fZscore
mrPcaVpp = zscoreMtx(mrPcaVpp);
end