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

📄 movingaveragepredict.java

📁 /** * @author jakcy_wu(wujichun) * * 预测分析--本算法只适用于受周期变化或者波动影响的数据 * 权值移动平均算法 * 本期預測值=(前期值*權數)求和/n * *
💻 JAVA
字号:
package com.eastcom.canicula.SHM.futurePredictor.predictAlgorithms;

import java.text.DecimalFormat;

/**
 * @author jakcy_wu(wujichun)
 *
 * 预测分析--本算法只适用于受周期变化或者波动影响的数据
 * 权值移动平均算法
 * 本期預測值=(前期值*權數)求和/n
 * 
 * 默认权值为{1,1,1},取最近3次的平均
 * 注意权值和必须=权值集合.length 
 */
public class movingAveragePredict  extends predictBase {
	private double[] historyArrayData;
	private double[] weight={1,1,1};
	
	public movingAveragePredict(double[] myHistoryArrayData){
		int len=myHistoryArrayData.length ;
		historyArrayData=new double[len];
		for(int i=0;i<len;i++) historyArrayData[i]=myHistoryArrayData[i];
	}
	
	public movingAveragePredict(double[] myHistoryArrayData,double[] myWeight){
		this(myHistoryArrayData);
		
		int xLength=myWeight.length ;
		weight=new double[xLength];
		for(int i=0;i<xLength;i++) weight[i]=myWeight[i];
	}
	
	public double[][] predict(){
		int len=historyArrayData.length +1;
		int xLen=weight.length ;
		
		if( xLen>len) return null;
		
		DecimalFormat def=new DecimalFormat(".00");
		
		double[][] result=new double[2][len];
		for(int i=0;i<len;i++) result[0][i]=i;
		
		for(int i=0;i<xLen;i++) result[1][i]=historyArrayData[i];
		
		for(int i=xLen;i<len;i++) {
			double temp=0;
			//取前n次权值和求平均
			for(int j=0;j<xLen;j++) temp+= historyArrayData[i-j-1]*weight[j];
			//格式化
			String abc=def.format(temp/xLen);
			result[1][i]=Double.parseDouble(abc );
		}			  
		return result;
	}
	
}

⌨️ 快捷键说明

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