Newer
Older
/* 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>
#include "newimage/newimageall.h"
using namespace NEWIMAGE;
AutoCorrEstimator(const Matrix& pxdata) :
sizeTS(pxdata.Nrows()),
numTS(pxdata.Ncols()),
acEst(pxdata.Nrows(), pxdata.Ncols()),
zeropad = MISCMATHS::nextpow2(pxdata.Nrows());
vrow.ReSize(zeropad);
xrow.ReSize(zeropad);
dummy.ReSize(zeropad);
realifft.ReSize(zeropad);
countLargeE.ReSize(zeropad);
countLargeE = 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 preWhiten(VolumeSeries& in, VolumeSeries& ret);
void preWhiten(ColumnVector& in, ColumnVector& ret, int i, Matrix& dmret, bool highfreqremovalonly=false);
int establishUsanThresh(const ColumnVector& epivol);
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;
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 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;