WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Performance Surf

 

utgmk
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2012, 15:16     Titel: Performance Surf
  Antworten mit Zitat      
Guten Tag,

ich habe ein kleines Problem mit der Performance der Surf Funktion.

Folgende Situation

Matrix mit Dimension 1700 x 1700

Ich möchte diese Matrix 3D ploten. Das Ergebnis soll wie im Anhang aussehen, jedoch ohne Gitter.

Hier ist die Funktion die ich geschrieben habe:
Code:

function PlotMatriceSurf(x)
    surf(x);
    shading interp;
end
 


Jetzt mein Problem. Die Performance, wenn ich das Ergebnisplot drehen will, ist einfach sehr schlecht. Es dauert mehrere Sekunden, bis das neue Bild angezeigt wird.

Kann man da irgendetwas machen?

Danke für die Antworten.

Grafik.png
 Beschreibung:
So soll es aussehen

Download
 Dateiname:  Grafik.png
 Dateigröße:  153.22 KB
 Heruntergeladen:  534 mal
Private Nachricht senden Benutzer-Profile anzeigen


utgmk
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2012, 15:18     Titel: zweiter Versuch
  Antworten mit Zitat      
Ich habe auch versucht, den Plot anders zu erstellen.


Code:

function PlotMatriceOptimze(x, opti)
    s = surf(x);
    p=patch(surf2patch(s))
    reducepatch(p,opti)
    delete(s)
    set(p,'facecolor','w','EdgeColor','b');
end
 


jedoch habe ich da das Problem, dass die Farben nicht passen. Und es nicht möglich ist, eine Matrix mit 1700 x 1700 Pixeln zu laden. Dann erscheint eine Exception.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.03.2012, 18:26     Titel: Re: zweiter Versuch
  Antworten mit Zitat      
Hallo utgmk,

Gibt es eine Fehlermeldung beim Erscheinen der Exception?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
utgmk
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2012, 11:35     Titel:
  Antworten mit Zitat      
Hallo

also bei der Funktion

Code:

function PlotMatriceSurf(x)
    surf(x);
    shading interp;
end
 


kommt keine Fehlermeldung.


Bei der Funktion

Code:
function PlotMatriceOptimze(x, opti)
    s = surf(x);
    p=patch(surf2patch(s))
    reducepatch(p,opti)
    delete(s)
    set(p,'facecolor','w','EdgeColor','b');
end


Kommt die Exception:

{"\n\n... MWMCR::EvaluateFunction error ... \nUnexpected Standard exception from MEX file.\nWhat() is:bad allocation\n\nError in => PlotMatriceOptimize.m at line 19.\n\n... Matlab M-code Stack Trace ...\n at\nfile C:\\Program Files\\MATLAB\\MATLAB Compiler Runtime\\v716\\toolbox\\matlab\\specgraph\\reducepatch.m, name reducepatch, line 123.\n at\nfile C:\\Users\\test\\AppData\\Local\\Temp\\test\\mcrCache7.16\\Plot_80\\Plot\\PlotMatriceOptimize.m, name PlotMatriceOptimize, line 19.\n\n"}

Diese Funktion ist aber irgendwie auch nicht wirklich schneller.


Also die Anforderung ist weiterhin die, eine Matrix 1700 x 1700 performant zu plotten, dass das Ergebnis so aussieht wie die surf Funktion.



Danke für die Antworten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.03.2012, 11:49     Titel:
  Antworten mit Zitat      
Hallo,

Vorschlag:
nicht die volle Matrix plotten, sondern z.B. nur jeden 2., 5. oder 10. Datenpunkt in jeder Richtung. Bei 1700x1700 müssen knapp 3 Mio. Datenpunkte aktualisiert werden, was etwas viel ist.
Wenn die Einträge der Matrix nicht zu stark variieren, sollte das kaum einen sichtbaren Unterschied machen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
utgmk
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2012, 15:03     Titel:
  Antworten mit Zitat      
Ja das stimmt. Die Matrix kommt von einer 3 MegPixel Kamera.


gibt es da eventuell einen schönen Algorithmus, wie man die Matrix verkleinern kann und das die Werte noch einigermaßen repräsentativ sind.

Z.b Verrechnung der benachbarten Pixel als Mittelwert?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.03.2012, 15:07     Titel:
  Antworten mit Zitat      
Hallo,

wenn es ohnehin um ein Bild geht, könnte man IMRESIZE aus der Image Processing Toolbox verwenden. Dort dürften solche Aspekte berücksichtigt sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
utgmk
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 08.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2012, 17:12     Titel:
  Antworten mit Zitat      
Nein es ist kein Image.

Es sind Daten von einem 3D Messplatz. (XYZ Koordinaten)


Die Funktion IMRESIZE hört sich sehr interessant an.

Werde ich später gleich mal ausprobieren.

Ich melde mich wieder.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.