Forum: Digitale Signalverarbeitung / DSP / Machine Learning DSV Programmieren -> Absoluter Anfänger


von k-a (Gast)


Lesenswert?

Hi an alle,

ich weiß nicht so recht ob meine Frage hier wirklich korrekt gelandet 
ist.
Ich bin absoluter Neuling was das Programmieren mit DSV bzw. DSV selbst 
angeht.

Hab da zuerst mal 2 Fragen:
1.) Wie muss ich aus Programmierersicht das digitale Signal x[n] 
interpretieren?
    Der Wert zum Zeitpunkt n oder ein komplettes Signal?

2.) Ich habe ein Audiosignal welches in 160byte großen Blöcken 
reinkommt.
    Wie mache ich hiermit eine FFT? Was bedeutet die Ordnung bei einem
    Filter(FIR). Und wie bekomme ich die Koeffizienten für einen solchen
    Filter?

Ich habe bereits versucht mich über einige Bücher autodidaktisch darein 
zu arbeiten. Aber verstehen tu ich oft nur Tschutschu:o).

Für eure Hilfe wäre ich echt sehr dankbar.

Gruß
k-a

: Verschoben durch Admin
von Mark B. (markbrandis)


Lesenswert?

k-a schrieb:
> 1.) Wie muss ich aus Programmierersicht das digitale Signal x[n]
> interpretieren?
>     Der Wert zum Zeitpunkt n oder ein komplettes Signal?

x[0]: Wert des Signals zum Abtastzeitpunkt 0
x[1]: Wert des Signals zum Abtastzeitpunkt 1
x[2]: Wert des Signals zum Abtastzeitpunkt 2
.     .                                    .
.     .                                    .
.     .                                    .
x[n]: Wert des Signals zum Abtastzeitpunkt n

Welche Zeitspanne tatsächlich zwischen zwei Signalwerten liegt, hängt 
von der Abtastrate ab.

> 2.) Ich habe ein Audiosignal welches in 160byte großen Blöcken
> reinkommt.
>     Wie mache ich hiermit eine FFT?

Indem Du das Signal vom Zeitbereich in den Frequenzbereich 
transformierst, und zwar schnell ;-)
http://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation

> Was bedeutet die Ordnung bei einem Filter(FIR).

Filterordnung = Anzahl der Speicherstellen eines FIR-Filters
Je höher die Filterordnung, desto besser ist das Filter (besser = höhere 
Flankensteilheit), aber um so mehr Rechenzeit benötigt es auch.

> Und wie bekomme ich die Koeffizienten für einen solchen Filter?

Zum Beispiel aus MATLAB. Oder GNU Octave. Man gibt die Parameter vor wie 
z.B. die Grenzfrequenz und die Software errechnet einem dann die 
Koeffizienten, die man dann z.B. in einem DSP verwenden kann.

von k-a (Gast)


Lesenswert?

Mark Brandis schrieb:
> x[0]: Wert des Signals zum Abtastzeitpunkt 0
> x[1]: Wert des Signals zum Abtastzeitpunkt 1
> x[2]: Wert des Signals zum Abtastzeitpunkt 2
> .     .                                    .
> .     .                                    .
> .     .                                    .
> x[n]: Wert des Signals zum Abtastzeitpunkt n

Dann hab ich mir das ja schon mal richtig gedacht.

Jetzt zu den Themen warum ich mir das Buch "DSV für absolute 
Volldummies" wünschen würde:o).

Mark Brandis schrieb:
> das Signal vom Zeitbereich in den Frequenzbereich

Was ist denn softwaretechnisch gesehen der Zeitbereich und was der 
Frequenzbereich? Gibt es Beispiele die das evtl. mal konkret an einem 
Signal darstellen zum Beispiel mit der FFT? Also sprich 
Zeitbereichswerte werden reingegeben und Frequenzbereichswerte kommen 
raus? Irgendwie brauch ich sowas. Nur anhand von Formeln hab ich meist 
ein Verständnisproblem.

Mark Brandis schrieb:
> Filterordnung = Anzahl der Speicherstellen eines FIR-Filters

Was ist mit Speicherstellen gemeint?

Ich weiß, ich weiß voll der Nerd hier:o).

von Loup (Gast)


Lesenswert?

Hallo auch!

k-a schrieb:
> Jetzt zu den Themen warum ich mir das Buch "DSV für absolute
> Volldummies" wünschen würde:o).

So ging es wohl jedem am Anfang. Der Themenbereich ist halt nicht so 
trivial. Auch wenn manche Profs gerne sagen: "Wie man sofort sieht..." 
;-)
Eine gute Einführung gibts unter: http://www.dspguide.com/ Allerdings 
auf Englisch...

> Was ist denn softwaretechnisch gesehen der Zeitbereich und was der
> Frequenzbereich?

Beides ist einfach ein Array. Zeitbereich steht ja oben schon: x[0] x[1] 
usw.
Und Frequenzbereich:
y[0] : Anzahl der Gleichanteile im Signal
y[1] : Anzahl der Komponenten mit Frequenz 1 im Signal
y[2] : Anzahl der Komponenten mit Frequenz 2 im Signal
  .
  .
  .
y[N] : Anzahl der Komponenten mit Abtastfrequenz

> Gibt es Beispiele die das evtl. mal konkret an einem
> Signal darstellen zum Beispiel mit der FFT? Also sprich
> Zeitbereichswerte werden reingegeben und Frequenzbereichswerte kommen
> raus? Irgendwie brauch ich sowas. Nur anhand von Formeln hab ich meist
> ein Verständnisproblem.

Du meinst die Berechnung? Da ist es aber einfacher sich statt der FFT 
die DFT anzusehen, da die FFT ja nur ein trickreicher Algorithmus ist um 
die DFT durchzuführen. Ist aber trotzdem schwer zu Erklären und zu 
Verstehen. Braucht man aber normalerweise garnicht, da meistens nur 
fertige Routinen benützt werden.
Ich glaube es gab hier im Forum auch mal einen Thread mit einer 
Erklärung...

Freundliche Grüsse
Loup

von Mark B. (markbrandis)


Lesenswert?

Loup schrieb:
> Beides ist einfach ein Array. Zeitbereich steht ja oben schon: x[0] x[1]
> usw.
> Und Frequenzbereich:
> y[0] : Anzahl der Gleichanteile im Signal
> y[1] : Anzahl der Komponenten mit Frequenz 1 im Signal
> y[2] : Anzahl der Komponenten mit Frequenz 2 im Signal
>   .
>   .
>   .
> y[N] : Anzahl der Komponenten mit Abtastfrequenz

Wobei... auch bei rein reellen Eingangswerten (wenn also ein Zahlenwert 
im Array für einen Signalwert ausreicht) erhält man ja durch die 
Transformation ein komplexes Spektrum. Das Ausgangs-Array müsste dann 
also doppelt so viele Zahlenwerte aufnehmen, wenn man die nicht einfach 
untern Tisch fallen lassen will ;-)

von Loup (Gast)


Lesenswert?

Oh ja, stimmt!

von k-a (Gast)


Lesenswert?

Loup schrieb:
> Eine gute Einführung gibts unter: http://www.dspguide.com/ Allerdings
> auf Englisch.

Danke @ Loup....das Buch ist echt klasse.
Ich verstehe mal was der Autor mir erklären will.
Ich hab bereits 2, 3 Bücher in Deutsch über die DSV versucht zu lesen.
Warum können deutsche Autoren nicht so gut erklärend schreiben wie 
englische?
Das ist mir auch schon im IT Bereich aufgefallen, die deutschen müssen 
sich immer so gequält fachlich ausdrücken, das man es kaum verstehen 
kann. Warum geht es nicht auch so verständlich???

Loup schrieb:
> Beides ist einfach ein Array. Zeitbereich steht ja oben schon: x[0] x[1]
> usw.
> Und Frequenzbereich:
> y[0] : Anzahl der Gleichanteile im Signal
> y[1] : Anzahl der Komponenten mit Frequenz 1 im Signal
> y[2] : Anzahl der Komponenten mit Frequenz 2 im Signal
>   .
>   .
>   .
> y[N] : Anzahl der Komponenten mit Abtastfrequenz

Also praktisch wie ein Histogram?
Wenn du mit Gleichanteile meinst die Anzahl wie oft z.B ein Sample mit
dem Wert 50 vorkommt!

Loup schrieb:
> Braucht man aber normalerweise garnicht, da meistens nur
> fertige Routinen benützt werden

Da bin ich dann wohl zu ehrgeizig...bevor ich Routinen einfach benutze 
möchte ich schon verstehen was dort passiert.

Aber erst mal besten Dank für eure Mühen...hab immer gedacht man kann 
alles autodidaktisch lernen aber in diesem Bereich ist es echt mal 
schwer.

von k-a (Gast)


Lesenswert?

Moin, Moin

eine Frage habe ich da noch. Wie lange dauerts denn im Durchschnitt bis 
man einigermaßen gut in die DSV eingearbeitet ist?

Gruß
k-a

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

k-a schrieb:
> Also praktisch wie ein Histogram?

Nein, was Loup da geschrieben hat stimmt nicht. Die Ergebnisse der FFT 
sind Gewichtungsfaktoren für die Sinus- und Cosinuskomponenten des 
Signals. In einem Satz lässt sich das nicht erklären, sonst wären eine 
Menge Bücher überflüssig. Hier gibt es eine weitere Anleitung: 
Beitrag "Re: FFT Tutorial für AVR". Neben dspguide.com 
soll ein anderes gutes Buch das von Lyons sein (ISBN 0131089897).

> eine Frage habe ich da noch. Wie lange dauerts denn im Durchschnitt bis
> man einigermaßen gut in die DSV eingearbeitet ist?

Kann man nicht so allgemein sagen, kommt auf deine Vorkenntnisse an.

von Mark B. (markbrandis)


Lesenswert?

Andreas Schwarz schrieb:
> Neben dspguide.com soll ein anderes gutes Buch das von Lyons
> sein (ISBN 0131089897).

Scheint mir kaputt zu sein, der ISBN-Link?
(can't find the server at www.amazo%20%20%20%20%20%20n.de.)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Jetzt geht's wieder.

von Loup (Gast)


Lesenswert?

k-a schrieb:
> Also praktisch wie ein Histogram?
> Wenn du mit Gleichanteile meinst die Anzahl wie oft z.B ein Sample mit
> dem Wert 50 vorkommt!

Andreas Schwarz schrieb:
> Nein, was Loup da geschrieben hat stimmt nicht.

Oh je, da hab ich ja was angerichtet mit meiner extra einfachen 
Erklärung...
Danke @Andreas für die Richtigstellung!

Besteht Interesse an einer Erklärung der DFT in vektorieller Form? Finde 
ich einfacher als die sonst oft benützte Form mit den vielen 
Summenzeichen ;-)

Freundliche Grüsse
Loup

von k-a (Gast)


Lesenswert?

Loup schrieb:
> Besteht Interesse an einer Erklärung der DFT in vektorieller Form?

Na da besteht definitv Interesse:)

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.