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

📄 timeseries.java

📁 这是个时间序列分段处理的程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   TimeSeries.java

package timeseries;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.Vector;
import util.Arrays;

// Referenced classes of package timeseries:
//            TimeSeriesPoint

public class TimeSeries
{

    private static final int ZERO_ARRAY[] = new int[0];
    private static final boolean DEFAULT_IS_TIME_1ST_COL = true;
    private static final char DEFAULT_DELIMITER = 44;
    private static final boolean DEFAULT_IS_LABELED = true;
    private final ArrayList labels;
    private final ArrayList timeReadings;
    private final ArrayList tsArray;

    TimeSeries()
    {
        labels = new ArrayList();
        timeReadings = new ArrayList();
        tsArray = new ArrayList();
    }

    public TimeSeries(int numOfDimensions)
    {
        this();
        labels.add("Time");
        for(int x = 0; x < numOfDimensions; x++)
            labels.add("" + x);

    }

    public TimeSeries(TimeSeries origTS)
    {
        labels = new ArrayList(origTS.labels);
        timeReadings = new ArrayList(origTS.timeReadings);
        tsArray = new ArrayList(origTS.tsArray);
    }

    public TimeSeries(String inputFile, boolean isFirstColTime)
    {
        this(inputFile, ZERO_ARRAY, isFirstColTime);
    }

    public TimeSeries(String inputFile, char delimiter)
    {
        this(inputFile, ZERO_ARRAY, true, true, delimiter);
    }

    public TimeSeries(String inputFile, boolean isFirstColTime, char delimiter)
    {
        this(inputFile, ZERO_ARRAY, isFirstColTime, true, delimiter);
    }

    public TimeSeries(String inputFile, boolean isFirstColTime, boolean isLabeled, char delimiter)
    {
        this(inputFile, ZERO_ARRAY, isFirstColTime, isLabeled, delimiter);
    }

    public TimeSeries(String inputFile, int colToInclude[], boolean isFirstColTime)
    {
        this(inputFile, colToInclude, isFirstColTime, true, ',');
    }

    public TimeSeries(String inputFile, int colToInclude[], boolean isFirstColTime, boolean isLabeled, char delimiter)
    {
        this();
        try
        {
            BufferedReader br = new BufferedReader(new FileReader(inputFile));
            String line = br.readLine();
            StringTokenizer st = new StringTokenizer(line, String.valueOf(delimiter));
            if(isLabeled)
            {
                for(int currentCol = 0; st.hasMoreTokens(); currentCol++)
                {
                    String currentToken = st.nextToken();
                    if(colToInclude.length == 0 || Arrays.contains(colToInclude, currentCol))
                        labels.add(currentToken);
                }

                if(labels.size() == 0)
                    throw new InternalError("ERROR:  The first row must contain label information, it is empty!");
                if(!isFirstColTime)
                    labels.add(0, "Time");
                else
                if(isFirstColTime && !((String)labels.get(0)).equalsIgnoreCase("Time"))
                    throw new InternalError("ERROR:  The time column (1st col) in a time series must be labeled as 'Time', '" + labels.get(0) + "' was found instead");
            } else
            {
                if(colToInclude == null || colToInclude.length == 0)
                {
                    labels.add("Time");
                    if(isFirstColTime)
                        st.nextToken();
                    int currentCol = 1;
                    for(; st.hasMoreTokens(); labels.add(new String("c" + currentCol++)))
                        st.nextToken();

                } else
                {
                    java.util.Arrays.sort(colToInclude);
                    labels.add("Time");
                    for(int c = 0; c < colToInclude.length; c++)
                        if(colToInclude[c] > 0)
                            labels.add(new String("c" + c));

                }
                br.close();
                br = new BufferedReader(new FileReader(inputFile));
            }
            do
            {
                if((line = br.readLine()) == null)
                    break;
                if(line.length() > 0)
                {
                    st = new StringTokenizer(line, ",");
                    ArrayList currentLineValues = new ArrayList();
                    for(int currentCol = 0; st.hasMoreTokens(); currentCol++)
                    {
                        String currentToken = st.nextToken();
                        if(colToInclude.length != 0 && !Arrays.contains(colToInclude, currentCol))
                            continue;
                        Double nextValue;
                        try
                        {
                            nextValue = Double.valueOf(currentToken);
                        }
                        catch(NumberFormatException e)
                        {
                            throw new InternalError("ERROR:  '" + currentToken + "' is not a valid number");
                        }
                        currentLineValues.add(nextValue);
                    }

                    if(isFirstColTime)
                        timeReadings.add(currentLineValues.get(0));
                    else
                        timeReadings.add(new Double(timeReadings.size()));
                    int firstMeasurement;
                    if(isFirstColTime)
                        firstMeasurement = 1;
                    else
                        firstMeasurement = 0;
                    TimeSeriesPoint readings = new TimeSeriesPoint(currentLineValues.subList(firstMeasurement, currentLineValues.size()));
                    tsArray.add(readings);
                }
            } while(true);
        }
        catch(FileNotFoundException e)
        {
            throw new InternalError("ERROR:  The file '" + inputFile + "' was not found.");
        }
        catch(IOException e)
        {
            throw new InternalError("ERROR:  Problem reading the file '" + inputFile + "'.");
        }
    }

    public void save(File outFile)
        throws IOException
    {
        PrintWriter out = new PrintWriter(new FileOutputStream(outFile));
        out.write(toString());
        out.flush();
        out.close();
    }

    public void clear()
    {
        labels.clear();
        timeReadings.clear();
        tsArray.clear();
    }

    public int size()
    {
        return timeReadings.size();
    }

    public int numOfPts()
    {
        return size();
    }

    public int numOfDimensions()
    {
        return labels.size() - 1;
    }

    public double getTimeAtNthPoint(int n)
    {
        return ((Double)timeReadings.get(n)).doubleValue();
    }

    public String getLabel(int index)
    {
        return (String)labels.get(index);
    }

    public String[] getLabelsArr()
    {
        String labelArr[] = new String[labels.size()];
        for(int x = 0; x < labels.size(); x++)
            labelArr[x] = (String)labels.get(x);

        return labelArr;
    }

    public ArrayList getLabels()
    {
        return labels;
    }

    public void setLabels(String newLabels[])
    {
        labels.clear();

⌨️ 快捷键说明

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