** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: filter.cpp,v 1.21 2000/07/22 16:14:49 kevin Exp $
+** $Id: filter.cpp,v 1.23 2000/07/31 14:48:35 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
*/
SignalFilter::SignalFilter (const char* filterName, const char* filterMethodName, double bw, double signalIncrement, int nSignalPoints, double param, const char* domainName, int zeropad = 0, int preinterpolationFactor = 1)
+ : m_vecFilter(NULL), m_vecFourierCosTable(NULL), m_vecFourierSinTable(NULL), m_fail(false)
{
- m_vecFilter = NULL;
- m_vecFourierCosTable = NULL;
- m_vecFourierSinTable = NULL;
m_idFilter = convertFilterNameToID (filterName);
if (m_idFilter == FILTER_INVALID) {
m_fail = true;
}
SignalFilter::SignalFilter (const int filterID, const int filterMethodID, double bw, double signalIncrement, int nSignalPoints, double param, const int domainID, int zeropad = 0, int preinterpolationFactor = 1)
+ : m_vecFilter(NULL), m_vecFourierCosTable(NULL), m_vecFourierSinTable(NULL), m_fail(false)
{
init (filterID, filterMethodID, bw, signalIncrement, nSignalPoints, param, domainID, zeropad, preinterpolationFactor);
}
SignalFilter::SignalFilter (const char* filterName, const char* domainName, double bw, double param)
+ : m_vecFilter(NULL), m_vecFourierCosTable(NULL), m_vecFourierSinTable(NULL), m_fail(false)
{
m_bw = bw;
m_nSignalPoints = 0;
m_nFilterPoints = 0;
- m_vecFilter = NULL;
- m_vecFourierCosTable = NULL;
- m_vecFourierSinTable = NULL;
m_filterParam = param;
m_idFilter = convertFilterNameToID (filterName);
if (m_idFilter == FILTER_INVALID) {
m_nameFilter = convertFilterIDToName (m_idFilter);
m_nameDomain = convertDomainIDToName (m_idDomain);
m_nameFilterMethod = convertFilterMethodIDToName (m_idFilterMethod);
- m_fail = false;
m_nSignalPoints = nSignalPoints;
m_signalInc = signalIncrement;
m_filterParam = filterParam;
} else if (m_idDomain == DOMAIN_SPATIAL) {
double x;
int i;
- for (x = m_filterMin, i = 0; i < m_nFilterPoints; x += m_filterInc, i++)
+ for (x = m_filterMin, i = 0; i < m_nFilterPoints; x += m_filterInc, i++) {
if (haveAnalyticSpatial(m_idFilter))
m_vecFilter[i] = spatialResponseAnalytic (x, m_filterParam);
else
m_vecFilter[i] = spatialResponseCalc (x, m_filterParam);
+#if LIMIT_BANDWIDTH_TRIAL
+ if (i < m_nFilterPoints / 4 || i > (m_nFilterPoints * 3) / 4)
+ m_vecFilter[i] = 0;
+#endif
+ }
} else {
m_failMessage = "Illegal domain name ";
m_failMessage += m_idDomain;
int filterID = FILTER_INVALID;
for (int i = 0; i < s_iFilterCount; i++)
- if (strcasecmp (filterName, s_aszFilterName[i]) == 0) {
- filterID = i;
- break;
- }
+ if (strcasecmp (filterName, s_aszFilterName[i]) == 0) {
+ filterID = i;
+ break;
+ }
return (filterID);
}
static const char *name = "";
if (fmID >= 0 && fmID < s_iFilterMethodCount)
- return (s_aszFilterName [fmID]);
+ return (s_aszFilterMethodName [fmID]);
return (name);
}