java 数据处理_[java] 数据处理

importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.text.SimpleDateFormat;importjava.util.Date;importorg.apache.commons.math3.fitting.PolynomialCurveFitter;importorg.apache.commons.math3.fitting.WeightedObservedPoints;public classpredict_temperature

{private static String[] observed_data(double flag, BufferedReader reader) throwsException

{

String line= null;

String[] i_want= new String[4];if(flag > 0)

{double tmp = 1000;

System.out.println(flag);while((line=reader.readLine())!=null)

{

String item[]= line.split(",");double value = Double.parseDouble(item[2]);if(value <=tmp)

tmp=value;else{

i_want[0] = item[0];

i_want[1] = item[4].replace("\"", "");break;

}

}while((line=reader.readLine())!=null)

{

String item[]= line.split(",");double value = Double.parseDouble(item[2]);if(value >=tmp)

tmp=value;else

break;

}while((line=reader.readLine())!=null)

{

String item[]= line.split(",");double value = Double.parseDouble(item[2]);if(value <=tmp)

tmp=value;else{

i_want[2] = item[0];

i_want[3] = item[4].replace("\"", "");break;

}

}

}else{double tmp = -1000;while((line=reader.readLine())!=null)

{

String item[]= line.split(",");double value = Double.parseDouble(item[2]);if(value >=tmp)

tmp=value;else{

i_want[0] = item[0];

i_want[1] = item[4].replace("\"", "");break;

}

}while((line=reader.readLine())!=null)

{

String item[]= line.split(",");double value = Double.parseDouble(item[2]);if(value <=tmp)

tmp=value;else

break;

}while((line=reader.readLine())!=null)

{

String item[]= line.split(",");double value = Double.parseDouble(item[2]);if(value >=tmp)

tmp=value;else{

i_want[2] = item[0];

i_want[3] = item[4].replace("\"", "");break;

}

}

}returni_want;

}public static void main(String[] args) throwsException

{

WeightedObservedPoints points= newWeightedObservedPoints();

String input_time= args[1] + " " + args[2];

File file= new File(args[0]);double time_diff = 0;

BufferedReader reader= new BufferedReader(newFileReader(file));

reader.readLine();

reader.mark((int)file.length());/*计算周期*/

double compare_item1 = Double.parseDouble(reader.readLine().split(",")[2]);double compare_item2 = Double.parseDouble(reader.readLine().split(",")[2]);

String[] cycle_result= new String[4];

cycle_result= observed_data(compare_item1 -compare_item2, reader);int start_num = Integer.parseInt(cycle_result[0]);int end_num = Integer.parseInt(cycle_result[2]);

SimpleDateFormat tmp_day= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date start_now= tmp_day.parse(cycle_result[1]);

Date end_now= tmp_day.parse(cycle_result[3]);/*计算周期*/

int cycle = end_num -start_num;

reader.reset();

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

SimpleDateFormat input_time_format= new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

Date input_time_=input_time_format.parse(input_time);

Date start_time= null;int i = 0;

String line= null;

String time= null;while((line=reader.readLine())!=null)

{

String item[]= line.split(",");

time= item[4];double value = Double.parseDouble(item[2]);

time= time.replace("\"", "");

Date now=sdf.parse(time);if(i == 0)

start_time=now;double offset = (now.getTime() -start_time.getTime());

points.add(offset, value);

time_diff= (input_time_.getTime() - start_time.getTime()) % (end_now.getTime() -start_now.getTime());if(i++ >cycle)break;

}

PolynomialCurveFitter fitter= PolynomialCurveFitter.create(2);double[] result =fitter.fit(points.toList());double result_time = result[2] * time_diff * time_diff + result[1]* time_diff + result[0];

System.out.println(result_time);

reader.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值