Verfasst am: 28.09.2011, 22:23
Titel: Schnellere Alternative zu rectangle()
Hallo Forengemeinde,
ich bin neu hier im Forum und hoffe, dass ich die richtige Kategorie getroffen habe.
Meine erste Frage: Gibt es eine schnellere Alternative zu der cectangle()-Funktion? Ich habe viele gleich große Kästchen immer und immer wieder zu zeichnen und verbrauche bisher zu viel Zeit in dieser Funktion.
Verfasst am: 29.09.2011, 00:24
Titel: Re: Schnellere Alternative zu rectangle()
Hallo Hiwi-Job,
PATCH und SURFACE sind bestimmt schneller, da sie gleich eine große Anzahl von Flächen auf einmal zeichnen können.
In vielen Fällen kann man sich das wiederholte Zeichnen sparen und nur die Koordinaten bestehender Objekte ändern. Wenn Du Deinen Code postest, könnte man das prüfen.
Leider schaffe ich es weder mit patch() noch mit surface() mehrere Flächen auf einmal zu zeichnen. Bei patch() bekomme ich nur eine große Gesamtfläche aus allen Punkten.
Kann mir da jemand vllt. noch mal einen Tipp zu geben?
Bei surface() habe ich bisher leider noch gar keine Fläche zeichnen lassen können?!? Auch hier bin ich für jede Hilfe dankbar!
Das Antworten würde leichter fallen, wenn Du den benutzten Source-Code postest. Das Beispiel-Programm, das Du oben gezeigt hast, kann ich nicht laufen lassen, weil die Definition einiger Variablen fehlt und die Ausdrücke in Anführungszeichen natürlich nicht bearbeitet werden können.
Was genau Du bei "patch()" und "surface()" falsch angegeben hast, kann ich nicht erraten. Bitte poste die Befehle genauso, wie du sie benutzt. Dann wird wohl auch das Problem klarer.
vielen Dank für deine Hilfe bis hier hin. Die Funktion patch() habe ich jetzt, dank weiterer Hilfe im Forum, zum Laufen bekommen.
Jetzt fehlt mir noch die Funktion surface().
Gibt es für diese Funktion ein einfaches Beispiel an dem ich die Grundfunktion verstehen kann?
Den kompletten Code kann ich hier leider nicht posten, im anderen Thema reichte folgendes, vielleicht wird dadurch klarer wo mein Fehler liegt (diesen Code würde ich gerne in die Funktion surface() "übersetzen").
Code:
...
x=zeros(4,Ende);
y=zeros(4,Ende);
for j=1:Ende
...
x(:,j)=[xpos1,xpos2,xpos3,xpos1];
y(:,j)=[ypos1,ypos2,ypos3,ypos1];
... end ... patch(x,y,'k');
...
Der Source von SPHERE ist ein gutes Beispiel für den SURF Befehl. SURFACE ist ein High-Level-Wrapper für den SURF-Befehl, so wie PLOT ein Wrapper für den LINE-Befehl ist.
Nebenbei: Das "clear all" ist hier (wie in den allermeisten anderen Fällen) völlig zweckfrei, macht das Programm aber massiv langsamer. Es löscht alle geladenen Funktionen aus dem Speicher, so dass sie beim nächsten Aufruf wieder mühsam von der Platte gelesen werden müssen.
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
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.