|
|
Berechneter Wert auf nächst gelegenen anderen Wert runden |
|
fenderbender |

Forum-Anfänger
|
 |
Beiträge: 49
|
 |
|
 |
Anmeldedatum: 17.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.09.2010, 07:49
Titel: Berechneter Wert auf nächst gelegenen anderen Wert runden
|
 |
Hallo,
ich will einen Wert- und Zeitdiskreten Sinus erzeugen und habe dazu 4096 Werte, die der Sinus annehmen kann.
Momentan habe ich bei der Erzeugung noch
Jetzt soll aber jeder Wert des Sinus einem anderen Wert (als Vektro gespeichert) zugeordnet werden. Momentan noch als for Schleife:
Das dauert aber natürlich Ewig für einen Sinus mit vielen Punkten...
Jemand eine Idee wie es schneller geht?
Danke
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 29.09.2010, 14:02
Titel: Re: Berechneter Wert auf nächst gelegenen anderen Wert rund
|
 |
Hallo fenderbender,
Das Programm wird große Schwierigkeiten haben, da "sinus(i)==j" mit Rundungsfehlern zu kämpfen hat. Wie möchtest Du das in den Griff bekommen - ein ROUND vielleicht?
Soll der Wert von "sinus(i)" überschrieben werden, wenn mehrere passende j-Werte gefunden werden? Wenn nicht, stoppe die innere Schleife nach dem ersten Treffer (==> 50% weniger Rechenzeit) oder lasse die Schleife über 4096:-1:1 laufen und stoppe nach dem größten j mit "break" (==> auch 50% Rechenzeit).
Wie wäre es mit einer Vektorisierung?
Aber wie wäre es denn, wenn man "sinus" gleich als Index nähme?
Gruß, Jan
|
|
|
fenderbender |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 49
|
 |
|
 |
Anmeldedatum: 17.06.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.09.2010, 08:02
Titel: Re: Berechneter Wert auf nächst gelegenen anderen Wert rund
|
 |
|
 |
|
Jan S hat Folgendes geschrieben: |
Das Programm wird große Schwierigkeiten haben, da "sinus(i)==j" mit Rundungsfehlern zu kämpfen hat. Wie möchtest Du das in den Griff bekommen - ein ROUND vielleicht?
|
Ach stimmt, ein FLOOR war schon mal vorgesehen, is beim Debuggen aber verschwunden Danke
Jan S hat Folgendes geschrieben: |
Soll der Wert von "sinus(i)" überschrieben werden, wenn mehrere passende j-Werte gefunden werden? Wenn nicht, stoppe die innere Schleife nach dem ersten Treffer (==> 50% weniger Rechenzeit) oder lasse die Schleife über 4096:-1:1 laufen und stoppe nach dem größten j mit "break" (==> auch 50% Rechenzeit).
|
Es gibt definitiv jeden Wert nur ein einziges mal.
Jan S hat Folgendes geschrieben: |
Wie wäre es mit einer Vektorisierung?
|
Der Tipp mit dem FIND ist gut. Auch wenn die Index-Lösung perfekt ist für das Problem hier, kann ich den FIND-Befehl an anderen Stellen gut brauchen.
Jan S hat Folgendes geschrieben: |
Aber wie wäre es denn, wenn man "sinus" gleich als Index nähme?
Gruß, Jan |
Ja klar... War gestern Montag? Man, logisch gehts so am Schnellsten und Einfachsten. Vielen Dank für den Tipp!!! Das erspart ca 10sek bei einem i5-Prozessor und 4GB-Arbeitsspeicher
Da hätte ich gleich noch eine weitere Optimierungsfrage. Dazu mach ich aber einen neuen Beitrag auf.
Vielen Dank für deine Unterstützung. Läuft echt prima!!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|