Forum: Compiler & IDEs Einer zahl eine feste andere Zahl zuweisen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Markus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich möchte ein paar mathematische Winkelfunktionen verwenden, stehe 
jetzt jedoch vor dem Problem, dass mir die Rechenzeit fehlt.
Es kommt bei der Berechnung nicht umbedingt auf Genauigkeit sondern eher 
auf Geschwindigkeit an.

Ich habe mir es so vorgestellt, dass ich einer Zahl eine definierte 
andere Zahl zuweise. Zum Beispiel möchte ich aus der Zahl 71,1 die Zahl 
0,9154 machen. Eben den Sinus einer Zahl ohne Rechenaufwendige math.h 
Funktion.

Gibt es für soetwas eine Lösung ohne 3600 Cases einzubauen?


Vielen dank schonmal...

von Salewski (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hashes, auch Maps genannt.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Markus schrieb:
> Gibt es für soetwas eine Lösung ohne 3600 Cases einzubauen?

Tabelle. Und Du musst die auch nicht für 3600 Werte aufbauen, 900 Werte 
reichen.

(Ich nehme an, daß Du Sinuswerte mit Zehntelgradauflösung haben 
möchtest)

Für Winkel zwischen 0 und 90° greifst Du direkt auf die Tabelle zu, für 
Winkel zwischen 90 und 180° ziehst Du den Winkel von 90° ab, und für 
Winkel zwischen 180 und 270° ziehst du 180 vom Winkel ab und negierst 
das Ergebnis. Was Du für den vierten Quadranten machen musst, solltest 
Du selbst rausfinden können.

von Markus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
vielen Dank genau das wonach ich gesucht habe

von Dirk B. (dirkb2)


Bewertung
0 lesenswert
nicht lesenswert
901 Werte machen es etwas leichter.
Dann sind 0° bzw. 90° mit in der Tabelle drin und brauchen kein 
Sonderbehandlung.

von Dumdi D. (dumdidum)


Bewertung
0 lesenswert
nicht lesenswert
Oder 91 Werte und linear interpolieren.

von Reinhard M. (reinhard_w)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Markus,

Falls Dir jetzt der Speicherplatz knapp geworden sein sollte, könntest 
Du Dir alternativ auch noch den CORDIC Algorithmus anschauen. Gute 
Erklärungen dazu sind leicht zu finden.

(Ich finde ihn außerdem irgendwie amüsant.)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.