Skip to content
Snippets Groups Projects
Select Git revision
  • a89978078a54fc9ff819d023da9fbd7e8058004f
  • master default protected
2 results

cuttraj.cc

Blame
  • cuttraj.cc 1.05 KiB
    #include "cuttraj.h"
    #include <iostream>
    #include <armadillo>
    
    using namespace arma;
    
    
    
    void cuttraj(const mat& evalTraj, const mat& corrTraj, mat& traj1, mat& traj2) {
    	// Distances (2-norm):
    	mat dists = zeros<mat>(evalTraj.n_rows, corrTraj.n_rows);
    	for (int oldp = 0; oldp < evalTraj.n_rows; ++oldp) {
    		for (int newp = 0; newp < corrTraj.n_rows; ++newp) {
    			dists(oldp, newp) = norm( evalTraj.row(oldp) - corrTraj.row(newp));
    		}
    	}
    	mat dist2old = min(dists);
    	mat dist2oldmax = max(dist2old,1);
    	
    	double th = 0.5;
    	int cutnew = 0;
    	bool haslonger = false;
    	for (int newp = dist2old.n_cols; newp > 0; --newp) {
    		if (dist2old(newp-1) > th*dist2oldmax(0,0)) {
    			cutnew = newp;
    			haslonger = 1;
    		} else if (haslonger) {
    			break;
    		}
    	}
    	
    	// Cut old trajectory:
    	mat dist2cutnew = dists.col(cutnew);
    	
    	double mindist2cutnew = as_scalar(min(dist2cutnew));
    	cout << mindist2cutnew << endl;
    
    	double cutold = as_scalar(find(dist2cutnew == mindist2cutnew, 1, "first")) + 1;
    	
    	
    	traj1 = evalTraj.rows(0,cutold-1);
    	traj2 = corrTraj.rows(cutnew-1, corrTraj.n_rows -1);
    	
    
    }