Loading...
Searching...
No Matches
DFTServer.h
Go to the documentation of this file.
//# DFTServer.h: This class contains methods for doing n-D slow Fourier transforms
//# Copyright (C) 1994,1995,1996,1999,2000,2001,2003
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef SCIMATH_DFTSERVER_H
#define SCIMATH_DFTSERVER_H
#include <casacore/casa/aips.h>
#include <casacore/casa/BasicMath/Math.h>
#include <casacore/casa/Exceptions/Error.h>
#include <casacore/casa/Arrays/Array.h>
#include <casacore/casa/Arrays/ArrayMath.h>
#include <casacore/casa/Arrays/ArrayIter.h>
#include <casacore/casa/IO/ArrayIO.h>
#include <casacore/casa/BasicSL/Constants.h>
#include <casacore/casa/math.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
template<class T> class Matrix;
// <summary>
// Error class for <linkto class=DFTServer>DFTServer</linkto> class
// </summary>
// <synopsis>
// Error class for <linkto class=DFTServer>DFTServer</linkto> class.
// </synopsis>
class DFTError: public AipsError
{
public:
DFTError(): AipsError("DFTError") {}
DFTError(const Char *m) : AipsError(m) {}
DFTError(const String &m) : AipsError(m) {}
virtual ~DFTError() noexcept {}
};
// <summary>
// Class containing methods for doing n-D slow Fourier transforms
// </summary>
// <synopsis>
// The DFTServer class contains methods for doing n-dimensional
// Slow Fourier Transforms. (In practice, the maximum dimension is 3).
//
// </synopsis>
template<class T>
class DFTServer
{
public:
// default constructor
DFTServer();
// copy constructor
DFTServer(const DFTServer<T> &);
// Other constructors
// <group>
DFTServer(Array<T> &, Array<T> &);
DFTServer(int, int, int);
DFTServer(IPosition &, IPosition &);
// </group>
// destructor
~DFTServer();
// assignment
DFTServer<T> &operator=(const DFTServer<T> &);
// n-d real <src> <-> </src> complex dft
void rcdft(Array<T> &, Array<T> &);
// n-d complex <src> <-> </src> real dft
void crdft(Array<T> &, Array<T> &);
// n-d complex <src> <-> </src> complex dft
void cxdft(Array<T> &, Array<T> &, int);
// display only the real component of the data
void showReal(Array<T> &);
// display both the real and the imaginary components of the data
void showComplex(Array<T> &);
private:
// dimension of the both input and output data
int dimension;
// number of time data points
int numTime;
// number of frequency data points
int numFreq;
// set to 1 (true) if a crfft is done
int crFlag;
// does a complex to complex DFT
void c2c(Matrix<T> &, Matrix<T> &, int);
// turn a general array into a matrix
Matrix<T> getMatrix(Array<T> &);
};
} //# NAMESPACE CASACORE - END
#ifndef CASACORE_NO_AUTO_TEMPLATES
#include <casacore/scimath/Mathematics/DFTServer.tcc>
#endif //# CASACORE_NO_AUTO_TEMPLATES
#endif //DFT_SERVER
casacore::AipsError::AipsError
AipsError(const Char *str, Category c=GENERAL)
Creates an AipsError and initializes the error message from the parameter.
casacore::Array
Definition Array.h:155
casacore::DFTError::DFTError
DFTError()
Definition DFTServer.h:55
casacore::DFTError::DFTError
DFTError(const String &m)
Definition DFTServer.h:57
casacore::DFTError::DFTError
DFTError(const Char *m)
Definition DFTServer.h:56
casacore::DFTError::~DFTError
virtual ~DFTError() noexcept
Definition DFTServer.h:59
casacore::DFTServer::crFlag
int crFlag
set to 1 (true) if a crfft is done
Definition DFTServer.h:121
casacore::DFTServer::DFTServer
DFTServer()
default constructor
casacore::DFTServer::~DFTServer
~DFTServer()
destructor
casacore::DFTServer::showComplex
void showComplex(Array< T > &)
display both the real and the imaginary components of the data
casacore::DFTServer::crdft
void crdft(Array< T > &, Array< T > &)
n-d complex <-> real dft
casacore::DFTServer::numFreq
int numFreq
number of frequency data points
Definition DFTServer.h:118
casacore::DFTServer::rcdft
void rcdft(Array< T > &, Array< T > &)
n-d real <-> complex dft
casacore::DFTServer::DFTServer
DFTServer(Array< T > &, Array< T > &)
Other constructors.
casacore::DFTServer::c2c
void c2c(Matrix< T > &, Matrix< T > &, int)
does a complex to complex DFT
casacore::DFTServer::showReal
void showReal(Array< T > &)
display only the real component of the data
casacore::DFTServer::DFTServer
DFTServer(int, int, int)
casacore::DFTServer::dimension
int dimension
dimension of the both input and output data
Definition DFTServer.h:112
casacore::DFTServer::cxdft
void cxdft(Array< T > &, Array< T > &, int)
n-d complex <-> complex dft
casacore::DFTServer::numTime
int numTime
number of time data points
Definition DFTServer.h:115
casacore::DFTServer::DFTServer
DFTServer(IPosition &, IPosition &)
casacore::DFTServer::getMatrix
Matrix< T > getMatrix(Array< T > &)
turn a general array into a matrix
casacore::DFTServer::operator=
DFTServer< T > & operator=(const DFTServer< T > &)
assignment
casacore::DFTServer::DFTServer
DFTServer(const DFTServer< T > &)
copy constructor
casacore::IPosition
Definition IPosition.h:117
casacore::Matrix
Definition Matrix.h:87
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::Char
char Char
Definition aipstype.h:44