X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=libctsim%2Ffilter.cpp;h=a0638b2a1b9538b313d22188f47246a26e7a32c6;hb=27a474e0622ebb7229fd5705552021f63d8f932d;hp=0f334b9177d3ae7c9816ecb539f5f7f728ecfea5;hpb=30e455abcd8cac05ce7afe43216ec9e26342e1cf;p=ctsim.git diff --git a/libctsim/filter.cpp b/libctsim/filter.cpp index 0f334b9..a0638b2 100644 --- a/libctsim/filter.cpp +++ b/libctsim/filter.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: filter.cpp,v 1.16 2000/07/11 10:32:44 kevin Exp $ +** $Id: filter.cpp,v 1.19 2000/07/20 11:17:31 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -30,6 +30,56 @@ int SignalFilter::N_INTEGRAL=500; //static member +// Filters +const char SignalFilter::FILTER_ABS_BANDLIMIT_STR[] = "abs_bandlimit"; +const char SignalFilter::FILTER_ABS_SINC_STR[] = "abs_sinc"; +const char SignalFilter::FILTER_ABS_COS_STR[] = "abs_cos"; +const char SignalFilter::FILTER_ABS_HAMMING_STR[] = "abs_hamming"; +const char SignalFilter::FILTER_SHEPP_STR[] = "shepp"; +const char SignalFilter::FILTER_BANDLIMIT_STR[] = "bandlimit"; +const char SignalFilter::FILTER_SINC_STR[] = "sinc"; +const char SignalFilter::FILTER_COS_STR[] = "cos"; +const char SignalFilter::FILTER_HAMMING_STR[] = "hamming"; +const char SignalFilter::FILTER_TRIANGLE_STR[] = "triangle"; + +const char SignalFilter::FILTER_ABS_BANDLIMIT_TITLE_STR[] = "Abs(w) * Bandlimit"; +const char SignalFilter::FILTER_ABS_SINC_TITLE_STR[] = "Abs(w) * Sinc"; +const char SignalFilter::FILTER_ABS_COS_TITLE_STR[] = "Abs(w) * Cos"; +const char SignalFilter::FILTER_ABS_HAMMING_TITLE_STR[] = "Abs(w) * Hamming"; +const char SignalFilter::FILTER_SHEPP_TITLE_STR[] = "Shepp"; +const char SignalFilter::FILTER_BANDLIMIT_TITLE_STR[] = "Bandlimit"; +const char SignalFilter::FILTER_SINC_TITLE_STR[] = "Sinc"; +const char SignalFilter::FILTER_COS_TITLE_STR[] = "Cos"; +const char SignalFilter::FILTER_HAMMING_TITLE_STR[] = "Hamming"; +const char SignalFilter::FILTER_TRIANGLE_TITLE_STR[] = "Triangle"; + +// Filter Methods +const char SignalFilter::FILTER_METHOD_CONVOLUTION_STR[] = "convolution"; +const char SignalFilter::FILTER_METHOD_FOURIER_STR[] = "fourier"; +const char SignalFilter::FILTER_METHOD_FOURIER_TABLE_STR[] = "fourier_table"; +const char SignalFilter::FILTER_METHOD_FFT_STR[] = "fft"; +#if HAVE_FFTW +const char SignalFilter::FILTER_METHOD_FFTW_STR[] = "fftw"; +const char SignalFilter::FILTER_METHOD_RFFTW_STR[] = "rfftw"; +#endif + +const char SignalFilter::FILTER_METHOD_CONVOLUTION_TITLE_STR[] = "Convolution"; +const char SignalFilter::FILTER_METHOD_FOURIER_TITLE_STR[] = "Direct Fourier"; +const char SignalFilter::FILTER_METHOD_FOURIER_TABLE_TITLE_STR[] = "Fourier Trig Table"; +const char SignalFilter::FILTER_METHOD_FFT_TITLE_STR[] = "FFT"; +#if HAVE_FFTW +const char SignalFilter::FILTER_METHOD_FFTW_TITLESTR[] = "FFTW"; +const char SignalFilter::FILTER_METHOD_RFFTW_TITLE_STR[] = "Real FFTW"; +#endif + +// Domains +const char SignalFilter::DOMAIN_FREQUENCY_STR[] = "frequency"; +const char SignalFilter::DOMAIN_SPATIAL_STR[] = "spatial"; + +const char SignalFilter::DOMAIN_FREQUENCY_TITLE_STR[] = "Frequency"; +const char SignalFilter::DOMAIN_SPATIAL_TITLE_STR[] = "Spatial"; + + /* NAME * SignalFilter::SignalFilter Construct a signal * @@ -139,7 +189,7 @@ SignalFilter::init (const FilterID filterID, const FilterMethodID filterMethodID #endif } - if (m_idFilterMethod == FILTER_METHOD_FOURIER || FILTER_METHOD_FOURIER_TABLE || m_idFilterMethod == FILTER_METHOD_FFT + if (m_idFilterMethod == FILTER_METHOD_FOURIER || m_idFilterMethod == FILTER_METHOD_FOURIER_TABLE || m_idFilterMethod == FILTER_METHOD_FFT #if HAVE_FFTW || m_idFilterMethod == FILTER_METHOD_FFTW || m_idFilterMethod == FILTER_METHOD_RFFTW #endif @@ -152,7 +202,8 @@ SignalFilter::init (const FilterID filterID, const FilterMethodID filterMethodID nextPowerOf2++; nextPowerOf2 += (m_zeropad - 1); m_nFilterPoints = 1 << nextPowerOf2; - cout << "nFilterPoints = " << m_nFilterPoints << endl; + if (m_traceLevel >= TRACE_TEXT) + cout << "nFilterPoints = " << m_nFilterPoints << endl; } m_nOutputPoints = m_nFilterPoints * m_preinterpolationFactor; m_filterMin = -1. / (2 * m_signalInc); @@ -654,6 +705,8 @@ SignalFilter::haveAnalyticSpatial (FilterID filterID) case FILTER_SINC: haveAnalytic = true; break; + default: + break; } return (haveAnalytic);