📄 stability_th_cov.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 + -