public ArrayList<Double> IDWT(ArrayList<Double> _dwt) {
        ArrayList<Double> _temp = new ArrayList<Double>(_dwt.size());
        //Initialize _temp
        _temp = (ArrayList<Double>) _dwt.clone();
        for (int j = 2; j <= _dwt.size(); j = j * 2) {
            for (int i = 0; i < j / 2; i += 1) {
                double _pre = _dwt.get(i) + _dwt.get(j / 2 + i);
                double _late = _dwt.get(i) - _dwt.get(j / 2 + i);
                _temp.set(i * 2, _pre);
                _temp.set(i * 2 + 1, _late);
            }
            _dwt = (ArrayList<Double>) _temp.clone();
        }

        return _dwt;
    }