|
Gast12 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2011, 22:09
Titel: Frage zu interp2
|
 |
Hi,
ich habe ein Problem. Ich muss interpolieren und benutze dazu den Befehl interp2.
Die Syntax zu zi = interp2(x,y,z,xi,yi,'linear');
Bei mir sind xi und yi Vektoren mit rund 100000 Einträgen. Matlab versucht nun eine Matrix zi gleich 100000x100000 zu erzeugen. Da stürzt die Funktion mit "maximum variable" ist erreicht ab. Dies könnte ich ja noch durch eine For-Schleife umgehen, um den von mir gesuchten Vektor zu erhalten (ähnlich Simulink-Modell wo zu jedem Zeitpunkt mit einem Wertepaar interpoliert wird).
|
|
|
|
|
eupho |

Forum-Meister
|
 |
Beiträge: 777
|
 |
|
 |
Anmeldedatum: 07.01.09
|
 |
|
 |
Wohnort: Marburg
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 06.09.2011, 07:59
Titel:
|
 |
1) Schleifen sind, wendet man sie richtig an, nicht "extrem langsam". Du machst 100000 einzelne Interpolationen und wunderst dich, dass es langsam ist.
2) Deine for-Schleife und zi = interp2(x,y,z,xi,yi,'linear'); berechnen nicht annähernd das Gleiche!
3) Bei 100k x 100k sollte man sich ernsthaft überlegen, die Daten zu kürzen oder die Auflösung runter zu schrauben!
|
|
|
Gast12 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.09.2011, 09:52
Titel:
|
 |
|
 |
|
Hi,
die Auflösung kann ich nicht leider nicht herunterschrauben (ich würde es mir selbst wünschen) (diese Messung wird mit einer gewissen Abtastung aufgenommen). Das war übrigens nur eine kurze Testmessung. Später sollen aber Messungen über einen "sehr extrem" langen Zeitraum ausgewertet werden. Ich arbeite sonst relativ gerne mit Schleifen, nur in diesem Fall (wie du schon sagtest 100k Interpolationen) halte ich sie für sehr langsam (ineffizent mit einer Schleife) (besonders bei den langen Messungen). Ich muss die Berechnung bei vielen Kennfeldern insgesamt durchführen. Das bedeutet, dass ich erst bei 2 Kennfeldern interpoliere und jeweils einen Vektor erhalte. Anschließend gehen diese beiden Vektoren wieder in ein Kennfeld und so weiter. Du siehst also: Es ist hier eine unschöne Sache mit den Schleifen.
Wie meinst du das, ob meine Schleife nicht annährend das selbe berechnen. Es gibt einen gewissen Bereich, der aber Zahlenmäßig relativ groß bzw. breit ist, da es dynamische Fälle sind. Also siehst man im erzeugten Vektor viele Zustände.
Deshalb wäre für jeden Hinweis dankbar, wie ich es optimieren kann.
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 06.09.2011, 13:11
Titel:
|
 |
Vielleicht muss das Gitter ja gar nicht so gross werden. Beispiel ich stelle bei einer Messung x und y ein, z wird gemessen, ABER, da z.B. x nicht so genau eingestellt werden kann wie es gemessen wird, sind dann Ergebnisse wie folgt:
x y z
1.01 1 2.03451
1.99 1 3.32522
1.02 2 1.24142
2.00 2 1.11414
MATLAB würde an dieser Stelle für x nicht 2 Werte annehmen, sondern 4, und ein Gitter sogar von 1.01 bis 2.00 in 0.01 Schritten aufspannen wollen. Selbst wenn das rechnerisch klappt, gibt das kein besseres Ergebnis.
Vielleicht lässt sich also hier etwas mit dem zusammen fassen in Toleranzbänder vereinfachen (alles zwischen 0.97 und 1.03 ist eigentlich 1.00 usw.)
Andreas
|
|
|
Gast12 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.09.2011, 19:07
Titel:
|
 |
Hi Andreas,
die Eingangsvektoren "jage" ich schon durch meine Signalvorverarbeitung. Das heißt, dass ich da schon sinnvoll auf- bzw. abrunde (entweder ganzzahlig, plus minus 1 bis 5 oder oder wenn es nicht anders geht auf 0,1). Es sollen später verschiedene "Wertpaarungen für die Kennfelder" ausprobiert werden, um besser als jetzt zu werden. Deshalb weiss ich nocht nicht wie grobrastigt ich jetzt schon werden darf. Was ich eventuell noch machen könnte, wäre die interpolierten Ergebnisvektoren ebenfalls sinnvoll zu runden. Die Achseneinteilung x,y der Kennfelder z sind ebenfalls in "größeren Schritten" aufgebaut.
Da ich an anderer Stelle ebenfalls noch einen Klemmer mit Matlab habe, würde ich dich Andreas gerne eventuell mal kontaktieren, falls du nichts dagegen hast.
Aber falls andere noch Ideen haben, ich werde jeden Vorschlag ausprobieren.
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 07.09.2011, 13:11
Titel:
|
 |
Ich helfe gerne. Der MathWorks Technische Support auch
Andreas
|
|
|
|
|
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.
|
|