From cad25240b3351bb60d8f686bc502b49d0294dcd3 Mon Sep 17 00:00:00 2001
From: Christian Beckmann <c.beckmann@donders.ru.nl>
Date: Tue, 7 Aug 2007 20:27:19 +0000
Subject: [PATCH] *** empty log message ***

---
 meldata.cc   | 5 ++++-
 melica.cc    | 4 ++--
 meloptions.h | 5 +++++
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/meldata.cc b/meldata.cc
index 6d6fd08..0dc130d 100644
--- a/meldata.cc
+++ b/meldata.cc
@@ -209,7 +209,10 @@ namespace Melodic{
     	tmpData = process_file(opts.inputfname.value().at(ctr), numfiles);
 			if(opts.debug.value())
 				save4D(tmpData /numfiles,string("preproc_dat") + num2str(ctr+1));
-      alldat += tmpData / numfiles;
+			if(tmpData.Ncols() == alldat.Ncols() && tmpData.Nrows() == alldat.Nrows())
+      	alldat += tmpData / numfiles;	
+			else
+				message("Data dimensions do not match - ignoring "+opts.inputfname.value().at(ctr) << endl);
     }
 
     //update mask
diff --git a/melica.cc b/melica.cc
index d264066..b5d9b7c 100644
--- a/melica.cc
+++ b/melica.cc
@@ -114,13 +114,13 @@ namespace Melodic{
 	  		Matrix temp(melodat.get_dewhite() * redUMM);
 	  		temp = melodat.expand_dimred(temp);
 			  temp = krapprox(temp,int(temp.Nrows()/melodat.get_numfiles())); 
-				minAbsSin2 = 1 - diag(corrcoef(temp,rank1_old)).Minimum();
+				minAbsSin2 = 1 - diag(abs(corrcoef(temp,rank1_old))).Minimum();
 				rank1_old = temp;
 				temp = melodat.reduce_dimred(temp);
 				redUMM = melodat.get_white() * temp;
 
 				message(" change : " << abs(minAbsSin2) << endl);	
-				if(abs(minAbsSin2) < 0.01 && abs(minAbsSin) < opts.epsilon.value()){ break;}
+				if(abs(minAbsSin2) < opts.epsilonS.value() && abs(minAbsSin) < opts.epsilon.value()){ break;}
 			}
     } while(
       (itt_ctr2 < newmaxitts/opts.maxNumItt.value()) && 
diff --git a/meloptions.h b/meloptions.h
index a49c9e1..bc9cda6 100644
--- a/meloptions.h
+++ b/meloptions.h
@@ -65,6 +65,7 @@ class MelodicOptions {
   	Option<string> segment;
   	Option<bool>   tsmooth;
   	Option<float>  epsilon;
+  	Option<float>  epsilonS;
   	Option<int>    maxNumItt;
   	Option<int>    maxRestart;
   	Option<int>    rank1interval;
@@ -212,6 +213,9 @@ class MelodicOptions {
    epsilon(string("--eps,--epsilon"), 0.0005,
 	   string("minimum error change"), 
 	   false, requires_argument),
+ 	 epsilonS(string("--epsS,--epsilonS"), 0.03,
+		   string("minimum error change for rank-1 approximation in TICA"), 
+		   false, requires_argument),
    maxNumItt(string("--maxit"),  500,
 	   string("\tmaximum number of iterations before restart"), 
 	   false, requires_argument),
@@ -376,6 +380,7 @@ class MelodicOptions {
 	    options.add(segment);
 	    options.add(tsmooth);
 	    options.add(epsilon);
+	    options.add(epsilonS);
 	    options.add(maxNumItt);
 	    options.add(maxRestart);
 	    options.add(rank1interval);
-- 
GitLab