Hallo zusammen, ich bin absolout neu auf dem Gebiet DSP und brauche deshalb etwas Hilfe. Im Rahmen meines Studiums soll ich einen IIR-Filter mit folgender Formel in C erstellen Y(n)=2 { a [x(n) - x(n - 2)] + j y(n - 1) – ß y(n - 2)} Mein Problem: Ich hab einen eingelesenen 16 Bit Codec Wert im LSW, für die High-Level Implementierung in C muss ich einen 32 Bit Wert mit Vorzeichen berechnen. Ich hoffe, dass mir einer da weiterhelfen kann.
> Ich hoffe, dass mir einer da weiterhelfen kann.
wo?
IIR in C implementieren?
konvertieren nach long (32 bit) in C?
beherrscht der DSP Gleitkommaarithmetik?
ohne weitere Angaben lautet meine Antwort
double xn=0,xn1=0,xn2=0,yn=0,yn1=0,yn2=0,dYn;
double a,j,beta;
int16 LSW;
long Yn=0;
while(1){
xn=LSW;
dYn=2*(a*(xn-xn2)+j*yn1-beta*yn2);
Yn=(long)dYn;
xn2=xn1; xn1=xn; yn2=yn1; yn1=dYn;
}
xn2=xn1... so was lässt sich mit einem Ringpuffer wesentlich schneller und schöner lösen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.