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

Mehrere Grafiken in einer Grafik positionieren

 

xam
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 02.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2009, 21:11     Titel: Mehrere Grafiken in einer Grafik positionieren
  Antworten mit Zitat      
Hallo,

Ich möchte einen Vektor der Form
Code:

vektor=[0 0 1 2 2 1 2 1 1]
 

als eine Grafik darstellen. Für jede Ziffer (0,1 und 2) habe ich jeweils ein gif-Bild erstellt. Diese Bilder sollen dann nebeneinander positioniert werden. Das würde dann z.B. für obigen Vektor so aussehen (das Bild für die 0 ist einfach ein Platzhalter):



Ich bekomme sowas in etwa hin, wenn ich sowas mache:

Code:

p0=imread('0.jpg');
p1=imread('1.jpg');
p2=imread('2.jpg');
image([p0,p0,p1,p2,p2,p1,p2,p1,p1]); set(gca,'Position',[0 0 1 1])
 


Wie automatisiere ich das? Wie "übersetze" ich den Vektor in den image-Befehl? Ich hatte das die Idee einzelne Bilder nebeneinander zu positionieren aber das schaffe ich irgendwie nicht. Matlab erzeugt dann immer einzelne Bilder in jeweils einem neuen Figure-Fenster.

Gruß, Max

(Hintergrund des Ganzen: Die Grafik stellt einen Kanal mit Teilchen da. Leere Kugeln sind leere Plätze; volle Kugeln sind volle Plätze. Die Teilchen wandern (definiert durch stoch. Prozesse) durch den Kanal von rechts nach links und ich möchte davon ein Video erstellen. Eigentlich handelt es sich also nicht um einen Vektor sondern um eine Zeile einer Matrix. Aber wenn ich einmal die Darstellung des einen Bildes hab, ist das Erstellen eines Filmes ja nicht viel Arbeit.)[/code]
Private Nachricht senden Benutzer-Profile anzeigen


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2009, 23:58     Titel:
  Antworten mit Zitat      
Hallo,

anstelle für jedes Bild eine neue Achse zu verwenden, könntest Du folgendes versuchen:
Code:

vektor = [0,1,2,1,2,0,1,1];  % Testvektor
Inames = ['p0,';'p1,';'p2,']; % Array mit Bildnamen
% für jeden Wert im Vektor entsprechenden Namen auslesen
I = Inames(vektor+1,:);    
J = reshape(I',1,numel(I)); % Zeilenvektor erzeugen

% string zusammenbauen und mit eval ausführen
J = ['image([',J,')'];
J(end-1) = ']';
eval(J)


 


Wenn Du mehrere Bilder in einem Fenster haben willst, musst Du für jedes Bild eine Achse bereit stellen. Und beim Anzeigen des Bildes entsprechend angeben auf welcher Achse es erscheinen soll.
Beispiel:
Code:

a1 = axes('position',....)
image(img,'parent',a1)
 


viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.09.2009, 14:08     Titel:
  Antworten mit Zitat      
Hallo,
Ach wozu eval, es ist doch auch schon mit cell lösbar

Code:

vektor = [0,1,2,1,2,0,1,1];
p=cell(1,3);

p{1}=imread('0.jpg');
p{2}=imread('1.jpg');
p{3}=imread('2.jpg');

image([p{vektor+1}]);
set(gca,'Position',[0 0 1 1])
 
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 - 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.