Skip to content
Snippets Groups Projects
Commit b834467d authored by Christian Beckmann's avatar Christian Beckmann
Browse files

added eig option with different order

parent beb82dd3
No related branches found
No related tags found
No related merge requests found
......@@ -60,6 +60,9 @@ Option<float> coordval(string("-c"), 0.0,
Option<bool> eig(string("--eig"), false,
string(" calculate Eigenvariate(s) instead of mean (output will have 0 mean)"),
false, no_argument);
Option<bool> bin_mask(string("--no_bin"), true,
string(" do not binarise the mask for calculation of Eigenvariates"),
false, no_argument);
Option<int> order(string("--order"), 1,
string(" select number of Eigenvariates (default 1)"),
false, requires_argument);
......@@ -81,6 +84,7 @@ int main(int argc,char *argv[])
options.add(showall);
options.add(eig);
options.add(order);
options.add(bin_mask);
options.add(verbose);
options.add(help);
......@@ -137,19 +141,26 @@ int main(int argc,char *argv[])
return -1;
}
mask_nonbin[0] = mask;
mask_nonbin.addvolume(mask);
mask.binarise(1e-8); // arbitrary "0" threshold
if(eig.value()){
Matrix dat, evecs, scales;
scales = mask_nonbin.matrix(mask);
dat = SP(vin.matrix(mask),scales);
dat = vin.matrix(mask);
if(!bin_mask.value())
dat = SP (dat, ones(dat.Nrows(),1) * scales);
dat = remmean(dat,1);
if (verbose.value()) {
cout << "Number of voxels used = " << dat.Ncols() << endl;
}
SymmetricMatrix Corr;
Corr << dat * dat.t() / dat.Ncols();
DiagonalMatrix tmpD;
EigenValues(Corr,tmpD,evecs);
evecs = evecs.Columns(1,order.value());
evecs = fliplr(evecs.Columns(evecs.Ncols()-order.value()+1 , evecs.Ncols())) * std::sqrt(dat.Nrows());
if (outmat.set()) {
write_ascii_matrix(evecs,outmat.value());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment