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

Feste Ausgabegröße der imagesc() funktion

 

sebastian123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2012, 10:32     Titel: Feste Ausgabegröße der imagesc() funktion
  Antworten mit Zitat      
Hallo zusammen,

ich kämpfe derzeit mit einem Problem bei der Größeneinstellung einer mit imagesc() gebildeten Matrixvisualisierung.

Problemstellung:
Für die Visualisierung einer Matrix (immer quadratische Matrix aber wechselnde Größen) möchte ich imagesc() verwenden. Da ich das in einem Bild in einer kleinen GUI ausgeben will habe will ich, dass das imagesc Objekt auch bei unterschiedlichen Eingabematrizen immer die gleiche Größe hat. Durch die Position Property des Parensaxes objekt funktioniert das nicht korrekt. Lade ich eine 100x100 Matrix wird das bild deutlich kleiner angezeigt, als wenn ich eine 99x99 Matrix lade.

Wie kann ich es steuern, dass egal welche Matrix das Bild immer eine Ausgabegröße von z.b. 500 x 500 Pixel hat?

Für die Generierung der Achse und des Bildes habe ich folgenden Code verwendet:

Code:

   axe=axes('Parent',visualpanel,'Visible','on','Units','pixels','Position',[30 30 300 300]);
bild=imagesc('Parent',axe,'CData',compute2dpresentation(objects));
 


Zur Veranschaulichung im Anhang noch ein Screenshot

differingsizes.png
 Beschreibung:

Download
 Dateiname:  differingsizes.png
 Dateigröße:  37.65 KB
 Heruntergeladen:  578 mal


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.04.2012, 10:40     Titel:
  Antworten mit Zitat      
Hallo

da muss du die Axen entsprechend skalieren

Code:

% einmalig dass ausführen
 axe=axes('Parent',visualpanel,'Visible','on','Units','pixels','Position',[30 30 300 300]);
axis(axe,[0 500 0 500])



%danach nur Bild wechseln
bild=imagesc('Parent',axe,'CData',compute2dpresentation(objects));
 
Private Nachricht senden Benutzer-Profile anzeigen
 
sebastian123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2012, 10:57     Titel:
  Antworten mit Zitat      
Hi Dennis,

danke schonmal für deine Antwort. Leider löst das das Problem noch nicht endgültig. Jetzt ändern sich zwar nicht mehr die achsen, aber dennoch wird eine 400x400 Matrix kleiner angezeigt als eine 500x500 matrix (siehe bilder) ich hätte aber gern, dass jedes bild immer genau gleich groß ist und entsprechend skaliert wird. geht das irgendwie?

Bildschirmfoto 2012-04-19 um 10.54.22.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto 2012-04-19 um 10.54.22.png
 Dateigröße:  17.79 KB
 Heruntergeladen:  575 mal
Bildschirmfoto 2012-04-19 um 10.54.39.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto 2012-04-19 um 10.54.39.png
 Dateigröße:  17.5 KB
 Heruntergeladen:  603 mal
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.04.2012, 11:03     Titel:
  Antworten mit Zitat      
Dann muss du IMRESIZE verwenden und die Bilder auf gleiche Größe skalieren
Private Nachricht senden Benutzer-Profile anzeigen
 
sebastian123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2012, 12:10     Titel:
  Antworten mit Zitat      
Hi Denny,

ich probier jetzt schon längere Zeit mit dem imresize rum, krieg da aber nichts angezeigt, als würde das überhaupt keinen einfluss haben...

Code:

bild=imagesc('CData',compute2dpresentation(objects));
test = imresize(bild,[10 10],'OutputSize',[500 500]);
set(test,'Parent','axe');
 


Weißt du was ich falsch mache?
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.04.2012, 12:46     Titel:
  Antworten mit Zitat      
sebastian123 hat Folgendes geschrieben:
Hi Denny,

ich probier jetzt schon längere Zeit mit dem imresize rum, krieg da aber nichts angezeigt, als würde das überhaupt keinen einfluss haben...

Code:

bild=imagesc('CData',compute2dpresentation(objects));
test = imresize(bild,[10 10],'OutputSize',[500 500]);
set(test,'Parent','axe');
 


Weißt du was ich falsch mache?



Ja du musst das Bild und nicht das Handle zum Bild skalieren.

Code:

bild  = imresize(compute2dpresentation(objects),[500 500])
hbild=imagesc('Parent',axe, 'CData',bild);

 
Private Nachricht senden Benutzer-Profile anzeigen
 
sebastian123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2012, 14:38     Titel:
  Antworten mit Zitat      
YEAAHH!! Es funktioniert! Vieeeeelen Dank! Du hast mir wahnsinnig damit geholfen!!

viele Grüße
Sebastian
 
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.