Пример #1
0
void MainWindow::plot2(QCustomPlot *customPlot)
{
  QVector<double> x0(pts), y0(pts);

  update_w(w,1.0);
  double y_inc = 1.0; 
  for (int i=0; i<pts; ++i)   {
    x0[i] = (double)0.5*i/pts;
    y0[i] = y_inc*(w[i]);
  }
  order = get_order();
  ui->order->setText(QApplication::translate("MainWindow", std::to_string(order).c_str(), 0));
  ui->ripple->setText(QApplication::translate("MainWindow", std::to_string(ripple()).c_str(), 0));
  ui->fc->setText(QApplication::translate("MainWindow", std::to_string(fc()).c_str(), 0));
  
  customPlot->graph()->setData(x0, y0);
  customPlot->graph()->setLineStyle(QCPGraph::lsLine); //(QCPGraph::LineStyle)(rand()%5+1));
  customPlot->graph()->setScatterStyle(QCPScatterStyle::ssNone); // (QCP::ScatterStyle)(rand()%9+1));
  QPen graphPen;
  //  graphPen.setColor(QColor(rand()%245+10, rand()%245+10, rand()%245+10));
  //graphPen.setWidthF(rand()/(double)RAND_MAX*2+1);

  graph_counter++;
  graph_counter = graph_counter%9;
  graphPen.setColor(QColor(Qt::GlobalColor(5+graph_counter)));
  graphPen.setWidthF(2);
  customPlot->graph()->setPen(graphPen);
  customPlot->xAxis->setRange(0,0.5);
  customPlot->yAxis->setRange(-90,10);
  customPlot->legend->setVisible(true);
  //  customPlot->setInteraction(QCustomPlot::iSelectPlottables);
  customPlot->graph()->setName(QString(shape.c_str()));
  customPlot->replot();
}
Пример #2
0
void MainWindow::plot3(QCustomPlot *customPlot)
{
  QVector<double> x0(pts), y0(pts);

  update_w(w,1.0);
  double y_inc = 1.0; 
  for (int i=0; i<pts; ++i)   {
    x0[i] = (double)0.5*i/pts;
    y0[i] = y_inc*(w[i]);
  }

  customPlot->graph()->setData(x0, y0);
  customPlot->graph()->setLineStyle(QCPGraph::lsLine); 
  customPlot->graph()->setScatterStyle(QCPScatterStyle::ssNone); // (QCP::ScatterStyle)(rand()%9+1));
  QPen graphPen;
  graphPen.setColor(QColor(Qt::GlobalColor(5+graph_counter)));
  graphPen.setWidthF(2);
  customPlot->graph()->setPen(graphPen);
  customPlot->xAxis->setRange(0,0.5);
  customPlot->yAxis->setRange(-90,10);
  customPlot->legend->setVisible(true);
  //  customPlot->setInteraction(QCustomPlot::iSelectPlottables);
  customPlot->graph()->setName(QString(shape.c_str()));
  customPlot->replot();
}
Пример #3
0
int lb_writestr_all(char **buf, int size, struct LineBuffer* lb) {
	if(lb->eol == 0) return 0;
	int eol = last_eol(lb);
	int n = write_buf(*buf, size, lb->line, eol);
	*buf += n;
	lb->eol = n;   	// pretend this was the first one. so update clears it and looks for next.
	return update_w(lb, n);
}
Пример #4
0
int lb_writefd_all(int fd, struct LineBuffer* lb) {
	if(lb->eol == 0) return 0;
	int eol = last_eol(lb);
	int n = write(fd, lb->line, eol);
	if (n < 0) return errno;
	lb->eol = n;   	// pretend this was the first one. so update clears it and looks for next.
	return update_w(lb, n);
}
Пример #5
0
void logistic_regression::one_round(int label,Sparse_Vector& x) {

  update_w(x);
  //-----------------------预测p--------------------------------
  //x.poisson_filter();
  double p = w.dot_sum(x);
  
  update_other(x,p,label);

}
Пример #6
0
int multiuser_new::run_a()
{
        int tone,user,t_line,runs=0;
	FILE* fp;
	bool last_run=false;
        reset_data();
	//calc_ave_bits();
	//calc_ave_xtalk();
/*
	for (int user=0;user<lines;user++) {
		double max=0;
		int line=0;
		for (int xtalker=0;xtalker<lines;xtalker++) {
			if (xtalker==user)
				continue;
			if (ave_xtalk[user][xtalker] > max) {
				max = ave_xtalk[user][xtalker];
				line = xtalker;
			}
		}
		printf("Worst xtalker into line %d = line %d\n",user,line);
	}
*/
	//exit(0);
	//for (int user=0;user<lines;user++) {
	//	printf("rate target on line %d is %d\n",user,b_target[user]);
	//}
	do {
		iter_count++;
		reset_data();
		init_cost_matrix();
		//for (int user=0;user<lines;user++) {
		//	printf("w[%d] = %4.2lf\n",user,w[user]);
		//}
		while(1) {
			min_cost(&tone,&user);
			printf("Min tone/user was %d/%d\n",tone,user);
			//getchar();
			//if (tone == 115 && user == 1) {
			//	getchar();
			//}
			if(all_tones_full) {
				printf("All tones are full on iteration number %d\n",iter_count);
				break;
			}
			b[tone][user]++;        // add bit to min cos tone
			b_total[user]++;
			total_bits++;
			//printf("Added a bit to user %d tone %d\n",user,tone);
			//print_vector(cost[tone],"Costs on current tone");
			update_power(tone,user);        //update power on tone
			//print_vector(p[tone],"p on tone");
			//getchar();
			print_vector(b_total,"b_total");
			printf("total bits = %d\n",total_bits);
			print_vector(p_used,"p_used");
			if (!greedy) 
				update_wp();
			//print_vector(wp,"wp");
			//getchar();
			if (graph_loading)
				write_current_stats(tone,user);
			/*
			if (b[tone][user] == MAXBITSPERTONE) {
				F[tone][user]=1;
			}
			if (!rate_targets_off) {
				if (b_total[user] == b_target[user]) {
					freeze_user(user);
					printf("just froze user %d cos he got his target\n",user);
					printf("Power used by user %d when frozen = %lf\n",user,p_used[user]);
					init_cost_matrix();
					user_re_init[user]=true;
				}		
			}
			*/	
			/*for (int user=0;user<lines;user++) {
				if (user_frozen[user] == true && user_re_init[user] == false) {
					init_cost_matrix();	
					user_re_init[user]=true;
				}	
			}*/
			/*
			bool update=false;
			for (int user1=0;user1<lines;user1++) {
				if (wp[user1] > 1.1) {
					update=true;
					break;
				}
			}
			*/
			for (int user=0;user<lines;user++) {
				calc_delta_p(tone,user);   // update delta_p on all lines for this tone
				//cost[tone][user] = cf(tone,user);
			}
			//print_vector(_delta_p[tone][user],"Delta of adding another bit");
			for (int tone=0;tone<DMTCHANNELS;tone++) {
				for (int user=0;user<lines;user++) {
					cost[tone][user] = cf(tone,user);
				}
			}
			//print_vector(cost[tone],"New costs");
			//getchar();
		}
		for (int user=0;user<lines;user++) {
			printf("rate on line %d is %d\n",user,b_total[user]);
		}
		//getchar();
		calc_lost_bits();
		sort_lost_bits();
		print_lost_bits();
		if (0) {
			char tag[100];
			sprintf(tag,"iteration%d",iter_count);
			init_lines();
			calculate_snr();
			for (int user=0;user<lines;user++) {
				write_mw_stats(user,tag);
			}	
		}
		update_w();	
		//getchar();
	} while(!finished());
	if (all_rates_good()) {
		printf("All lines met their rate target\n");
	}
	else {
		double sum=0;
		for (int user=0;user<lines;user++) {
			sum+=pow(b_total[user]-b_target[user],2);
		}
		printf("Total distance from target = %lf\n",sqrt(sum));
	}
	//isb_optimise_p();
        init_lines();
        calculate_snr();
        set_loading_algo();
	printf("max lead = %6.4lf max lag = %6.4lf\n",max_lead,max_lag);
	if (graph_loading) {
		write_stats_totals();
	}
	return 0;
}
Пример #7
0
INT main(INT argc, CHAR *argv[]) {
/********** MAIN PROGRAM *********************************
 * Solve Laplace equation using Jacobi iteration method  *
        *
 *********************************************************/
      INT m = M_DEFAULT, mp, k, p, below, above;
      long iter=MAXSTEPS;
      REAL TOL=EPS_DEFAULT, del, gdel,start,finish,mytime;
      CHAR line[80];
      REAL **v, **vt, **vnew;

      
      k = 0; 
      p= 1;
      if(k == 0) {
          fprintf(OUTPUT," Number of args in command line, argc :\n");
          
          fprintf(OUTPUT," argc = %d :\n", argc);
          if (argc >= 2) 
              fprintf(OUTPUT," arg[1]= %s :\n", argv[1]);
          if (argc >= 3) 
              fprintf(OUTPUT," arg[2]= %s :\n", argv[2]);
          
          if (argc >1){
              m=atoi(argv[1]);
              m=MAX_M;
          }  
          
          if (argc >2 ) {
              TOL= atof(argv[2]);
              TOL=EPS;
          }
          
          fprintf(OUTPUT,"Size of interior points, m :\n");
          fprintf(OUTPUT,"m = %d\n",m);
          fprintf(OUTPUT,"Numerical accuracy, eps :\n");
          fprintf(OUTPUT,"eps = %f\n",TOL);

          fprintf(OUTPUT,"Number of processes, p :\n");
          fprintf(OUTPUT,"p = %d\n",p);
          
          start=-time(0);
      }
      
      mp = m/p;
      
      v  = allocate_2D(m, mp);  /* allocate mem for 2D array */
      vt = allocate_2D(mp, m);
      vnew = allocate_2D(mp, m);

      gdel = 1.0;
      iter = 0;

      bc(m, mp, v, k, p); /* initialize and define B.C. for v */
      transpose(m, mp, v, vt);  /* solve for vt */
                                /* driven by need of update_bc_2 */

      replicate(mp, m, vt, vnew);            /* vnew = vt */
      
      REAL ro = 1.0 - pow (PI / (2 * (m + 1)), 2);
      REAL w = 0;
      while (gdel > TOL) {  /* iterate until error below threshold */
        iter++;             /* increment iteration counter */

        if(iter > MAXSTEPS) {
          fprintf(OUTPUT,"Iteration terminated (exceeds %6d", MAXSTEPS);
          fprintf(OUTPUT," )\n");
          return (0);       /* nonconvergent solution */
        }
/* compute new solution according to the Jacobi scheme */
        /*update_jacobi(mp, m, vt, vnew, &del);  [> compute new vt <]*/
        update_sor(mp, m, vt, vnew, &del, w);
        update_w(&w, ro);
            if (del > gdel)
                gdel = del;
          if( k == 0) {
            fprintf(OUTPUT,"iter,del,gdel: %6d, %lf %lf\n",iter,del,gdel);
        }
        update_bc_2( mp, m, vt, k, below, above); /* update b.c. */
      }
      if (k == 0) {
	  finish=time(0);
        mytime=start+finish;
        fprintf(OUTPUT,"Stopped at iteration %d\n",iter);
        fprintf(OUTPUT,"The maximum error = %f\n",gdel);
        fprintf(OUTPUT,"Time = %f\n",mytime);

      }
      if (FILE_OUT) {
	  /* write v to file for use in MATLAB plots */
	  transpose(mp, m, vt, v);
	  write_file( m, mp, v, k, p );
	  
      }

      free(v); free(vt); free(vnew); /* release allocated arrays  */
      
      return (0);
}
Пример #8
0
int lb_writestr(char **buf, int size, struct LineBuffer* lb) {
	if(lb->eol == 0) return 0;
	int n = write_buf(*buf, size, lb->line, lb->eol);
	*buf += n;
	return update_w(lb, n);
}
Пример #9
0
int lb_writefd(int fd, struct LineBuffer* lb) {
	if(lb->eol == 0) return 0;
	int n = write(fd, lb->line, lb->eol);
	if (n < 0) return errno;
	return update_w(lb, n);
}