Forum: Digitale Signalverarbeitung / DSP / Machine Learning Digitale Filter für Nicht-Akademiker?


von Oliver P. (mace_de)


Lesenswert?

Servus,

kennt jemand ein Buch/Script/Tutorial wo das Thema Digitale Filter auf 
verständliche, Praxisnahe Weise vermittelt wird? Also so dass man es 
auch ohne vorheriges Mathestudium versteht?
Alles was ich dazu bislang gefunden hab verliert sich immer ziemlich 
schnell in einem Berg aus grauer Theorie und einem (für 
normal-sterbliche) unverständlichen Formelwust.
Im Kontext eines Studiums mag das ja ganz nützlich sein. Mir als 
interessiertem Hobbyanwender hilft so etwas allerdings nur bedingt in 
die Thematik einzusteigen und das ganze zu verstehen.
Ich würde mich über ein paar Tipps und Hinweise freuen.
Optimal währe natürlich ein Buch zum blättern und in der Hand halten. 
Falls es so etwas überhaupt gibt.

Grüße Oliver

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ich habe das mal hier versucht, auf einfache Weise darzustellen:
http://www.mikrocontroller.net/articles/Digitalfilter_mit_ATmega

DSP-Bücher gibts auch gratis im Internet, dspguide oder auch eines von 
Analog Devices

: Bearbeitet durch User
von Harald W. (wilhelms)


Lesenswert?

Oliver P. schrieb:

> kennt jemand ein Buch/Script/Tutorial wo das Thema Digitale Filter auf
> verständliche, Praxisnahe Weise vermittelt wird? Also so dass man es
> auch ohne vorheriges Mathestudium versteht?

Nun, das Thema Digitale Filter ist nicht ganz trivial. Etwas
Mathematikkenntnisse sollte man da aber schon haben. Man
sollte z.B. verstehen, was eine Z-Transformation ist. Dazu
muss man aber kein Mathematiker sein, ich habs mit meiner
Mittelschulbildung auch geschafft. :-)

> Alles was ich dazu bislang gefunden hab verliert sich immer ziemlich
> schnell in einem Berg aus grauer Theorie und einem (für
> normal-sterbliche) unverständlichen Formelwust.

Solche Bücher gibt es immer in verschiedenen Schwierigkeitsgraden.
Deshalb geht man am besten in eine (Uni-)Leihbibliothek und sieht
sich dort verschiedene Bücher an. Dann kann man am besten beurteilen,
welches Buch zum eigenen Wissensstand passt und kann sich dieses
Buch dann ja kaufen.
Gruss
Harald

von Oliver P. (mace_de)


Lesenswert?

@Christoph
Danke für den Link. Hatte ich noch nicht entdeckt. Das werd ich mir mal 
in ruhe zu Gemüte führen.
Zum Thema "kostenlos im Netz", ja weiß ich. Das große Problem ist die 
große Anzahl. Da was "Deppentaugliches" zu finden ist nicht leicht. 
Zumal mir persönlich eine gedruckte Variante lieber währe.

@Harald
Ja, Trivial ist es wahrhaftig nicht. Um so wichtiger ist eine 
verständliche Erklärung. Was nützt es wenn ich ein kompliziertes Thema 
auf komplizierte Weise erkläre?
Ein kompliziertes Tehma so aufzubereiten und zu vermitteln dass es auch 
für Einsteiger ohne tiefgreifende Vorkenntnisse (einige sind ja durchaus 
vorhanden) verständlich ist, DAS macht, nach meiner Meinung, ein gutes 
Lehrbuch aus.
Bevor ich mir jetzt den Gesamtbestand der örtlichen TH zum Thema 
Digitale Filter zu gemüte führe warte ich lieber noch die ein oder 
andere Empfehlung ab. ;-)

von Michael W. (Gast)


Lesenswert?

1)
http://www.analog.com/en/content/scientist_engineers_guide/fca.html

ich persönlich finde das Buch aber zu langatmig.


2)
Alan V. Oppenheim, Ronald W. Schafer - Zeitdiskrete Signalverarbeitung

Dieses Buch finde ich echt super, da es für nicht Mathematiker 
geschrieben ist und alles von Grund auf aufbaut, ohne sich in Details zu 
verlieren. Es hat auch unzählige Beispiele mit Lösungen. Es geht 
insbesondere auf die Theorie der Filter und auf verschiedene Ansätze zur 
Berechnung ein.

von Harald W. (wilhelms)


Lesenswert?

Oliver P. schrieb:

> @Harald
> Ja, Trivial ist es wahrhaftig nicht. Um so wichtiger ist eine
> verständliche Erklärung. Was nützt es wenn ich ein kompliziertes
> Thema auf komplizierte Weise erkläre?
> Ein kompliziertes Tehma so aufzubereiten und zu vermitteln dass es auch
> auch für Einsteiger ohne tiefgreifende Vorkenntnisse verständlich ist,

...wäre m.E. für einen Mathematikstudenten völlig unbrauchbar

> DAS macht, nach meiner Meinung, ein gutes Lehrbuch aus.

Es gibt keine Lehrbücher, die für jeden beliebigen Stand der
Vorkenntnisse des Lesenden passen. Wenn sie sozusagen bei
Null anfangen, sind sie für die meisten Leser langweilig.
Ein Beispiel: Lies doch mal ein Buch über die Feuerwehr,
welches für Sechsjährige geschrieben ist und dann eins,
welches für Erwachsene geschrieben ist. Und dann noch
eins, welches für Feuerwehrleute geschrieben ist.

Ein Zitat von Einstein lautet sinngemäß: "Man sollte die Dinge so
einfach wie möglich darstellen. Aber nicht einfacher als nötig!"

> Bevor ich mir jetzt den Gesamtbestand der örtlichen TH zum Thema
> Digitale Filter zu gemüte führe

Meistens reicht schon ein kurzes Durchblättern eines Buches, um
festzustellen, das es zumeigenen Wissensstand passt.

> warte ich lieber noch die ein oder andere Empfehlung ab. ;-)

Die Empfehlenden kennen aber Deinen Wissensstand nicht.
Gruss
Harald
PS: Gerade das Verständnis der Transformation von Kennlinien
vom Frequenzbereich in den Zeitbereich hat mir damals zum
Verständnis der digitalen Filter sehr geholfen. Voraussetzung
dafür war natürlich, das man weiss, was eine Frequenzgang-
Kennlinie ist. Das hatte ich allerdings schon in der Berufs-
schule gelernt.

: Bearbeitet durch User
von Josef (Gast)


Lesenswert?

"Handbuch der analogen und digitalen Filterungstechnik"
von Roland Best

koennte passen.
Sehr praxisnah und nur 168 Seiten dick.

Gibt es aber wohl nur noch gebraucht.

von Oliver P. (mace_de)


Lesenswert?

>> Ein kompliziertes Tehma so aufzubereiten und zu vermitteln dass es auch
>> auch für Einsteiger ohne tiefgreifende Vorkenntnisse verständlich ist,

>...wäre m.E. für einen Mathematikstudenten völlig unbrauchbar

Mag sein, für mich als Hobbyanwender sicher nicht.

>Es gibt keine Lehrbücher, die für jeden beliebigen Stand der
>Vorkenntnisse des Lesenden passen. Wenn sie sozusagen bei
>Null anfangen, sind sie für die meisten Leser langweilig.
>Ein Beispiel: Lies doch mal ein Buch über die Feuerwehr,
>welches für Sechsjährige geschrieben ist und dann eins,
>welches für Erwachsene geschrieben ist. Und dann noch
>eins, welches für Feuerwehrleute geschrieben ist.

Deshalb frag ich ja hier und hab versucht meinen Wissensstand 
(Hobbyanwender ohne tiefgreifende Kenntnisse in höherer Mathematik) kund 
zu tun.
Ich nehm dann das Buch "Digitale Filtertechnik für Sechsjährige" :-D
Da ich sicher nicht der einzige bin der sich aus rein privatem Interesse 
und im Selbststudium mit diesem Thema befasst hat, ist hier sicher der 
ein oder andere Leidensgenosse vertreten der, wie bereits geschehen, ein 
paar Literaturtips geben kann.

Vll. stellt sich ja auch herraus dass weitreichende Mathekenntnisse 
(Integralrechnung,Differenzialrechnung und solche Zauberein) 
Grundvorraussetzung und unumgänglich für die Anwendung und das 
Verständniss der digitale Filtertechnik sind. Dann ist das halt so.
Momentan gehe ich aber noch davon aus dass ich es verstehe wenn es 
entsprechend erklärt wird.

Das vorgeschlagene Buch "Zeitdiskrete Signalverarbeitung" steht in der 
örtlichen Uni-Bibliothek. Das werd ich mir auf jeden Fall mal ansehen.

"Handbuch der analogen und digitalen Filterungstechnik" gibt es günstig 
gebraucht. könntest du noch mal kurz drauf eingehen?

von Josef (Gast)


Lesenswert?

zu "Handbuch der analogen und digitalen Filterungstechnik" von Roland 
Best:
Es werden analoge und digitale Filter ohne Beweise, dafuer mit vielen
anschaulichen Erklaerungen behandelt. Meistens folgt dann noch ein 
Kochrezept fuer den jeweiligen Filterentwurf. Integrale, Laplace- und 
z-Transformation kommen allerdings auch vor. Das wird auch ohne grosse 
Theorie sehr schoen erlaeutert. Inwieweit man dem ohne Vorkenntnisse 
folgen kann/will, ist eine interessante Frage.
Das Buch ist von 1982. Heutezutage wird man wohl zumindest die 
Koeffizienten von einem Programm berechnen lassen.
Ich finde das Buch sehr gut und erfrischend, vor allem wenn man sich
vorher durch ein paar typischer Theroriebuecher gequaelt hat.

Am wenigsten Mathe benutzt, von dem was ich kenne, Smith 
www.dspguide.com.
(Wurde ja oben schon zwei mal erwaehnt).

Gruss

von Michael W. (Gast)


Lesenswert?

Mir fällt eines noch ein:

Im Tietze Schenk (zumindest in der Auflage die ich habe - 1980) ist ein 
ganzes Kapitel der Realisierung digitaler Filter gewidmet. Die Art und 
Weise wie das dort aufbereitet ist setzt keinerlei besonderen Kenntnisse 
voraus, und geht auf die bilineare Transformation ein. Wie auch in allen 
anderen Kapiteln des Werks reichen elementare Kenntnisse der Mathematik 
aus. Auch wenn das nur eine von vielen Varianten zum Filterentwurf ist, 
könnte es für dich vielleicht interessant sein. Es handelt sich gerade 
um etwa 15 Seiten, die aber relativ "praxisnahe" sind. Du wirst nachher 
in der Lage sein, Filter nach einem Schema zu dimensionieren bzw. das 
Grundprinzip zu verstehen. In der Praxis nimmst du dann ohnehin ein 
Programm, welches dir die Koeffizienten ausspuckt.

von Bastler (Gast)


Lesenswert?

Hallo,

ich hänge mich jetzt einfach an die Frage von Oliver heran.

Nach den durchlesen der Antworten stellt sich ja doch heraus das tiefere 
Mathematikkenntnisse  notwendig sind.
Welche sind das, und wo werden diese gut verständlich (Online / 
Tutorials usw.) zum Eigenstudium für alte Säcke ohne Abitur die schon 
lange aus der Schule heraus sind vermittelt?

Ich gehe jetzt von den Mathematikwissen der breiten Masse der 
Bevölkerung aus,auch wenn das hier so einigen nicht gefallen wird.
Das Ingenieure, Studenten aus den Technischen Bereichen und Gymnasiasten 
aus der Oberstufe mit den Schwerpunkt Mathematik andere Vorstellungen 
davon haben was tiefere Mathematikkenntnisse sind ist ja 
selbstverständlich.

Bastler

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Es kommt darauf an, ob man die Mathematik dahinter verstehen will oder 
einfach nur digitale Filter entwickeln möchte.
Ich habe versucht, einen hobbymäßigen Einstieg in den Entwurf eines 
Digitalfilters zu beschreiben. Natürlich mit hobbygerechtem 
Einstiegspreis, also kostenloser Software. Das geht eben mit Scilab oder 
Octave, wenn man bereit ist, sich in den Gebrauch dieser Software soweit 
einzuarbeiten wie es für diesen einen Zweck nötig ist.

von Mark 99 (Gast)


Lesenswert?

Michael W. schrieb:
> 2)
> Alan V. Oppenheim, Ronald W. Schafer - Zeitdiskrete Signalverarbeitung

Da würde ich schon aus Kostengründen das englische Original wählen. Dann 
aber nicht die US-Ausgabe, sondern die preiswerte 
internationale/indische Ausgabe als Import. Mit lächerlichen 16 Euro ist 
man dabei:

http://www.abebooks.de/servlet/SearchResults?isbn=9780131988422

von Olaf (Gast)


Lesenswert?

> Nach den durchlesen der Antworten stellt sich ja doch heraus das tiefere
> Mathematikkenntnisse  notwendig sind.

Das hier schon erwaehnte Buch von Steven W. Smith laesst sich sehr gut 
lesen. Schon fast als Bett oder Strandlektuere geeignet. :-)

> Ich gehe jetzt von den Mathematikwissen der breiten Masse der
> Bevölkerung aus,auch wenn das hier so einigen nicht gefallen wird.

Och, da brauchst du dein Licht nicht zu sehr unter den Scheffel stellen. 
Geh mal davon aus das die allermeisten Studtenten ein Jahr nach dem sie 
die Uni verlassen haben das auch nicht mehr schaffen wuerden weil sie 
damit sowieso nichts mehr zutun haben oder alles mit Matlab loesen.
Und so manch einer schlingerte damals auch mehr oder weniger gut durch 
die Klausur bloss weil er von morgens bis abends alte Klausuren 
gerechnet hat und nicht weil er Theoretische Nachrichtentechnik 
verstanden hatte.

Allerdings ist es schon sehr hilfreich wenn man gut English kann. So 
spezielle Buecher werden ja normalerweise nur von auf dem Gebiet 
arbeitenden Akademikern geschrieben und in Deutschland muessen sie sich 
da immer ein auf ihr Werk runterholen und das in ihre heilige Paperliste 
eintragen. Da versteht es von selbst das man nicht locker und gut 
schreiben kann. Was soll denn da das Kollegium denken?

Oh..und es koennte vielleicht auch interessant sein sich die Elrad-DVD 
zu kaufen. Da gab es auch die eine oder andere interessante Serie die 
das etwas verstaendlicher erklaert hat. Es gab z.b mitte der 90er Jahre 
eine interessante 13teilige Artikelserie und da was damals nur auf edlen 
Rechnern realisierbar war, rechnet heute ein Microcontroller im 
Sleepmode. :-)


Olaf

von W.S. (Gast)


Lesenswert?

Oliver P. schrieb:
> kennt jemand ein Buch/Script/Tutorial wo das Thema Digitale Filter auf
> verständliche, Praxisnahe Weise vermittelt wird? Also so dass man es
> auch ohne vorheriges Mathestudium versteht?

Ha, dein Problem kenne ich. Wenn das eigene Mathe-Studium schon ein paar 
Jahrzehnte zurückliegt, dann steht man genau vor diesem Problem.

Digitale Filter ist ein mittlerweile riesiger Themenbereich, der nicht 
nur Audio und HF, sondern auch Grafik, Mustererkennung und sonstwas 
umfaßt. Wenn du dich im Netz nach Leseproben umsiehst, fliegt dir von 
allem etwas um die Ohren und das Meiste ist teuer. Da halte ich es für 
einen schlechten Rat, dir zu allererst ein 150 Euro Buch anzuempfehlen.

Mein Rat: grenze hier erst mal dein näheres Interessengebiet ein, also 
ob du dich mit HF-Empfang&Senden oder mit Audio-Bearbeitung oder 
sonstwas befassen willst.

Mein Rat ist, sich erstmal ein paar Leseproben anzusehen, bei einigen 
Buchanbietern kann man auf einige Seiten im Buch schauen und danach 
entscheiden, ob das überhaupt das eigene Interesse trifft.

Was ich dir für den Anfang empfehlen kann, ist "The Scientists and 
Engineer's Guide to Digital Signal Processing", was man hier finden 
kann:
(www.dspguide.com)

Es ist darin garantiert nicht alles interessant für dich, aber lies es 
einfach mal durch, es bleibt in jedem Fall irgendwas Nützliches hängen. 
Glaube aber nicht, direkt nach dem Lesen schon ein nettes Filter selbst 
schreiben zu können. Für DSP's ist entweder Assembler angesagt oder 
evtl. C, aber den Umweg über sowas wie Scilab oder Octave würde ich 
erstmal nicht gehen wollen. Das ist nur eine zusätzliche Einarbeitung in 
etwas, das eventuell auch ein passables Filter hervorbringen kann. Die 
eigentlichen Filteralgorithmen sind ja recht kurz und knapp, aber die 
Berechnung der Filterkoeffizienten scheint zumindest mir das eigentlich 
wichtigste Thema zu sein.

Ansonsten mach dir mal dein Entwicklungsziel klar, überschlage die zu 
erwartende Samplefrequenz und überlege dir daran, ob das per DSP rein 
geschwindigkeitsmäßig zu machen ist, oder ob du dafür echte Hardware, 
sprich FPGA brauchst. In letzterem Fall mußt du nicht nur die 
Filterprinzipien verstehen lernen, sondern auch, wie man sowas parallel 
oder halbparallel in Hardware formuliert. Das ist auch ein weites Feld.

W.S.

von Kurt H. (Firma: KHTronik) (kurtharders)


Lesenswert?

W.S. schrieb:
> Für DSP's ist entweder Assembler angesagt oder
> evtl. C

Ich habe mich vor 2 Jahren gezwungener Maßen in den ADSP-21262 
einarbeiten dürfen und konnte für durchgängig C programmieren. Von 
digitalen Filtern kaum Ahnung und noch nie einen DSP programmiert. 
Allerdings haufenweise Programmiersprachen und Prozessoren in 40 
Berufsjahren kennengelernt :-) und den perfekten Support von Analog 
Devices bemüht.
Fazit: Ein Programm, verteilt auf einen ADSP-21261 und einen ATMega64, 
das aus einer mit dieser Hardware gemessenen Hörkurve einen 
Frequenzgangausgleich mit bis zu 12 IIR-Peaking-Filtern annähert, der 
auf <3dB der Messung entspricht. Dabei habe ich mangels 
Mathe-Verständnis auf Filterkochbücher zurückgegriffen und es hat 
funktioniert.
Sicher kann man das Problem analytischer angehen (FFT-Filter???), aber 
es funktioniert und hat mich motiviert.
Also: einfach mal ein Projekt ausgucken und anfangen. Die Filter kann 
man sogar in Java auf dem PC implementieren und testen :-).
Grüße, Kurt

von W.S. (Gast)


Lesenswert?

OK. Klingt ja richtig gut. Mein Vorschlag: Poste doch davon mal was 
Lehrreiches hier im Forum.

Ich hätte z.B. nen Bedarf (vorerst rein theoretisch) für eine 
Laufzeit-Berechnung von Filterkoeffizienten. Hintergrund: SDR mit 
Bandbreiten von einigen 100 Hz bis ca. 300 kHz, Filter im FPGA, 
Koeffizienten ladbar, so daß man beim Hören auf KW oder VHF oder UHF per 
Knopf Passband-Shift und ZF-Bandbreite sich nach Gusto einstellen kann.

Ich denke mal, sowas als Beispielquelle zu haben wäre auch für Andere 
hilfreich.

Ach ja, wenn man mal diverse Präsentationen anschaut, wo die 
DSP-Funktionalität von Cortex M4 diskutiert wird, dann sieht man, wie 
dort in Assembler an jedem einzelnen Maschinen-Befehl gefeilt wird, um 
einen erträglichen Durchsatz hinzukriegen.

Ähem.. nochwas: den oben genannten Oppenheim-Schafer finde ich nicht 
wirklich nützlich. Die Autoren weigern sich vehement, auch nur den 
geringsten Schritt in die Niederungen der angewandten oder gar 
numerischen Mathematik zu tun und bleiben konsequent auf ihrer rein 
theoretischen Schiene. Für Studenten ist das OK, aber wer vor sich nen 
ADC und nen FPGA und nen DSP auf dem Werktisch zu liegen hat, braucht 
anderes geistiges Futter.

W.S.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Die Jungs hier kommen auch aus der Praxis:
http://musicdsp.org/
Vllt. ist auch hier was bei:
http://www.dspguru.com/taxonomy/term/13

von Sinusspezialist (Gast)


Lesenswert?

W.S. schrieb:
> Ich hätte z.B. nen Bedarf (vorerst rein theoretisch)

+1

Lasst uns einen Lernzirkel bilden.

von Kurt H. (Firma: KHTronik) (kurtharders)


Lesenswert?

Hallo,
W.S. schrieb:
> Ach ja, wenn man mal diverse Präsentationen anschaut, wo die
> DSP-Funktionalität von Cortex M4 diskutiert wird, dann sieht man, wie
> dort in Assembler an jedem einzelnen Maschinen-Befehl gefeilt wird, um
> einen erträglichen Durchsatz hinzukriegen.
Genau um dieses Problem zu vermeiden und meine Fähigkeiten bei der 
Umsetzung in Integerberechnungen nicht zu testen habe ich den 
Shark-Prozessor gewählt, der Hardware-Gleitkomma hat und 200MHz Takt. 
Der Preis spielte bei der Kleinserie (50 Stück) keine Rolle, da das 
Gehäuse und die Platinen deutlich teurer waren :-).
Zum Thema Beispiele:
Ich bin zur Zeit etwas unter Druck, werde aber versuchen einige Teile 
aus dem Code hier zu Posten. Bei einer Lernrunde könnte ich etwas zur 
Toolchain beitragen, aber sicher nicht viel zur Herleitung der 
Implementierung von digitalen Filtern. Das Kochbuch suche ich noch 
einmal raus.
Mein nächstes Projekt für dieses Produkt sind ein Kerbfilter und ein 
erträglicher Limiter/Kompressor.
Grüße, Kurt

von hgrucho (Gast)


Lesenswert?

Hallo,
wenn genügend Englisch-Kenntnisse vorhanden sind, kann man sich das hier 
mal durcharbeiten:
http://www.fourier-series.com/fourierseries2/DFT_tutorial.html
Bei dem Herrn gibt's noch mehr an Animationen, die alle sehr gut gemacht 
und anschaulich sind.
Horst

von Oliver P. (mace_de)


Lesenswert?

Erst mal vielen Dank für die vielen Vorschläge.
Ich hab jetzt verschiedene Bücher und Quellen angetestet.
Letztendlich bin ich dann bei der, mehrfach empfohlenen, DSP-Guide 
hängen geblieben.
Das Englisch macht das Lesen zwar etwas anstrengender, dennoch find ich 
dass das Thema dort sehr anschaulich vermittelt wird. Insbesondere auch 
im Hinblick auf die mathematischen Basics. Es werden nich sofort riesige 
Formelkonstrukte aufgebaut, sondern es wird darauf eingegangen was die 
Formeln bedeuten und wie man sie praktisch umsetzt und anwendet.
Mal sehen ob sich das in den späteren Kapiteln so vortsetzt.

@Kurt Harders
Das Filterkochbuch würde mich auch mal interessieren. Hast du es schon 
wieder gefunden? Wie heißt es?

Grüße Oliver

von Joe (Gast)


Lesenswert?

Einfache Filter werden auf der Seite

http://ups.bplaced.de/Runner.htm

beschrieben.

Joe

von Kurt H. (Firma: KHTronik) (kurtharders)


Lesenswert?

Hallo Oliver,

da ist es: http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

Nach diesen Formeln habe ich sowohl meine Filterbank mit 12 
Einzelfiltern als auch die "Klangregelung" aufgebaut. Hier die 
"generische" Filter-Routine als Beispiel:
1
/*
2
 * GenericFilter.c
3
 *
4
 *  Created on: 17.04.2013
5
 *      Author: kurt
6
 */
7
8
#include "math.h"
9
#include "math_21xxx.h"
10
11
#include "Filterbank.h"
12
#include "GenericFilter.h"
13
14
static int filterType;
15
static float frequency;
16
static float gain;
17
static float quality;
18
19
static float cx0;
20
static float cx1;
21
static float cx2;
22
static float icy1;
23
static float icy2;
24
25
static void lowpass(void);
26
static void highpass(void);
27
static void peaking(void);
28
29
void GenericFilter_init(int type, float f, float g, float q, FilterCoefficients *fc) {
30
  filterType = type;
31
  frequency = f;
32
  gain = g;
33
  quality = q;
34
  switch (filterType) {
35
  case FILTER_LOWPASS:
36
    lowpass();
37
    break;
38
  case FILTER_HIGHPASS:
39
    highpass();
40
    break;
41
  case FILTER_PEAKING:
42
    peaking();
43
    break;
44
  }
45
  fc->cx0 = cx0;
46
  fc->cx1 = cx1;
47
  fc->cx2 = cx2;
48
  fc->icy1 = icy1;
49
  fc->icy2 =icy2;
50
}
51
52
static void lowpass(void) {
53
  float w0 = 2 * PI * frequency / SAMPLE_RATE;
54
  float sinw0 = sin(w0);
55
  float cosw0 = cos(w0);
56
  float alpha = sinw0 / (2 * quality);
57
  float b0 = (1 - cosw0)/2;
58
  float b1 = 1 - cosw0;
59
  float b2 = (1 - cosw0)/2;
60
  float a0 = 1 + alpha;
61
  float a1 = -2*cosw0;
62
  float a2 = 1 - alpha;
63
  cx0 = b0 / a0;
64
  cx1 = b1 / a0;
65
  cx2 = b2 / a0;
66
  icy1 = -a1 / a0;
67
  icy2 = -a2 / a0;
68
}
69
70
static void highpass(void) {
71
  float w0 = 2 * PI * frequency / SAMPLE_RATE;
72
  float sinw0 = sin(w0);
73
  float cosw0 = cos(w0);
74
  float alpha = sinw0 / (2 * quality);
75
  float b0 =  (1 + cosw0)/2;
76
  float b1 = -(1 + cosw0);
77
  float b2 =  (1 + cosw0)/2;
78
  float a0 =  1 + alpha;
79
  float a1 =  -2*cosw0;
80
  float a2 =  1 - alpha;
81
  cx0 = b0 / a0;
82
  cx1 = b1 / a0;
83
  cx2 = b2 / a0;
84
  icy1 = -a1 / a0;
85
  icy2 = -a2 / a0;
86
87
}
88
89
static void peaking(void) {
90
  float A = pow(10.0, gain / 40.0);
91
  float w0 = 2 * PI * frequency / SAMPLE_RATE;
92
  float sinw0 = sin(w0);
93
  float cosw0 = cos(w0);
94
  float alpha = sinw0 / (2 * quality);
95
  float b0 = 1 + alpha * A;
96
  float b1 = -2 * cosw0;
97
  float b2 = 1 - alpha * A;
98
  float a0 = 1 + alpha / A;
99
  float a1 = -2 * cosw0;
100
  float a2 = 1 - alpha;
101
  cx0 = b0 / a0;
102
  cx1 = b1 / a0;
103
  cx2 = b2 / a0;
104
  icy1 = -a1 / a0;
105
  icy2 = -a2 / a0;
106
}

von Reinhard (Gast)


Lesenswert?

Hab jetzt nicht den ganzen Thread gelesen,

aber folgenden Link finde ich persönlich sehr gut:

http://www.dspguide.com/

von Sascha (Gast)


Lesenswert?

Ich selber arbeite im Audiobereich, da finde ich das hier mmer noch gut 
und nützlich:
"Digital sound processing tutorial for the braindead!"
http://yehar.com/blog/?p=121

von Andreas D. (rackandboneman)


Lesenswert?

Ich finde es immer faszinierend...


...wie oft sich sehr komplizierte Theorie auf einige Seiten Anleitungen, 
Dreisätze und Praxistipps reduzieren lässt....


...und wie lange es oft dauert bis es einer tun will und/oder tut :)

von Markus (Gast)


Lesenswert?

Hallo Leute,

Ich hatte für ein Audioprojekt mal einen hochpass Filter  implementiert 
und habe mich zur Berechnung der Koeffizienten auch an die dsp-cookbook 
Seite gehalten.

Bin mir aber nicht ganz sicher ob das 100% passt.

Wollte einen extrem steilen 100 Hz Hochpass.

Schlussendlich hat er aber das Signal etwas verzerrt und noch deutlich 
Frequenzen unter 100 Hz durchgelassen. :(

von Sascha (Gast)


Lesenswert?

DSP-Cookbook (RBJ) sind Biquad-Filter, zweite Ordnung. Somit 
12dB/Oktave. Definiere nun 'extrem steil'... ;)

'verzerrt'??? Du meinst sicher den Phasengang, oder?

Das ist alles keine Hexerei, wenn man ein wenig den Kopf benutzt. 
Deswegen auch der Link auf die Seite von Olli Niemitalo (yehar). Wenn du 
das damit nicht hinbekommst, lass das Thema einfach.

von W.S. (Gast)


Lesenswert?

Reinhard schrieb:
> http://www.dspguide.com/

Ja, die dortige Doku ist wirklich gut - jedenfalls besser als das meiste 
andere was man so im Netz findet, aber an einigen Stellen kommt der 
Autor dann doch ins Überfliegen. Beispiel: Lies dir mal seine 
"Erklärung" der FFT durch, also "How the FFT works" (Ch 12, Seite 228). 
Eine nette Grafik, wie das Umsortieren der Samples zu erfolgen hat - 
aber eine völlig in die Hose gegangene Erklärung über den Sinn der 
Aktion. Er hätte besser geschrieben "macht euch keine Gedanken über den 
innewohnenden Sinn, sondern nehmt die Umsortierung einfach so hin, wie 
sie ist - als eine Art Trick aus der Kiste der die FFT-Erfinder...". Das 
wäre genauso hilfreich gewesen. Glücklicherweise gibt es in jedem 
Kapitel BASIC-Beispiele, aus denen man das wie entnehmen kann, wenn es 
mit der Erklärung des warum mal hakelt.

W.S.

von Digi Talo (Gast)


Lesenswert?

Oliver P. schrieb:
> kennt jemand ein Buch/Script/Tutorial wo das Thema Digitale Filter auf
> verständliche, Praxisnahe Weise vermittelt wird? Also so dass man es
> auch ohne vorheriges Mathestudium versteht?
Mit Verlaub,

... das Vorgehen, digitale Repräsentationenen von analogen Signale 
zuzulassen, ist bereits ein virtuelles Arbeiten und die sich daran 
anschliessende Prozessierung derselben ist eine theoretische Behandlung 
- auch, wenn die praktischen Umsetzungen wieder Programiertätigkeiten 
erfordern. Du wirst es nicht schaffen, Dich damit zu befassen, ohne dei 
Theorie zu bemühen, denn die Theorie IST die Bearbeitung. Und die 
Mathematik ist die Sprache. Das gleicht dem Versuch, den Sinn englischer 
Lyrik zu verstehen, ohne die Sprache lernen zu wollen.

Wenn Du so arbeiten willst, bleibt Dir nichts anders, als einen 
Filterdesigner zu nehmen und den output einfach blind zu nutzen.

von Oliver P. (mace_de)


Lesenswert?

Wie bereits erwähnt, geht es mir nicht darum das Thema ohne Theorie zu 
bewältigen sondern darum dass die Theorie ohne hochtrabende komplzierte 
Mathematik rüber gebracht wird.
Dass das möglich ist zeigt die DSP-Guide ja eindrucksvoll. Bislang fand 
ich dort alles nachvollziehbar und verständlich.

von ndb (Gast)


Lesenswert?

Ich finde das bereits jahrealte Buch "Digital Filters" von Hamming 
bildet einen guten Einstieg.
Es ist relativ kompakt und grosse mathematische Vorkentnisse werden 
nicht vorausgesetzt, bzw. es wird jeweils noch kurz kreuzverwiesen 
wie/wo die entsprechende Mathematik nachzuforschen wäre.

http://www.amazon.com/Digital-Filters-Dover-Mechanical-Engineering/dp/048665088X

von W.S. (Gast)


Lesenswert?

Digi Talo schrieb:
> Du wirst es nicht schaffen, Dich damit zu befassen, ohne...

Nanana, du schreibst ziemlich hochtrabend. Richtig ist, daß man beim 
Schreiben eines Artikels oder Buches auf unterschiedlichen 
Abstraktionsebenen herumhampeln kann.

Das fängt beim Benutzen verschiedenster, unter Mathematikern mehr oder 
weniger üblicher Schreib-Konventionen und grafischen Darstellungen an.

Lies du mal den Landau-Lifschitz oder den Macke, dann weißt du, daß man 
ohne erhebliche Vorkenntnisse der grafischen Darstellungsart der Formeln 
(also ohne vorheriges Mathe-Studium) mit diesen Büchern herzlich wenig 
anfangen kann, denn man versteht nicht die Sprache der Darstellung. 
Leute aus ETechnik/Elektronik sind da bereits außen vor. Das betrifft 
NICHT den Inhalt, sondern die Form der Darstellung. Der Inhalt kommt 
erst nach dem Verstehen der Darstellungsform.

Also: Man kann auch relativ komplizierte Dinge in eher einfacheren und 
damit allgemeinverständlichen Formen darbieten und erklären. Das geht. 
Und es wurd hier dediziert danach gefragt. Es geht NICHT darum, ohne 
jegliches Verständnis ein Kochrezept für irgend ein Filter zu kriegen, 
sondern um Darstellung auf verständliche Weise, so daß man ohne breite 
Vorkenntnis solcher Dinge wie mathematischer Formeldarstellungen es sich 
per Selbststudium aneignen kann.

Wir sind hier in einem recht programmierlastigen Forum, also wäre eine 
an verständliche programmiersprachenartige Formeldarstellung für Viele 
recht hilfreich, da leicht verstehbar.

Klaro?

W.S.

von Erklärbärin (Gast)


Lesenswert?

W.S. schrieb:
> Klaro?

Du schreibst in einer Weise, also hättest Du genau verstanden, was der 
TE möchte und was die Entgegnungen oben der Beitragenden sagen möchten, 
doch IMHO ist das nicht der Fall: Was Du schreibst, ist zwar in sich 
stimmig, trifft aber hier den Kern nicht. Hier ist die Form der 
Darstellung wohl kaum das Problem.

Der Punkt ist der, dass man die Vorgehensweise hinter der digitalen und 
Verarbeitung verstehen muss, weil sie eben in sich etwas Abstraktes ist. 
Das sind also erstens ->Inhalte und zeitens eine -> Theorie, also eine 
Art einen praktischen Sachverhalt aufzufassen.

Ob einer das alles nun mehr oder weniger verklausuliert darstellt, ist 
sicher eine Frage, ob der andere schneller oder langsamer (oder gar 
nicht) begreift, ja, aber es ändert nichts an dem grundsätzlichen 
Umstand.

Und ganz konkret: Digitale Filter machen kaum mehr, als addieren und 
zwischendrin ein wenig multiplizieren. Von daher gibt es kaum eine 
Möglichkeit, da grossartige verschleiernde Formeln einzuführen.

Meine Meinung: Digitale Filter sind vom Level her mit 
Mittelstufenmathematik zu bewältigen und zu verstehen. Von daher wäre 
das nicht einmal ein PAradebeispiel für eine Anwengung, wo es um 
"akademisches" ginge, wie in der eingangs gestellten Frage suggiert 
wird.

von Oliver P. (mace_de)


Lesenswert?

>Du schreibst in einer Weise, also hättest Du genau verstanden, was der
>TE möchte...
W.S. hat mein Anliegen, ehrlich gesagt, ziemlich auf den Punkt gebracht.
>Digitale Filter sind vom Level her mit
>Mittelstufenmathematik zu bewältigen und zu verstehen.
Das ist in der Tat so. Nur leider nicht wenn sie, wie allgemein üblich, 
mit Oberstufenmathematik erklärt werden.
Abefr wie schon gesagt, hab ich die passende Lektüre mit der DSP-Guide 
ja gefunden.

von W.S. (Gast)


Lesenswert?

Erklärbärin schrieb:
> Meine Meinung: Digitale Filter sind vom Level her mit
> Mittelstufenmathematik zu bewältigen und zu verstehen. Von daher wäre
> das nicht einmal ein PAradebeispiel für eine Anwengung, wo es um
> "akademisches" ginge, wie in der eingangs gestellten Frage suggiert
> wird.

Ach ja?
Nun, ich nehme dich mal bei deinem eigenen Worte: Formuliere doch mal 
mittels "Mittelstufenmathematik" einen simplen 3 stufigen CIC-Dezimator. 
Du weißt sicherlich, daß jede der 3 ersten Stufen dieses Dingens eine 
Polstelle auf Null hat, ja? Und nun erkläre mal, warum und unter 
welchen konkreten Umständen dieser Dezimator dennoch funktioniert - 
ebenfalls wieder mittels "Mittelstufenmathematik".

Du bist ja so großartig - also: Mach mal!

W.S.

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.