#include #include "toimanager.h" #include "correl.h" #include "wienerdecor.h" extern "C" { #include "nrutil.h" } extern "C" void dtoeplz(double r[], double x[], double y[], int n); WienerDecorrelator::WienerDecorrelator(int n, int l) { nsamples = n; lcorr = l; doNotLookAt(); } void WienerDecorrelator::init() { declareInput("signal"); declareInput("probe"); declareOutput("signal"); declareOutput("noiseestim"); name="WienerDecorrelator"; setNeededHistory(nsamples+lcorr+1); lowExtra = lcorr; } void WienerDecorrelator::run() { int snb = getMinIn(); int sne = getMaxIn(); // cout << "Wiener " << snb << " - " << sne << endl; CorrelEstimator corr(lcorr, nsamples), autocorr(lcorr, nsamples); double* r = new double[2*lcorr]; // autocorr toeplitz matrix double* w = new double[lcorr+1]; // filter double* y = new double[lcorr+1]; // corr vector double* window = new double[lcorr]; uint_8* fwind = new uint_8[lcorr]; double* filter = new double[lcorr]; for (int i=0; i " << sn+nsamples << endl; for (int i=sn; i= snb+lcorr-1) { getData(1, sn-lcorr+1, lcorr, window, fwind); uint_8 flag = 0; double outSig = 0; for (int i=0; i