Digitaler Tschebyscheff-Filter

Gast #1974494
Hallo, ich habe auf einer Internetseite ein "Anleitung" für einen 
digitalen Tschebyscheff-Filter gefunden:

http://de.academic.ru/dic.nsf/dewiki/1415923

Ich habe mir jetzt damit eine Software geschrieben, um mir die 
Kosntanten berechnen zu lassen. Hier mal ein Auszug:


K = tan(3.14159265f*(grenz / abtast));
int order=2;
float gamma=AsinH(rippledb)/order;

for (int i=0; i<3; i++)
{

  b[i]=1/( (cosh(gamma)*cosh(gamma))   - 
((cos((((2*i)-1)*3.14159265f)/(2*order)))* 
(cos((((2*i)-1)*3.14159265f)/(2*order))))   ) ;

  a[i]=K *2*b[i]*sinh(gamma)*cos ( (((2*i)-1)*3.14159265f)/order);

}

alpha[0]=K*K;
alpha[1]=2*K*K;
alpha[2]=alpha[0];

beta[0]=(a[0]+alpha[0]+b[0]);
beta[1]=(2*(b[1]-alpha[0]));
beta[2]=(a[2]-alpha[0]-b[2]);
betae[0]=beta[1]/beta[0];
betae[1]=beta[2]/beta[0];

Die beta's sind die Variablen die auf der Internetseite die beta_strich 
sind.   betae dann die betas.

So jetzt das Probelm.. Es kommen "merkwürdige" Sachen raus.
Und zwar sind alle betas gleich (ich hab das mal mit dem Taschenrechner 
getestet und die sind wirklich gleich). Liegt am dem cosinus welcher ja 
periodisch mit pi ist. Und die i sind ja ganze Zahlen.

Habe ich da einen Denkfehler oder ist an den Formeln was falsch?
Habe die von meiner Software ausgegebenen Konstanten mal getestet und 
der Filter geht nicht.  Habe mir mit einem Online Applet mal Konstanten 
berechnen lassen, Das geht, also meine Filterstruktur ist richtig.
Gast #1974498
Als was sind deine Variablen definiert? Zeig mal deinen kompletten Code.
Die 3.14... durch eine Konstante (Präprozessor) ersetzen macht es etwas 
lesbarer. C-Code bitte in [c ] [/c (ohne Leerzeichen)] einfassen.
Gast #1974521
In tschebicalc.h:
Warum includest du math.h?
PI würde ich noch ein paar Nachkommastellen spendieren, wobei das zu 
99,9% schon in math.h definiert sein sollte. Warum definierst du eine 
Konstante und nutzt sie dann nicht?

Bandwürmer wie diesen
1
b[i]=1/( (cosh(gamma)*cosh(gamma))   - ((cos((((2*i)-1)*3.14159265f)/(2*order)))* (cos((((2*i)-1)*3.14159265f)/(2*order))))   ) ;
unbedingt verkürzen, da blickt keiner durch.

Ob das eig. Problem vom Programm kommt oder die Formeln Mist sind kann 
ich dir nicht sagen, wenn es am Programm liegen sollte kontrollier mal 
auf Überlaufe.
#1974602
#define PI 3.14f; <- ; gehört weg

braucht man aber eh nicht weil math.h includiert wird


Programm Ausgabe :

Abtastefrequenz: 1000
Grenzfrequenz: 50
K= 0.158384     gamma= -1.156219

 a0= 0.025086
 a1= 0.050171
 a2= 0.025086
 b1= 1.759554
 b2= -1.000000

was soll denn rauskommen ?
#1974754
ja, verstehe.

hab inzwischen auch einen Filter mit diesen berechneten Koeffizienten
getestet und der sieht in der Tat nicht gut aus.

bei der Programmumsetzung habe ich auf den ersten Blick auch
keinen Fehler sehen können. (hmmm)
#1975205
Ohne genau draufgekuckt zu haben:
Du berechnest 3 a's und b's, ist das nicht dritte Ordnung?
Laufen die i's der russischen Formel ab 0 oder ab 1?

Fragen über Fragen.
Möglicherweise mal eine sorgfältigere Quelle für Chebychew hinzuziehen.

Cheers
Detlef
#1976080
Hab noch ein paar Sachen gefunden

Term1 := cosh(gamma)*cosh(gamma)
könnte laut "Anleitung  (anhang) " auch interpretiert werden als
        cosh(gamma * gamma)

Term2 := cos((((2.0*i)-1.0)*PI)/(2.0*order)
sollte meiner Meinung nach heissen
        cos((((2.0*i)-1.0)*PI)/(order)

Es hilft aber auch nix, es kommt trotzdem ein nichtrichtiges Ergebnis 
raus.

mfg
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.