-
Matthew Webster authoredMatthew Webster authored
AutoCorrEstimator.h 2.64 KiB
/* AutoCorrEstimator.h
Mark Woolrich, FMRIB Image Analysis Group
Copyright (C) 1999-2000 University of Oxford */
/* CCOPYRIGHT */
#if !defined(__AutoCorrEstimator_h)
#define __AutoCorrEstimator_h
#include <iostream>
#include <fstream>
#define WANT_STREAM
#define WANT_MATH
#include "miscmaths/miscmaths.h"
#include "newimage/newimageall.h"
using namespace NEWMAT;
using namespace MISCMATHS;
using namespace NEWIMAGE;
namespace FILM {
class AutoCorrEstimator
{
public:
AutoCorrEstimator(const Matrix& pxdata) :
sizeTS(pxdata.Nrows()),
numTS(pxdata.Ncols()),
xdata(pxdata),
acEst(pxdata.Nrows(), pxdata.Ncols()),
vrow(),
xrow(),
dummy(),
realifft(),
dm_mn(),
zeropad(0)
{
zeropad = MISCMATHS::nextpow2(pxdata.Nrows());
vrow.ReSize(zeropad);
xrow.ReSize(zeropad);
dummy.ReSize(zeropad);
realifft.ReSize(zeropad);
countLargeE.ReSize(zeropad);
countLargeE = 0;
acEst = 0;
acEst.Row(1) = 1;
}
void calcRaw(int lag = 0);
void spatiallySmooth(const string& usanfname, const ColumnVector& epivol, int masksize, const string& epifname, int usanthresh, int lag=0);
void applyConstraints();
void filter(const ColumnVector& filterFFT);
Matrix fitAutoRegressiveModel();
void pava();
//void preWhiten(VolumeSeries& in, VolumeSeries& ret);
void preWhiten(ColumnVector& in, ColumnVector& ret, int i, Matrix& dmret, bool highfreqremovalonly=false);
void setDesignMatrix(const Matrix& dm);
int establishUsanThresh(const ColumnVector& epivol);
void getMeanEstimate(ColumnVector& ret);
Matrix& getEstimates() { return acEst; }
Matrix& getE() { return E; }
ColumnVector& getCountLargeE(){ return countLargeE; }
int getZeroPad() { return zeropad; }
void tukey(int M);
void multitaper(int M);
int pacf(const ColumnVector& x, int minorder, int maxorder, ColumnVector& betas);
volume<float> mask;
private:
const int sizeTS;
const int numTS;
AutoCorrEstimator();
const AutoCorrEstimator& operator=(AutoCorrEstimator&);
AutoCorrEstimator(AutoCorrEstimator&);
void getSlepians(int M, int sizeTS, Matrix& slepians);
const Matrix& xdata;
Matrix acEst;
Matrix E;
ColumnVector countLargeE;
Matrix dminFFTReal;
Matrix dminFFTImag;
ColumnVector vrow;
ColumnVector xrow;
ColumnVector dm_fft_real, dm_fft_imag;
ColumnVector x_fft_real, ac_fft_real;
ColumnVector x_fft_im, ac_fft_im;
ColumnVector dummy;
ColumnVector realifft;
ColumnVector dm_mn;
int zeropad;
};
}
#endif