X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=libctsim%2Ffilter.cpp;h=f4a10f3186dbbeb6da08a3fbdc810ee11a4b8e27;hb=82ea0c94394a5a175b260160760155a6686203a1;hp=43b2d539320af25a54381ae8ec224faff2e8febf;hpb=0300d191a0f6e13334cd4eba1fb6d83c2351e600;p=ctsim.git diff --git a/libctsim/filter.cpp b/libctsim/filter.cpp index 43b2d53..f4a10f3 100644 --- a/libctsim/filter.cpp +++ b/libctsim/filter.cpp @@ -7,9 +7,9 @@ ** Date Started: Aug 1984 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg +** Copyright (c) 1983-2000 Kevin Rosenberg ** -** $Id: filter.cpp,v 1.28 2000/11/10 15:29:37 kevin Exp $ +** $Id: filter.cpp,v 1.36 2001/02/11 04:56:37 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,7 +30,7 @@ int SignalFilter::N_INTEGRAL=500; //static member const int SignalFilter::FILTER_INVALID = -1 ; -const int SignalFilter::FILTER_ABS_BANDLIMIT = 0; // filter times |x = | +const int SignalFilter::FILTER_ABS_BANDLIMIT = 0; // filter times |x| const int SignalFilter::FILTER_ABS_G_HAMMING = 1; const int SignalFilter::FILTER_ABS_COSINE = 2; const int SignalFilter::FILTER_ABS_SINC = 3; @@ -41,6 +41,8 @@ const int SignalFilter::FILTER_G_HAMMING = 7; const int SignalFilter::FILTER_COSINE = 8; const int SignalFilter::FILTER_TRIANGLE = 9; +const int SignalFilter::s_iReconstructFilterCount = 5; + const char* SignalFilter::s_aszFilterName[] = { {"abs_bandlimit"}, {"abs_hamming"}, @@ -228,7 +230,7 @@ SignalFilter::convertFilterNameToID (const char *filterName) int filterID = FILTER_INVALID; for (int i = 0; i < s_iFilterCount; i++) -cc if (strcasecmp (filterName, s_aszFilterName[i]) == 0) { + if (strcasecmp (filterName, s_aszFilterName[i]) == 0) { filterID = i; break; } @@ -364,12 +366,13 @@ SignalFilter::spatialResponseCalc (int filterID, double bw, double x, double par double zinc = (zmax - zmin) / (n - 1); double z = zmin; - double q [n]; + double* q = new double [n]; for (int i = 0; i < n; i++, z += zinc) q[i] = frequencyResponse (filterID, bw, z, param) * cos (TWOPI * z * x); double y = 2 * integrateSimpson (zmin, zmax, q, n); - + delete q; + return (y); } @@ -558,30 +561,21 @@ SignalFilter::spatialResponseAnalytic (int filterID, double bw, double x, double } -/* NAME - * sinc Return sin(x)/x function - * - * SYNOPSIS - * v = sinc (x, mult) - * double v sinc value - * double x, mult - * - * DESCRIPTION - * v = sin(x * mult) / x; - */ +// Functions that are inline in filter.h + + +// sinc Return sin(x)/x function +// v = sinc (x, mult) +// Calculates sin(x * mult) / x; + +// integral_abscos Returns integral of u*cos(u) +// +// q = integral_abscos (u, w) +// double q Integral value +// double u Integration variable +// double w Upper integration boundary +// Returns the value of integral of u*cos(u)*dV for V = 0 to w -/* NAME - * integral_abscos Returns integral of u*cos(u) - * - * SYNOPSIS - * q = integral_abscos (u, w) - * double q Integral value - * double u Integration variable - * double w Upper integration boundary - * - * DESCRIPTION - * Returns the value of integral of u*cos(u)*dV for V = 0 to w - */