Forum: Mikrocontroller und Digitale Elektronik IIR-Filter in C.


von Tobias P. (hubertus)


Lesenswert?

Morgen allerseits

ich habe in MATLAB mit dem fdatool ein digitales Filter kreiert. Mit 
"export C header" erhalte ich die Fixpoint-Koeffizienten, wobei ich 
gesagt habe, dass ich das Input- und Outputsignal als 16 Bit signed 
will, und die Koeffizienten auch 16 Bit sein sollen.

Folgender Code resultiert dann aus dem fdatool:
1
#define MWSPT_NSEC 3
2
const int NL[MWSPT_NSEC] = { 1,3,1 };
3
const int16_T NUM[MWSPT_NSEC][3] = {
4
  {
5
       12,      0,      0 
6
  },
7
  {
8
     8192,  16384,   8192 
9
  },
10
  {
11
     8192,      0,      0 
12
  }
13
};
14
const int DL[MWSPT_NSEC] = { 1,3,1 };
15
const int16_T DEN[MWSPT_NSEC][3] = {
16
  {
17
     8192,      0,      0 
18
  },
19
  {
20
     8192, -15475,   7331 
21
  },
22
  {
23
     8192,      0,      0 
24
  }
25
};

wie benutze ich diese Koeffizienten nun? ich habe keine Ahnung, wie der 
Output von diesem fdatool zu interpretieren ist. Leider ist es auch 
nirgends so genau dokumentiert :-(
 Hat das jemand hier schon mal benutzt und kann mir auf die Sprünge 
helfen?

von Uwe B. (uwe_beis)


Lesenswert?

Hi,

ich kenne MATLAB leider nicht, erst recht nicht fdatool, aber ich habe 
mich intensiv mit digitalen IIR-Filtern befasst und mein eigenes "Tool" 
geschrieben. Es gibt auch Koeffizienten als Float-Zahlen aus. Die 
Algorithmen sind erklärt in 
http://www.beis.de/Elektronik/Filter/AnaDigFilt/AnaDigFilt.html, und das 
Tool (AnaDigFilt.exe) ist dort auch zu finden. Vorgehensweise: Analogen 
Prototyp eingeben, Sample Rate wählen, Ergebnis ansehen und die 
Koeffizienten aus dem Tab "Coefficients" kopieren und in C-Syntax 
umformen. Falls erforderlich, können auch die analogen Koeffizienten zur 
Berechnung der digitalen Koeffizienten eingesetzt werden. Vielleicht 
hilft dir das.

Wahrscheinlich könnte ich analysieren, was bei dir gemeint ist, aber die 
Arbeit überlasse ich dir lieber.

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
Noch kein Account? Hier anmelden.