public Vector<double> HaarDWT(Vector<double> signal, int n)
{
//Work just like wavedec but use only haar wavelet
// http://www.mathworks.com/help/wavelet/ref/wavedec.html
//lol
int decompSize = signal.Count();
double sqrt2 = Math.Sqrt(2);
Vector<double> outVec = Vector<double>.Build.Dense(decompSize);
Vector<double> signalTemp = signal;
for (int i = 0; i < n; i++)
{
decompSize /= 2;
for (int dataInd = 0; dataInd < decompSize; dataInd++)
{
outVec[dataInd] = (signalTemp[2 * dataInd] + signalTemp[2 * dataInd + 1]) / sqrt2;
outVec[decompSize + dataInd] = (signalTemp[2 * dataInd] - signalTemp[2 * dataInd + 1]) / sqrt2;
}
signalTemp = outVec.SubVector(0, decompSize);
}
return outVec;
}