|
|
|
Rechenzeit und Speicherbedarf |
|
| Toni88 |

Forum-Anfänger
|
 |
Beiträge: 15
|
 |
|
 |
Anmeldedatum: 23.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.05.2012, 22:20
Titel: Rechenzeit und Speicherbedarf
|
 |
Hey,
habe eine allgemeine aber dennoch wie ich finde komplizierte frage.
Es geht darum welcher Ansatz der beiden Ansätze besser für Rechenzeit und Speicher ist.Begründung wäre natürlich super!
1.
-Man habe eine beliebige n x m Matrix die für jeden Punkt auf einem Gitter einen wert ... speichert
-in der Matrix sind variablen für die Funktion f(...)=z gespeichert
-die Funktion ist für jeden Punkt exakt berechenbar
-daraus irgendwie(wie am besten ? schleifen?)eine Matrix mit den werten z für das Gitter generieren
2
-Man hat eine allgemeine Matrix die die Funktionswerte von z in einem relevanten Gebiet mit gewissen Schrittweiten beschreibt.
-jetzt wird das ganze mit der eingangsmatrix über Interpolation gelöst?ist das besser oder nur unnötig kompliziert?
-daraus irgendwie(wie am besten ? schleifen?)eine Matrix mit den werten z für das Gitter generieren
Wäre für jeden Rat dankbar wenn man das versteht was ich da schreibe
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.05.2012, 09:43
Titel:
|
 |
Hallo,
ich zumindest verstehe das nicht.
Was ist eine "allgemeine Matrix"? Wo ist der entscheidende Unterschied zwischen den beiden Ansätzen?
Zudem sollte man auch immer die Größe des Problems (z.B. hier: in welcher Größenordnung sind m und n?) berücksichtigen.
Wenn der Aufwand vertretbar ist, kann man auch mal beides implementieren und vergleichen.
Grüße,
Harald
|
|
|
|
| Toni88 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 15
|
 |
|
 |
Anmeldedatum: 23.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.05.2012, 12:00
Titel:
|
 |
danke für deine Antwort
ich versuche es mal anders.
-Die Matrizen sind in etwa so (300x50) bis vlt maximal um es mal genauer zu rechnen 600x100
Der unterschied:
Bei dem einen verfahren wird für jede stelle der Ergebnismatrix interpoliert um an seine Ergebnisse zu komme
Bei dem anderen verfahren wird über eine analytische Gleichung(zb.exp(x)*log(y)...eigentlich nichts wildes) für jedes Element der wert in der Ergebnismatrix berechnet
das ganze soll über schleifen laufen, oder kann man das eleganter lösen?
kurz interpolieren vs. Gleichung lösen
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.05.2012, 12:06
Titel:
|
 |
Hallo,
wenn du eine Formel hast, wird das wohl schneller sein. Wenn du keine hast oder es einen Aufwand bedeutet, sie zu bekommen: interpolieren.
Und wie gesagt: im Zweifelsfall beides testen.
Die Matrizen sind jedenfalls so oder so nicht so groß, dass ich mir um die Laufzeit größere Sorgen machen würde.
Grüße,
Harald
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 27.05.2012, 13:02
Titel:
|
 |
| |
 |
|
Hallo Toni88,
Die Interpolation ist zwar mathematisch trivial, computer-technisch aber nicht. So kann es kommen, dass eine handgestricke Methode zur 1D-Interpolation 30 mal schneller als INTERP1 sein kann, wobei ein C-Mex-Funktion auch den Faktor 125 herausschinden kann, siehe http://www.mathworks.com/matlabcent.....eexchange/25463-scaletime. Wenn man das dannoch parallelelisieren würde...
Das Problem bei der Interpolation ist der Speicherzugriff: Falls alle Daten in den Prozessor-Cache passen, geht das rasant. Falls für jeden einzelnen Wert zeitrauben auf das RAM gewartet werden muss, kann eine explizite Berechnung der 600x100 Matrix schon schneller sein.
Gerade bei "exp(x) * log(y)" scheinen die Berechnungen separierbar zu sein, so dass man "exp(x)" gar nicht jedesmal neu berechnen muss. Dies sollte dann unbedingt ausgenutzt werden, siehe "help bsxfun".
Die Interpolation ist natürlich weniger genau. Je nach Problem kann das ein Ausschlußkriterium sein.
Gruß, Jan
|
|
|
|
| Toni88 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 15
|
 |
|
 |
Anmeldedatum: 23.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.05.2012, 14:37
Titel:
|
 |
hört sich sehr interessant an!
habe es im Moment mit interp2 geschrieben, ist echt die Frage ob das Sinn macht mit der Interpolation, habe das eigentlich nur gemacht weil ich mir einen Zeitgewinn erhoffe(ist genau genug da ich die Schrittweite relativ klein gewählt habe)Es wird halt erstmal am Anfang einmal eine allgemeine Matrix aufgestellt im relevanten Bereich (kann dann auch größer sein als nötig) und dann daraus später interpoliert für jede stelle und iterationsschritt.
Die Matrix muss halt in einem Iterationsverfahren für jeden interationsschritt neu berechnet werden, so um die 60-80 mal werden. Das ganze soll so schnell wie möglich gehen und am liebsten den Speicher schonen, will es bestmöglich machen!
|
|
|
|
|
|
|
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.
|
|