Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Make-Grafik
Anmeldungsdatum: 08.10.2012 Beiträge: 29
|
Verfasst am: 30.12.2013, 16:08 Titel: CORDIC Algorithmus |
|
|
Schönen guten Tag Community!
Ich suche ein paar Leute die sich mit den CORDIC Algorithmus auskennen oder zumindest mit dem Begriff was anfangen können. Mich interessiert dieser und ich versuche schon eine ganze Weile ihn zu verstehen. Jedoch scheitert es weil ich meist die ganzen Formeln (siehe z.B. Wikipedia) in den Literaturen verstehe. Ich könnte Hilfe gebrauchen den Algorithmus zu verstehen.
Ich habe bisher mehr oder weniger herausgefunden, dass der Algorithmus auf einem Vektor basiert der um einen Punkt rotiert. Aber auch da bin ich mir nicht ganz sicher.
Vielleicht kennt jemand ja gute Internetseiten die den Algorithmus leicht verständlich erklärt? Sie dürfen selbstverständlich auf Englisch sein.
Ich bitte euch um ein wenig Rücksicht wenn ich auf Anhieb nicht alles verstehe. Ich entschuldige mich ganz frech mit meinem Jungen Alter (16 ) und der Unerfahrenheit.
Falls weitere Fragen auftauchen werde ich versuchen sie so verständlich wie möglich zu schreiben. Hab leider das Problem, dass ich mich oft falsch ausdrücke und andere dadurch nicht wissen was gemeint ist/war. _________________ Hmn :/ Mal schaun was es bringt... |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1278 Wohnort: Ruhrpott
|
Verfasst am: 30.12.2013, 22:20 Titel: |
|
|
Hallo Make-Grafik!
Der CORDIC-Algorithmus ist so etwas wie sukzessive Approximation für Winkel.
Im Prinzip funktioniert er etwa folgendermaßen: In einem Koordinatensystem hast du einen Vektor, den du um einen bestimmten Winkel drehen sollst. Dazu drehst du den Vektor in einer vorgegebenen Anzahl von Schritten zuerst um 90 Grad, dann um 45 Grad, dann um 22,5 Grad, dann um 11,25 Grad usw., immer um die Hälfte des vorangegangenen Winkels, entweder rechts- oder linksherum auf den Endwinkel zu. Parallel dazu addierst bzw subtrahierst du jedesmal (unter Berücksichtigung der Regeln der Vektoraddition) die zugehörigen x- bzw. y-Werte der Teilwinkel, die du -und das ist der eigentliche "Trick" dabei- vorher berechnet und in einer Tabelle abgelegt hast.
Und praktischerweise funktioniert dieses Verfahren auch in umgekehrter Richtung.
Am anschaulichsten wird dies meiner Meinung nach hier beschrieben.
Weitere Links:
http://www.matheboard.de/archive/383885/thread.html
http://www.wiete.com.au/journals/GJEE/Publish/vol8no3/Risse.pdf
http://digdok.bib.thm.de/volltexte/2009/4148/pdf/CORDIC_Algorithmus.pdfhttp://yasd.de/htwk/logik/Cordic.pdf
Gruß
grindstone
EDIT: sukzessive Approximation ==> "schrittweise Annäherung". Verfahren zur Digitalisierung von analogen Messwerten. _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1278 Wohnort: Ruhrpott
|
Verfasst am: 31.12.2013, 00:00 Titel: |
|
|
@dreael: Entschuldige, aber Make-Grafik hatte ausdrücklich nach einer verständlichen Erklärung gefragt.
Der Wikipedia - Artikel ist eine jener "von-Mathematikern-für-Mathematiker" - Erklärungen, die zwar erschöpfend und präzise, für Nichtmathematiker aber weitgehend unverständlich sind.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
Make-Grafik
Anmeldungsdatum: 08.10.2012 Beiträge: 29
|
Verfasst am: 31.12.2013, 19:28 Titel: |
|
|
Super!
Vielen Dank für die ganzen Links.
Ich muss mich jetzt erst einmal einlesen.  _________________ Hmn :/ Mal schaun was es bringt... |
|
Nach oben |
|
 |
Make-Grafik
Anmeldungsdatum: 08.10.2012 Beiträge: 29
|
Verfasst am: 01.01.2014, 07:59 Titel: |
|
|
Ich weiß dass man mithilfe des CORDIC Algorithmus folgende Funktionen implantieren kann:
- Sinus
- Cosinus
- Tangens
- Exponentialfunktion
- Logarithmusfunktion
- Arcus- und Areafunktionen
- Quadratwurzel
- Multiplikation, Division
Zudem weiß ich, dass dies durch einfache Bitverschiebung (SHL | SHR) oder Bitadditionen möglich ist.
Das bedeutet demnach dass der Algorithmus die oben genannten Funktionen sinngemäß nicht verwendet.
Mein Ziel ist es, alle oberen genannten Funktionen mithilfe der Bit Funktionen in FreeBASIC zu implantieren.
Aber immer schön der Reihe nach.
Zuerst muss ich das Grundprinzip verstehen.
Das habe ich auch bisher, jedoch ist mir nicht ganz klar wie ich nun die x bzw. die y Koordinate berechne.
Zum Beispiel habe ich den Vektor (10|0) und möchte ihn um 12.5° drehen.
Ich habe das einmal mit einem Taschenrechner ausgerechnet und das Endergebnis ist demnach (9,762|2,164)
Oder als Code:
Code: | Dim As Double x = 10
Dim As Double y = 0
Dim As Double w = 12.5
Dim As Double pi = ACos(0) * 2
Dim As Double dr = 180 / pi
Dim As Double t
t = x
x = Cos(w/dr) * x + -Sin(w/dr) * y
y = Sin(w/dr) * t + Cos(w/dr) * y
Print Int(x*1000)/1000
Print Int(y*1000)/1000
Sleep |
Schön und gut, allerdings ist mir nicht ganz klar wie ich auf das gleiche Ergebnis nur mithilfe der Teilwinkel komme...
Ich schätze das ganze muss vom Grundgerüst in etwa so aussehen:
Code: | Dim As Double x = 10
Dim As Double y = 0
Dim As Double w = 12.5
Dim As Double d1 = 0
Dim As Double d2 = 90
While w <> d1
If w < d2 Then
d1 += d2
' x = ...
' y = ...
Else
d1 -= d2
' x = ...
' y = ...
EndIf
d2 /= 2
Wend
Print Int(x*1000)/1000
Print Int(y*1000)/1000
Sleep |
Allerdings hänge ich nun beim berechnen der x und y Koordinate.
Vielleicht weiß da ja jemand weiter ? _________________ Hmn :/ Mal schaun was es bringt... |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 03.01.2014, 15:20 Titel: |
|
|
Der Trick bei einer Software-Implementierung von CORDIC ist es, eine LUT (Look-Up-Table) für die Teilwinkel zu haben. Mit den Binärops kannst du natürlich nur arbeiten, wenn du Festkommaarithmetik (siehe z.B. https://en.wikipedia.org/wiki/Q_(number_format) ) benutzt. Bitshifts auf IEEE 752 Floats haben keine mathematische Bedeutung (es sei denn man heißt Carmack). |
|
Nach oben |
|
 |
|