Hi,
Ich muss einen Bandpass in ADA implementieren. Hat irgend
jemand schon mal einen einfachen Bandpass in ADA oder C++ oder
Java implementiert?
Hab mal eine C++ Implementierung geschrieben. Das ganze ist Teil eines ziemlich komplexen Programms, daher hier die ganze Klassenhierarchie, hatte keine Lust, das alles umzuschreiben. Interessant sind fuer Dich vor allem die Implementierungen von calc(double):
class Function {
protected:
void chkval(const string& funcName, const string& valName,
const SmartString& val);
public:
class Err; class ConstrErr; class NofArgErr; class ValErr;
virtual ~Function() {}
virtual double calc(double in) = 0;
};
class HLPF : public Function { // pure virtual base for HPF and LPF
protected:
double tau, aux, lastout;
public:
class Err;
HLPF(const SmartString& Tau, const string& type);
HLPF(double Tau, const string& type);
};
class LPF : public HLPF { // Temporal Low Pass Filter
public:
LPF(const SmartString& Tau) : HLPF(Tau, "LPF") {}
LPF(double Tau) : HLPF(Tau, "LPF") {}
double calc(double in);
};
class HPF : public HLPF { // Temporal High Pass Filter
public:
HPF(const SmartString& Tau) : HLPF(Tau, "HPF") {}
HPF(double Tau) : HLPF(Tau, "HPF") {}
double calc(double in);
};
double LPF::calc(double in) {
aux += in - lastout;
lastout = aux / tau;
return(lastout);
}
double HPF::calc(double in) {
aux += lastout;
lastout = in - aux / tau;
return(lastout);
}
Ein Bandpass ist eine serielle Verbindung von Hoch- und Tiefpass, wobei die Reihenfolge egal ist. In meiner Hierarchie waere das z.B.:
class BPF : public Function {
private:
Function \*high, \*low;
double hf, lf;
public:
BPF(double hTau, double lTau, double hFactor, lFactor) :
high(new HPF(hTau)), low(new LPF(lTau)), hf(hFactor, lf(lFactor){}
calc(double in) {return hf \* high-\>calc(lf \* low-\>calc(in));}
// Hier geht es also erst durch den LPF, dann durch den HPF
};
Die Klasse BPF habe gerade hier geschrieben, da koennen Bugs drin sein, der Rest sollte laufen.
Oder hat jemand eine Internetseite oder ein Buch
in dem das drinsteht?
Neural Networks as Cybernetic Systems von Holk Cruse, gibts auch auf Deutsch, weiss den Namen aber nicht (in der Deutschen Fassung ist auch viel weniger ueber Neuronale Netze).
Vielen Dank für eure Hilfe.
Vielen Bitte
Gruss
Thorsten