forked from OHBA-analysis/osl-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
osl_source_variance.m
48 lines (37 loc) · 1.09 KB
/
osl_source_variance.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
36
37
38
39
40
41
42
43
44
45
46
47
function [V, mean_V] = osl_source_variance(D)
% Computes the temporal variance of data in MEEG object
% V = osl_source_variance(D)
% [V, mean_V] = osl_source_variance(D)
currentMontage = montage(D,'getindex');
V = zeros(D.nchannels,D.ntrials);
if nargout>1
mean_V=zeros(D.nchannels,1);
num_good_trials=0;
end
D = D.montage('switch');
C = osl_cov(D);
if currentMontage ~= 0
tra = D.montage('getmontage',currentMontage).tra;
else
tra = eye(size(C(:,:,1)));
end
if D.ntrials > 1, ft_progress('init', 'etf'); end
for trl = 1:D.ntrials
if D.ntrials > 1
ft_progress(trl/D.ntrials, 'Processing trial %d of %d', trl, D.ntrials);
end
V(:,trl) = diag(tra * C(:,:,trl) * tra');
if nargout>1
% compute source variance averaged over good trials
if sum(V(:,trl))>0 % check if trial was good
mean_V=mean_V+V(:,trl);
num_good_trials=num_good_trials+1;
end
end
end
if D.ntrials > 1, ft_progress('close'); end
if nargout>1
% compute source variance averaged over trials
mean_V = mean_V/num_good_trials;
end
end