-
Notifications
You must be signed in to change notification settings - Fork 1
/
fda.R
35 lines (29 loc) · 1.05 KB
/
fda.R
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
if (!exists('proj.env')) {
source('env.R')
}
if (!exists('config', envir = proj.env)) {
source('config.R')
}
proj.env$fda = new.env(parent=emptyenv())
proj.env$fda$smooth = function(raw, type.basis = proj.env$config$type.basis, nbasis=proj.env$config$nbasis) {
eeg = raw
if (class(eeg) != 'fdata') {
eeg = fdata(eeg)
}
return(fdata2fd( eeg, type.basis=type.basis, nbasis=nbasis))
}
proj.env$fda$cluster = function(data, ncl = proj.env$config$ncl, method = 'Exact', draw=FALSE, max.iter=100) {
eeg = data
if (class(eeg) != 'fd') {
eeg = proj.env$fda$smooth(eeg)
}
#clusters = kmeans.fd(eeg, ncl = ncl, method=method, draw=FALSE)
clusters = kmeans.fd(eeg,ncl=ncl,dfunc=func.trim.RPD, method=method,
max.iter=70,par.dfunc=list(dfunc="depth.FM",deriv=c(0,1,2)))
return (clusters)
}
proj.env$fda$cluster_cor = function(cl_1, clstr, data, time_vector) {
cluster_1 = data[which(clstr$cluster %in% cl_1)]
corfda=cor.fd(time_vector,cluster_1) #, time_vector, cluster_2)
return (corfda)
}