|
|
Multivariate Funktion auswerte ohne Schleifen, wie? |
|
tib |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.07.2012, 10:15
Titel: Multivariate Funktion auswerte ohne Schleifen, wie?
|
|
Hallo!
Ich habe z.B. folgende Funktion:
Dazu möchte ich die Werte eines Intervalls in einer Matrix speichern. Im Moment mache ich das so:
Das dauert aber etwas und geht doch ohne Schleifen vermutlich etwas schneller. Die Frage ist, wie mache ich das. Ich habe es mal mit
versucht, nur dauert es dann ewig.
Danke im Voraus.
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 06.07.2012, 10:36
Titel:
|
|
Hallo,
Meine Vermutung ist, dass du y(j) verwenden willst?
Wichtig ist auch das Vorbelegen der Matrix.
Eine for-Schleife lässt sich relativ leicht eliminieren:
Grüße,
Harald
|
|
|
Goofy9020 |
Forum-Century
|
|
Beiträge: 164
|
|
|
|
Anmeldedatum: 10.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2009a, 2010b
|
|
|
|
|
|
Verfasst am: 06.07.2012, 10:37
Titel:
|
|
Hey tib,
ich glaub ich weiß schon was bei dir so lange dauert ->
du hast bei den Quadraten den Punkt vergessen. Nun hast du eine Matrixmultiplikation angewandt, anstatt eine Quadrierung auf jeden einzelnen Wert.
Der Punkt macht den feinen Unterschied
|
|
|
Goofy9020 |
Forum-Century
|
|
Beiträge: 164
|
|
|
|
Anmeldedatum: 10.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2009a, 2010b
|
|
|
|
|
|
Verfasst am: 06.07.2012, 10:39
Titel:
|
|
Stimmt hier muss ich Harald auch noch Recht geben. Bei y dürftest du i und j vertauscht haben und gerade bei Schleifen ist es wichtig die Größe der Matrix vor zu definieren, da er sonst jedes Mal die Matrix weg wirft und neu anlegt.
|
|
|
tib |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.07.2012, 10:51
Titel:
|
|
Erstmal danke für die schnellen Antworten!
Ich möchte tatsächlich die Werte in gr verwenden. Die Matrix hatte ich vorbelegt, habe ich vergessen in den Code zu schreiben. Die Lösung von Harald ist eventuell einen Ticken schneller als meine mit zwei Schleifen. Habe es jetzt noch mal so probiert:
Jetzt dauert repmat (meshgrid) am längsten. Gefühlt ist es jetzt insegsamt aber nicht schneller als die Schleifen Version. Gibt es da noch einen Trick, um X und Y schneller zu erzeugen?
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 06.07.2012, 13:49
Titel:
|
|
Hallo tib,
ist schneller als
Es ist auch billiger den Vektor zu quadrieren, bevor die Matrizen erzeugt werden.
Wie wäre dies:
Ich glaube allerdings, das EXP so teuer ist, dass trickreiche Verfahren zum Berechnen der Summe vollkommen nebensächlich sind.
Gruß, Jan
|
|
|
|
|
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 - 2024
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.
|
|