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.
Gast
#477514
> 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;
}
Gast
#480720
xn2=xn1... so was lässt sich mit einem Ringpuffer wesentlich schneller und schöner lösen...
Bei nur 4 Zustandsvariablen dürfte die direkte Zuweisung i.d.R. schneller sein.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.