⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stability_th_cov.c

📁 这个代码是tcl程序
💻 C
字号:
#include<stdio.h>#include<stdlib.h>#include<math.h>#define max_samples 10000double cwnd[max_samples];int sample_num;#define resolution 1  /*number of samples per second*/#define interval_num 6int interval_duration[interval_num] = {1, 5, 10, 20, 40, 80}; /*unit: seoond*/double flow_c2[interval_num];double calculate_mean_within_interval(double* cwnd, int start, int num){	double mean;	int i;		mean = 0;	for(i=start;i<start+num;i++){		mean += cwnd[i];	}	mean = mean/num;	return mean;}double calculate_c2_per_flow_for_one_interval(double* cwnd, int total_num, int interval){	double dd, mean, second_moment, c2;	int num, i;	mean = 0;	second_moment = 0;	num = 0;	for(i=0;i<total_num;i=i+interval){		if ((i+interval)<total_num) {			dd = calculate_mean_within_interval(cwnd, i, interval);		}else if ((total_num-i)>10) { /*less than 10 samples, then drop it*/			dd = calculate_mean_within_interval(cwnd, i, total_num-i);		}		else			break;		mean += dd;		second_moment += dd*dd;		num++;	}	mean = mean/num;	second_moment = second_moment/num;	c2 = sqrt(second_moment-mean*mean)/mean;	return c2;}void calculate_c2_per_flow_for_all_intervals(double* cwnd, int total_num){	int i;	for(i=0;i<interval_num;i++){		flow_c2[i] += calculate_c2_per_flow_for_one_interval(cwnd, total_num, interval_duration[i]*resolution);	}}void read_file(char* name, double* cwnd){   char line[1024];   float cwnd_time, cwnd_value;   int i;   FILE *file;     file = fopen(name, "rt");     if (file==0){       printf("No file: %s\n", name);       exit(-1);     }     sample_num = 0;     while(!feof(file))     {       if (fgets(line, sizeof(line), file)==0)         break;       if (sscanf(line, "%f %f", &cwnd_time, &cwnd_value)==0)         break;	if(cwnd_time<200)		continue;       cwnd[sample_num] = cwnd_value;       if (sample_num > max_samples)        {	  printf("Please increase max_samples\n");	  exit(-1);       }       sample_num++;     }     fclose(file);}void run(){	char name[128];	int i;		for(i=0;i<interval_num;i++)		flow_c2[i] = 0;	for(i=0;i<4;i++){		sprintf(name, "th_%i.out", i);		read_file(name, cwnd);			calculate_c2_per_flow_for_all_intervals(cwnd, sample_num);	}	for(i=0;i<interval_num;i++){		flow_c2[i] = flow_c2[i]/4;		printf("%i %f\n", (i+1), flow_c2[i]);	}}int main(){	run();}	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -