Phaseninkrement

Gast #746661
Lesenswert?

Hallo, für die DSP Programmierung benötige ich den Sinus.
Die Berechnung der Werte mit einer Sinus Funktion ist für den DSP zu 
rechenintensiv.
Darum hab ich erfahren, dass man mit einem Phaseninkrement diese Sinus 
Werte damit berechnene kann. Dies soll deutlich schneller sein.
Kann mir einer das Prinzip des Phaseninkrementes erklären?

deltaPHI = w*t=2*pi*fo*t

Mir ist unklar wie man die Werte berehcnen kann.
#746765
Lesenswert?

Jens wrote:
> Kann mir einer das Prinzip des Phaseninkrementes erklären?
>
ja.

Beispiel: nimm die komplexe Zahl (1+i*0) . Die hat den Betrag eins und 
den Winkel 0°. Jetzt nimm ne komplexe Zahl (1+i*1)/sqrt(2), die hat den 
Betrag 1 und den Winkel 45°. Beide Zahlen miteinander multipliziert 
liefert Dir die Zahl  (1+i*1)/sqrt(2), also die Zahl 1+i*0 um das 
Phaseninkrement 45° gedreht. Das achtmal gemacht und Du bist einmal um 
den Kreis rum. Das geht mit beliebigen 'Phaseninkrementen'. Die erste 
Komponente der komplexen Zahl, die Du drehst, ist Dein Cosinus, die 
zweite Dein Sinus. Das kostet eine komplexe Multiplikation und heißt 
Cordic.

gute Nacht
Detlef
#747514
Lesenswert?

Ja die Frage ist etwas unpräzise gestellt.
Zur digitalen Sinuserzeugung gibt es nicht so viele Möglichkeiten, wie 
schon genannt:
* Sinustabelle auslesen, entweder mit fester Schrittweite oder feiner 
gestuft mit Jitter nach dem DDS-Prinzip.
*Dann die Berechnung, ohne Tabelle, dazu bietet sich der Cordic 
Algorithmus an.
*Und schließlich die Filterung, aus einer Rechteckschwingung wird durch 
Tiefpassfilter auch ein Sinus. Digital bieten sich dazu Digitalfilter 
wie FIR oder IIR an.
Gast #748625
Lesenswert?

Mir scheint hier das Thema Phasenincrement ein wenig untergegangen.

1. Es wird eine Drehmatrix A gebildet mit z.B einem Winkel von 5 Grad, 
sozusagen das Phasenincrement
2. Wir nemen ein Signal s(n), wobeil s(0) = 1
3. Das Signal wird mit der Drehmatrix schrittweise gedreht s(n+1)=A*s(n)
4. Das Sinussignal ist Real(s(n))

Kleines Problem bei der rekursiven Rechnung: wachsende Rundungsfehler 
durch beschränkte Genauigkeit
Lösungsmöglichkeit: Signal hin und wieder normieren
Gast #754518
Lesenswert?

ich hab da auch mal eine frage zu :

wenn ich einen sinus in einer tabelle ablege (habe es mir einfach 
gemacht und einen kompletten sinus-zug abgelegt) und diese tabelle 
mittels dds auslese und an einen audio-dac gebe habe ich zwar einen 
sinus, aber der ist natürlich nicht so genau (aufgelöst), da ich ja nur 
eine endliche (begrenzte) anzahl an sinus-werten (sütztstellen wenn man 
so will) habe. diese ungenauigkeit ist  messbar (und auch hörbar, je 
nach frequenz).
meine frage ist nun ob es eine faustformel gibt mit der sich anhand der 
anzahl der werte der sinustabelle und der samplerate die qualität des 
signals (in form von thd) berechnen lässt. gerade bei sinus fallen 
harmonische am ehesten auf.
hintergrund ist der das ich (mal wieder das audio-projekt) eine 
wavetable eingebaut habe um mehr als nur 2 wellenformen (sägezahn, 
rechteck) zur verfügung zu haben.
habe also ein ram, und dieses ram hat 1024 worte (16-bit). ich überlege 
nun ob ich 1, 2 oder 4 verschiedene wellenformen ablegen kann. je 
weniger wellenformen, desto "genauer" wird die wiedergabe.
allerdings kostet es halt auch speicher (und der ist leider sehr 
begrenzt) und für einen synthesizer sollten meiner meinung nach schon so 
zw. 4-6 wellenformen auswählbar sein.
bei wellenformen die ohnehin schon einige harmonische haben ist das 
nicht ganz so kritisch, wenn ich aber an einen sinus-bass denke dürfte 
dieser nicht so toll klingen bei nur 256 sinus werten.
gibt es sowas wie eine fausformel für so einen fall (bezogen auf thd) ?

gruß
rene

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren