Bandpass in ADA oder C++ oder Java

Hallo

Ich muss einen Bandpass in ADA implementieren. Hat irgend jemand schon mal einen einfachen Bandpass in ADA oder C++ oder Java implementiert? Oder hat irgendjemand einen einfachen Algorithmus? Oder hat jemand eine Internetseite oder ein Buch in dem das drinsteht?

Vielen Dank für eure Hilfe.

Mit freundlichen Grüssen

[…]

Team: Name gelöscht

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