mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Kehrwert im DSP


Autor: Philipp M. (matei)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möcht im DSP dividieren. Das brauch aber mehrere Rechenschritte, 
daher wollt ich fragen ob und wie ich den Kehrwert in C programmieren 
kann?

Philipp

Autor: Udo Schmitt (urschmitt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube ich versteh dich nicht ganz.
ich würde blauäugig sagen:
y = 1/x;

Autor: Philipp M. (matei)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, vielleich blöd gefragt.
Ich möchte die Division vermeiden und mochte durch z.B. ein Bitshifting 
oder Änderung der Bitreinfolge den Kehrwert einer Zahl bilden, wenn das 
möglich ist, und dann diese multiplizieren.
Erhoffe mir eine Zeitersparnis, durch weniger Rechenoperationen.

Philipp

Autor: dito (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest alle Kehrwerte in einer Lookup-Tabelle speichern. Anders 
geht's glaube ich nicht.

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Philipp M. schrieb:
> Erhoffe mir eine Zeitersparnis, durch weniger Rechenoperationen.

Das klingt wieder nach Optimierungsrennen mit dem Compiler.
Aber so als Vorschlag:
Statt
a / b
rechnest du
a * (c / d)
wobei c / d = 1 / b (zumindest ungefähr)
Durch geschickte Wahl von d lässt sich die Division dann durch 
rechtsschieben ersetzen (Potenz von 2).
:-)

Autor: Udo Schmitt (urschmitt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke mal daß die Division (von was eigentlich) im Compiler schon 
recht optimal umgesetzt worden ist (Speziallösungen siehe die vorherigen 
Posts)
Ich denke daß Du da nicht viel rausholen kannst.
Das Bottleneck ist meistens nicht da wo man es vermutet :-)
Viel Erfolg beim Suchen.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Udo Schmitt schrieb:
> Ich denke mal daß die Division (von was eigentlich) im Compiler schon
> recht optimal umgesetzt worden ist

Das Problem ist dass sich der Compiler exakt an den C-Standard halten 
muss, und dadurch in seiner Optimierung eingeschränkt ist.

Manche DSPs haben Befehle für Logarithmus/Exponentialfunktion (mit 
eingeschränkter Genauigkeit), damit lässt sich ein Kehrwert effizient 
berechnen.

Autor: Philipp M. (matei)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Anregungen.

Werd mal ein bisien ausprobieren. Sitz aber grad noch an einem anderem 
Problem.

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.