00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _SPECTRUM_InterpolateER2_
00023 #define _SPECTRUM_InterpolateER2_
00024
00025 #include "Processing.hxx"
00026 #include "DynamicType.hxx"
00027 #include "InPort.hxx"
00028 #include "OutPort.hxx"
00029 #include "Spectrum.hxx"
00030 #include "InControl.hxx"
00031
00032 namespace CLAM {
00033
00034
00035 class SpecInterpConfig: public ProcessingConfig
00036 {
00037 public:
00038 DYNAMIC_TYPE_USING_INTERFACE (SpecInterpConfig, 1,ProcessingConfig);
00039 DYN_ATTRIBUTE(0, public, TData, InterpolationFactor);
00040 protected:
00041 void DefaultInit();
00042
00043 };
00044
00078 class SpectrumInterpolator: public Processing {
00079
00080 typedef InControlTmpl<SpectrumInterpolator> SpectrumInterpolatorCtl;
00081
00082 SpecInterpConfig mConfig;
00083
00085 int mSize;
00086
00087 InPort<Spectrum> mIn1;
00088 InPort<Spectrum> mIn2;
00089 OutPort<Spectrum> mOut;
00090
00092 typedef enum {
00093
00094
00095
00096
00097 SMagPhase, SComplex, SPolar,
00098
00099
00100 SBPF,
00101
00102
00103
00104
00105
00106
00107
00108 SBPFMagPhase, SBPFComplex, SBPFPolar, SMagPhaseBPF,
00109 SComplexBPF, SPolarBPF,
00110
00111
00112 SOther
00113 } PrototypeState;
00114
00116 typedef enum { Slinlin, Sloglog, Slinlog, Sloglin} ScaleState;
00117
00119 PrototypeState mProtoState;
00121 ScaleState mScaleState;
00122
00123
00124 const char *GetClassName() const {return "SpectrumInterpolator";}
00125
00126
00130 bool ConcreteConfigure(const ProcessingConfig&);
00131
00132 public:
00133 SpectrumInterpolator();
00134
00135 SpectrumInterpolator(const SpecInterpConfig &c);
00136
00137 ~SpectrumInterpolator() {};
00138
00139 const ProcessingConfig &GetConfig() const { return mConfig;}
00140
00141 bool Do(void);
00142
00143
00144 bool Do(Spectrum& in1, Spectrum& in2, Spectrum& out);
00145
00146
00147
00154 bool SetPrototypes(const Spectrum& in1,const Spectrum& in2,const Spectrum& out);
00155
00156 bool SetPrototypes();
00157
00158 bool UnsetPrototypes();
00159
00160 bool MayDisableExecution() const {return true;}
00161
00163 SpectrumInterpolatorCtl mInterpolationFactorCtl;
00164
00165 private:
00166
00170 inline void Interpolate(Spectrum& in1, Spectrum& in2, Spectrum& out);
00171
00172
00173
00174
00175 inline void InterpolateMagPhase(Spectrum& in1, Spectrum& in2, Spectrum& out);
00176 inline void InterpolateMagPhaseLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00177 inline void InterpolateMagPhaseLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00178 inline void InterpolateMagPhaseLinLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00179 inline void InterpolateComplex(Spectrum& in1, Spectrum& in2, Spectrum& out);
00180 inline void InterpolateComplexLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00181 inline void InterpolateComplexLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00182 inline void InterpolateComplexLinLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00183 inline void InterpolatePolar(Spectrum& in1, Spectrum& in2, Spectrum& out);
00184 inline void InterpolatePolarLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00185 inline void InterpolatePolarLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00186 inline void InterpolatePolarLinLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00187
00188 inline void InterpolateBPF(Spectrum& in1, Spectrum& in2, Spectrum& out);
00189
00190 inline void InterpolateBPFLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00191 inline void InterpolateBPFLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00192 inline void InterpolateBPFLinLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00193 inline void InterpolateBPFMagPhase(Spectrum& in1, Spectrum& in2, Spectrum& out);
00194 inline void InterpolateMagPhaseBPF(Spectrum& in1, Spectrum& in2, Spectrum& out);
00195 inline void InterpolateBPFMagPhaseLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00196 inline void InterpolateBPFMagPhaseLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00197 inline void InterpolateBPFMagPhaseLinLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00198 inline void InterpolateBPFMagPhaseLogLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00199 inline void InterpolateBPFComplex(Spectrum& in1, Spectrum& in2, Spectrum& out);
00200 inline void InterpolateComplexBPF(Spectrum& in1, Spectrum& in2, Spectrum& out);
00201 inline void InterpolateBPFComplexLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00202 inline void InterpolateBPFComplexLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00203 inline void InterpolateBPFComplexLinLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00204 inline void InterpolateBPFComplexLogLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00205 inline void InterpolateBPFPolar(Spectrum& in1, Spectrum& in2, Spectrum& out);
00206 inline void InterpolatePolarBPF(Spectrum& in1, Spectrum& in2, Spectrum& out);
00207 inline void InterpolateBPFPolarLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00208 inline void InterpolateBPFPolarLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00209 inline void InterpolateBPFPolarLinLog(Spectrum& in1, Spectrum& in2, Spectrum& out);
00210 inline void InterpolateBPFPolarLogLin(Spectrum& in1, Spectrum& in2, Spectrum& out);
00211
00212 };
00213
00214 }
00215
00216 #endif // _SPECTRUM_InterpolateER_
00217