Beispiel #1
0
bool getentboundingbox(extentity &e, ivec &o, ivec &r)
{
    switch(e.type)
    {
        case ET_EMPTY:
            return false;
        case ET_MAPMODEL:
        {
            model *m = loadmodel(NULL, e.attr[1]);
            if(m)
            {
                vec center, radius;
                m->boundbox(center, radius);
                rotatebb(center, radius, e.attr[0]);

                o = e.o;
                o.add(center);
                r = radius;
                r.add(1);
                o.sub(r);
                r.mul(2);
                break;
            }
        }
        // invisible mapmodels use entselradius
        default:
            o = e.o;
            o.sub(entselradius);
            r.x = r.y = r.z = entselradius*2;
            break;
    }
    return true;
}
Beispiel #2
0
std::complex<double> operator*(const ivec &a, const cvec &b)
{
  it_assert_debug(a.size() == b.size(), "operator*(): sizes does not match");
  std::complex<double> temp = 0;
  for (int i = 0;i < a.size();i++) {temp += (double)a(i) * b(i);}
  return temp;
}
Beispiel #3
0
bool getentboundingbox(extentity &e, ivec &o, ivec &r)
{
    switch(e.type)
    {
        case ET_EMPTY:
            return false;
        case ET_MAPMODEL:
        {
            LogicEntityPtr entity = LogicSystem::getLogicEntity(e); // INTENSITY
            model *m = entity.get() ? entity->getModel() : NULL; // INTENSITY
            if(m)
            {
                vec center, radius;
                m->boundbox(0, center, radius, entity.get()); // INTENSITY: entity
                rotatebb(center, radius, e.attr1);
                o = e.o;
                o.add(center);
                r = radius;
                r.add(1);
                o.sub(r);
                r.mul(2);
                break;
            }
        }
        // invisible mapmodels use entselradius
        default:
            o = e.o;
            o.sub(GETIV(entselradius));
            r.x = r.y = r.z = GETIV(entselradius)*2;
            break;
    }
    return true;
}
Beispiel #4
0
cvec operator+(const ivec &a, const cvec &b)
{
  it_assert_debug(a.size() == b.size(), "operator+(): sizes does not match");
  cvec temp = b;
  for (int i = 0;i < a.size();i++) {temp(i) += (double)a(i);}
  return temp;
}
static
void assert_ivec(const ivec &expected, const ivec &actual)
{
  ASSERT_EQ(expected.length(), actual.length());
  for (int n = 0; n < expected.length(); ++n)
  {
    ASSERT_EQ(expected[n], actual[n]);
  }
}
Beispiel #6
0
cvec operator+(const std::complex<double> &s, const ivec &v)
{
  it_assert_debug(v.size() > 0, "operator+(): Vector of zero length");

  cvec temp(v.size());
  for (int i = 0;i < v.size();i++) {
    temp(i) = s + std::complex<double>(v(i));
  }
  return temp;
}
Beispiel #7
0
vec operator/(const ivec &v, const double &s)
{
  it_assert_debug(v.size() > 0, "operator/(): Vector of zero length");

  vec temp(v.size());
  for (int i = 0;i < v.size();i++) {
    temp(i) = double(v(i)) / s;
  }
  return temp;
}
Beispiel #8
0
	void r_search(Node *root, const interval<T>& i, ivec& vec, int mode) {
		if (root == NULL) return;

		if (mode == OVERLAP && root->m_interval->overlaps(i)) vec.push_back(*(root->m_interval));
		if (mode == CONTAIN && root->m_interval->contains(i)) vec.push_back(*(root->m_interval));
		if (mode == CONTAINED && i.contains(*(root->m_interval))) vec.push_back(*(root->m_interval));

		if (root->left != NULL && i.overlaps(root->left->min, root->left->max))
			r_search(root->left, i, vec, mode);
		if (root->right != NULL && i.overlaps(root->right->min, root->right->max))
			r_search(root->right, i, vec, mode);
	}
Beispiel #9
0
void ClassifierMLP::Train(std::vector< fvec > samples, ivec labels)
{
	u32 sampleCnt = samples.size();
	if(!sampleCnt) return;
	DEL(mlp);
	dim = samples[0].size();

	CvMat *layers;
//	if(neuronCount == 3) neuronCount = 2; // don't ask me why but 3 neurons mess up everything...

	if(!layerCount || neuronCount < 2)
	{
		layers = cvCreateMat(2,1,CV_32SC1);
		cvSet1D(layers, 0, cvScalar(dim));
		cvSet1D(layers, 1, cvScalar(1));
	}
	else
	{
		layers = cvCreateMat(2+layerCount,1,CV_32SC1);
		cvSet1D(layers, 0, cvScalar(dim));
		cvSet1D(layers, layerCount+1, cvScalar(1));
		FOR(i, layerCount) cvSet1D(layers, i+1, cvScalar(neuronCount));
	}

	u32 *perm = randPerm(sampleCnt);

	CvMat *trainSamples = cvCreateMat(sampleCnt, dim, CV_32FC1);
	CvMat *trainLabels = cvCreateMat(labels.size(), 1, CV_32FC1);
	CvMat *sampleWeights = cvCreateMat(samples.size(), 1, CV_32FC1);
	FOR(i, sampleCnt)
	{
		FOR(d, dim) cvSetReal2D(trainSamples, i, d, samples[perm[i]][d]);
		cvSet1D(trainLabels, i, cvScalar(labels[perm[i]]));
		cvSet1D(sampleWeights, i, cvScalar(1));
	}
Beispiel #10
0
void cofdm_map::set_data(ivec x)
{
cvec qv;
bvec ce;
int K = x.length();
int i;

	ce.set_length(K); ce.ones();
	#if (DEBUG_LEVEL == 3)
	cout << "***** cofdm_map::set_data *****" << endl;	
	cout << "K=" << K << endl;
	cout << "ce=" << ce << endl;
	cout << "x=" << x << endl;
	cout << "data_carriers=" << data_carriers << endl;
	#endif

	if( K == data_carriers.length() ) {
		qv = qammod.process(ce,x);
		#if (DEBUG_LEVEL == 3)
		cout << "qv=" << qv << endl;
		#endif
		for (i=0; i<K; i++) {
			y0(data_carriers(i))=qv(i);
		}
	}
	else {
		throw sci_exception("cofdm_map::set_data - x.size() <> data_carriers.size()=", data_carriers.length());
	}

	#if (DEBUG_LEVEL == 3)
	cout << "y0(piltos)  y0(zeros) migh have rubbish" << endl;
	cout << "y0=" << y0 << endl;
	cout << "+++++ cofdm_map::set_data +++++" << endl;	
	#endif
}
Beispiel #11
0
Datei: tsp.cpp Projekt: sisu/stsp
ivec TSP(const ivec& purchases)
{
	if (purchases.size()<2) return ivec(purchases);
	ivec cur = purchases;
	ivec best = cur;
	double bdist = pathCost(cur);
	double cdist = bdist;
	for(double t=10; t>.1; t*=.999) {
		size_t a = rand()%(cur.size()-1);
		size_t b = rand()%(cur.size()-1);
		if (b>=a) ++b;
		else swap(a,b);

		int ca=cur[a], cb=cur[b];
		double da = a ? itemDist[cur[a-1]][cb] -  itemDist[cur[a-1]][ca] : startDist[cb] - startDist[ca];
		double db = b<cur.size()-1 ? itemDist[ca][cur[b+1]] - itemDist[cb][cur[b+1]] : endDist[ca] - endDist[cb];
		double d = da+db;
		if (d<0 || randf()<exp(-d/t)) {
			reverse(cur.begin()+a,cur.begin()+b+1);
			cdist = pathCost(cur);
			if (cdist < bdist) {
				best = cur;
				bdist = cdist;
			}
		}
	}
	return best;
}
Beispiel #12
0
int bpsk_sym_err(bvec bv_src, ivec iv_dem) {
	int err = 0;
	for(int i=0; i<iv_dem.size(); i++) {
		if(bv_src(i)!=iv_dem(i))
			err++;
	}
	return err;
}
Beispiel #13
0
double expectedTotalCost(const ivec& path)
{
    double r=0;
    for(size_t i=1; i<path.size(); ++i) {
//		r += dist[path[i-1]][path[i]];
        int a = path[i-1], b = path[i];
        int n = lower_bound(conn[a].begin(),conn[a].end(),b)-conn[a].begin();
        assert(conn[a][n]==b);
        r += edgeDist[a][n];
//		if (final) cout<<"lol "<<a<<' '<<b<<' '<<n<<' '<<edgeDist[a][n]<<'\n';
    }
    if (final) cout<<path<<'\n'<<"length cost "<<r<<'\n';
    r *= LENGTH_FACTOR;

    double rr=0;

    vector<double> pdist;
    for(size_t k=0; k<samples.size(); ++k) {
        vector<int>& v = samples[k];
        int n = v.size();
        pdist.resize(n);
        for(int i=0; i<n; ++i) {
            int a = v[i];
            double d=1e100;
            for(size_t j=0; j<path.size(); ++j)
                d = min(d, dist[a][path[j]]);
            pdist[i] = d;
//			if (final) cout<<"pdist "<<k<<' '<<a<<": "<<d<<'\n';
        }

        for(int i=0; i<n; ++i)
            for(int j=0; j<i; ++j) {
                int x=v[i], y=v[j];
//				cout<<"asdasd "<<tsps[a].dists<<'\n';
                tsps[k].dists[i][j] = tsps[k].dists[j][i] = min(dist[x][y], pdist[i]+pdist[j]);
            }

        double cr = tsps[k].calc();
        if (robustOpt) rr = max(rr, cr);
        else rr += probs[k] * cr;

        if (final) cout<<"tsp cost "<<k<<": "<<cr<<'\n';
    }
    return r + rr;
}
Beispiel #14
0
void gfx::set(int qvalue, const ivec &invalues)
{
  //    it_assert0(qvalue>0, "gfx::set, out of range");
  degree=invalues.length()-1;
  coeffs.set_size(degree+1);
  for (int i=0;i<degree+1;i++)
	coeffs[i].set(qvalue,invalues[i]);
  q=qvalue;
}
Beispiel #15
0
int qam_sym_err(bvec bv_src, ivec iv_dem) {
	int err = 0;
	for(int i=0, k=0; i<iv_dem.size(); i++, k+=2) {
		int src = (bv_src(k).value()<<1) + bv_src(k+1).value();
		if(src!=iv_dem(i))
			err++;
	}
	return err;
}
CFix operator*(const cfixvec &a, const ivec &b)
{
  it_assert_debug(a.size() == b.size(), "operator+(): sizes do not match");
  CFix temp(0);
  for (int i = 0; i < a.size(); i++) {
    temp += a(i) * b(i);
  }
  return temp;
}
cfixvec operator+(const cfixvec &a, const ivec &b)
{
  it_assert_debug(a.size() == b.size(), "operator+(): sizes do not match");
  cfixvec temp(a);
  for (int i = 0; i < a.size(); i++) {
    temp(i) += b(i);
  }
  return temp;
}
Beispiel #18
0
ivec max_to_all(const ivec &pt) {
  int in[5], out[5];
  for (int i=0; i<5; ++i) in[i] = out[i] = pt.in_direction(direction(i));
#ifdef HAVE_MPI
  MPI_Allreduce(&in,&out,5,MPI_INT,MPI_MAX,mycomm);
#endif
  ivec ptout(pt.dim);
  for (int i=0; i<5; ++i) ptout.set_direction(direction(i), out[i]);
  return ptout;
}
Beispiel #19
0
//gene_idx is for a single gene (otherwise it should be imat rather than ivec)
void extract_score(fvec &S, const fvec &score0, 
const ivec &gene_idx){
  
	int ns = gene_idx.size();//number of SNPs in a gene
		
	S = fvec(ns);
	for(int j = 0; j < ns; ++j){
		int J = gene_idx[j];
		S[j] = score0[J];
	}
	
}
Beispiel #20
0
void Triangles::setNodes(ivec n)
{
    int size = n.size();
    nodes = ivec(size);

    for (int i = 0; i < size; i++)
    {
        nodes[i] = n[i];
    }

    return;
}
Beispiel #21
0
cvec qam_mod::process(bvec ce, ivec x)
{
 cvec y;	
 int N;
 ivec iv;
 cvec cv;

	#if (DEBUG_LEVEL==3)
	cout << "***** qam_mod::process *****" << endl;	
	cout << "ce=" << ce << endl;
	cout << "x=" << x << endl;
	sleep(1000);
	#endif

	iv.set_length(1);
	cv.set_length(1);
	N=ce.length();
	y.set_length(N);
	if (x.length()!=N) {
		throw sci_exception("qam_mod::process - ce.size <> x.size", x.length() );
	}	
	for (int i=0; i<N; i++) {
		if ( bool(ce[i])) {
			iv[0]  = x[i];
			cv = modulate(iv);
			y0 = scale * cv[0];
		}
		y[i]=y0;
	}

	#if (DEBUG_LEVEL==3)
	cout << "y=" << y << endl;
	cout << "+++++ qam_mod::process +++++" << endl;	
	sleep(1000);
	#endif

	return (y);
}
Beispiel #22
0
void match_one (svec a, svec b, ivec& ret) {

  si_map A;
  svec inter;

  for(int i=0; i < a.size(); i++) A[a[i]] = i;

  std::sort(a.begin(), a.end());
  std::sort(b.begin(), b.end());

  std::set_intersection(a.begin(), a.end(), b.begin(), b.end(),
        std::back_inserter(inter));
  ret.resize(inter.size());
  for(int i=0; i < inter.size(); i++) ret[i] = A[inter[i]];
}
Beispiel #23
0
void match_both (svec a, svec b, ivec& ai, ivec& bi) {

  si_map A;
  si_map B;
  svec inter;

  int i = 0;

  for(i=0; i < a.size(); i++) A[a[i]] = i;
  for(i=0; i < b.size(); i++) B[b[i]] = i;

  std::sort(a.begin(), a.end());
  std::sort(b.begin(), b.end());

  std::set_intersection(a.begin(), a.end(), b.begin(), b.end(),
        std::back_inserter(inter));

  ai.resize(inter.size());
  for(i=0; i < inter.size(); i++) ai[i] = A[inter[i]];

  bi.resize(inter.size());
  for(i=0; i < inter.size(); i++) bi[i] = B[inter[i]];

}
Beispiel #24
0
bmat int2bin::process(bvec ce, ivec x)
{
 bmat y;	
 int N;

	#if (DEBUG_LEVEL==3)
	cout << "***** int2bin::process *****" << endl;	
	cout << "ce=" << ce << endl;
	cout << "x=" << x << endl;
	sleep(1000);
	#endif

	N=ce.length();
	if (x.length()!=N) { 
		throw sci_exception("int2bin::process - ce.size <> x.rows()", x.length() );
	}

	y.set_size(N,symbol_size);
	for (int i=0; i<N; i++) {
		if ( bool(ce[i])) {
			y0 = dec2bin(symbol_size, x[i]);
			if (! msb_first) {
				y0 = reverse(y0);
			}
		}
		y.set_row(i,y0);
	}

	#if (DEBUG_LEVEL==3)
	cout << "y=" << y << endl;
	cout << "+++++ int2bin::process +++++" << endl;	
	sleep(1000);
	#endif

	return (y);
}
Beispiel #25
0
lookup_t make_lookup(imat lookup_table, ivec cx) {
  lookup_t result;
  std::vector<int> tmp;
  int i=0;
  for(int j=0; j<cx.size(); ++j) {
    for(int c=0; c<cx[j]; ++c) {
      int tt = lookup_table(i,2);
      tmp.push_back(tt);
      ++i;
    }
    result.push_back(tmp);
    tmp.clear();
  }
  return result;
}
Beispiel #26
0
void extract_cov(fmat &Sigma, const fmat &V, 
const ivec &gene_idx){
	
	int ns = gene_idx.size();//number of SNPs in a gene
		
	Sigma = fmat(ns, fvec(ns));
	for(int j = 0; j < ns; ++j){
		int J = gene_idx[j];
		Sigma[j][j] = V[J][J];
		for(int k = j + 1; k < ns; ++k){
			Sigma[j][k] = V[J][gene_idx[k]];
			Sigma[k][j] = Sigma[j][k];
		}
	}
	
}
// --------------- Public functions -------------------------
void Rec_Syst_Conv_Code::set_generator_polynomials(const ivec &gen, int constraint_length)
{
  int j;
  gen_pol = gen;
  n = gen.size();
  K = constraint_length;
  m = K-1;
  rate = 1.0/n;
  
  gen_pol_rev.set_size(n,false);
  for (int i=0; i<n; i++) {
    gen_pol_rev(i) = reverse_int(K, gen_pol(i));
  }
  
  Nstates = (1<<m);
  state_trans.set_size(Nstates,2,false);
  rev_state_trans.set_size(Nstates,2,false);
  output_parity.set_size(Nstates,2*(n-1),false);
  rev_output_parity.set_size(Nstates,2*(n-1),false);
  int s0, s1, s_prim;
  ivec p0, p1;
  for (s_prim=0; s_prim<Nstates; s_prim++) {
    s0 = calc_state_transition(s_prim,0,p0);
    state_trans(s_prim,0) = s0;
    rev_state_trans(s0,0) = s_prim;
    for (j=0; j<(n-1); j++) {
      output_parity(s_prim,2*j+0) = p0(j);
      rev_output_parity(s0,2*j+0) = p0(j);
    }
    
    s1 = calc_state_transition(s_prim,1,p1);
    state_trans(s_prim,1) = s1;
    rev_state_trans(s1,1) = s_prim;
    for (j=0; j<(n-1); j++) {
      output_parity(s_prim,2*j+1) = p1(j);
      rev_output_parity(s1,2*j+1) = p1(j);
    }
  }

  ln2 = log(2.0);

  //The default value of Lc is 1:
  Lc = 1.0;
}
Beispiel #28
0
void cofdm_sel::set_sel_carriers(ivec cindx)
{
	if( cindx.length() < NFFT ) {
		if (itpp::min(cindx) >= 0) {
			if (itpp::max(cindx) < NFFT) {
				sel_carriers = cindx;
			}
			else {
				throw sci_exception("cofdm_sel::set_sel_carriers - max(cindx) > NFFT=", NFFT);
			}
		}
		else {
			throw sci_exception("cofdm_sel::set_sel_carriers - min(cindx) <  0 ");
		}
	}
	else {
		throw sci_exception("cofdm_sel::set_sel_carriers - bad cindx.size() > NFFT=", NFFT);
	}
}
Beispiel #29
0
void heapSort(fvec &height, ivec &index, int tsize)
{
    int i = 0;
    float ftemp = 0.0;
    int itemp = 0;
    int size = index.size();

    if (tsize != height.size())
    {
        tsize = height.size();
    }
    else
        ;

    if (tsize != size)
    {
        cout << "\nfuck you\n" << flush;
    }
    else
        ;

    i = tsize;
    i /= 2;
    i -= 1;
    for (; i >= 0; i--)
    {
        siftDown(height, index, i, tsize);
    }

    i = tsize - 1;
    for (; i >= 1; i--)
    {
        ftemp = height[0];
        height[0] = height[i];
        height[i] = ftemp;

        itemp = index[0];
        index[0] = index[i];
        index[i] = itemp;

        siftDown(height, index, 0, i - 1);
    }
}
Beispiel #30
0
void cofdm_map::set_pilots_carriers(ivec pcindx)
{
	if( pcindx.length() < NFFT ) {
		if (itpp::min(pcindx) >= 0) {
			if (itpp::max(pcindx) < NFFT) {
				pilots_carriers = pcindx;
			}
			else {
				throw sci_exception("cofdm_map::set_pilots_carriers - max(pcindx) > NFFT=", NFFT);
			}
		}
		else {
			throw sci_exception("cofdm_map::set_pilots_carriers - min(dcindx) <  0 ");
		}
	}
	else {
		throw sci_exception("cofdm_map::set_pilots_carriers - bad pcindx.size() > NFFT=", NFFT);
	}	
}