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

📄 movingaverageplugin.java

📁 一个纯java写的神经网络源代码
💻 JAVA
字号:
package org.joone.util;import org.joone.engine.*;import org.joone.util.CSVParser;/** <P>Changes the specified input serie data so that it becomes a moving average of * itself.  This plugin operates on specified serie/s of data in a vertical fashion.</P> * <BR> * <P>For example if the serie to be converted contained the following data * ....</P> * <BR>5<BR>15<BR>5<BR> <P> and the requested moving average was set at 2 then the * serie would become <BR>0<BR>10<BR>12.5<BR> <P> Any data prior to the moving * average spec is set at 0 as there is not enough data to calculate the actual * moving average.  The data is NOT * normalised.  To normalise the data use a {@link * org.joone.util#NormalizerConverterPlugIn NormalizerConverterPlugIn}.</P> * @author Julien Norman */public class MovingAveragePlugIn extends ConverterPlugIn {        static final long serialVersionUID = -5679399800426091523L;        private String AdvancedMovAvgSpec = new String("");        /**     * Default MovingAveragePlugIn constructor.     */    public MovingAveragePlugIn() {        super();    }        /**     * MovingAveragePlugIn constructor that allows specification of the Advanced Serie Selector     * and the Moving Average Specification.     */    public MovingAveragePlugIn(String newAdvSerieSel,String newMovAvgSpec) {        super();        setAdvancedMovAvgSpec(newMovAvgSpec);        setAdvancedSerieSelector(newAdvSerieSel);    }        /**     * Start the convertion to a moving average for the required serie.     */    protected boolean convert(int serie) {        boolean retValue = false;        int s = getInputVector().size();        int i;        double CurrentMovingAvgerage = 0;        double Sum = 0;        int MovingAverageSpec = 0;        int CurrentItem = 0;        CSVParser MovParse = new CSVParser(AdvancedMovAvgSpec,false);        int [] MovAvgArray = MovParse.parseInt();        int index = getSerieIndexNumber(serie);        Pattern currPE;                if ( index > -1 )  // If the serie was found in the spec list        {            if ( index < MovAvgArray.length )	// Check that we have an appropriate average.            {                MovingAverageSpec = MovAvgArray[index];            }        }        if ( MovingAverageSpec > 0 )  // If we have found a moving average spec for this serie then start to convert        {            if ( getInputVector().size() > MovingAverageSpec )	// Check that there is enough data            {                Sum = 0;                CurrentMovingAvgerage = 0;                // Loop through data starting at the end                for (i=getInputVector().size()-1;i>-1;i--) {                    currPE = (Pattern) getInputVector().elementAt(i); // Set current pattern                    if ( i<MovingAverageSpec-1 ) {                        // Set any data less than MovingAverageSpec  to 0                        CurrentMovingAvgerage = 0;                    }                    else {                        // Sum all data and average                        Sum = 0;                        for (int j=i;j>i-MovingAverageSpec;j--)                            Sum = Sum + getValuePoint(j, serie);                        CurrentMovingAvgerage = Sum / MovingAverageSpec;                    }                    currPE.setValue(serie, CurrentMovingAvgerage );                    retValue = true;                }            }        }        //double vMax = getValuePoint(0, serie);        //currPE = (Pattern) getInputVector().elementAt(i);        //currPE.setValue(serie, v);        return retValue;    }    /**     * Gets the Moving Average value/s requested by the user.     * @return double The moving average .     */    public String getAdvancedMovAvgSpec() {        return(AdvancedMovAvgSpec);    }        /**     * Sets the Moving Average value/s requested by the user.  It must be a comma delimeted list of moving average values.     * E.g 10,20,12 would request a moving average 10 in the first specified serie as in     * the Advanced Serie Selector then a moving average of 20 on the second and a     * moving average of 12 on the third.     * @param newMovAvg double     */    public void setAdvancedMovAvgSpec(String newAdvancedMovAvgSpec ) {        if ( AdvancedMovAvgSpec.compareTo(newAdvancedMovAvgSpec ) != 0 ) {            AdvancedMovAvgSpec = newAdvancedMovAvgSpec ;            this.fireDataChanged();        }    }        }

⌨️ 快捷键说明

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