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

Mehrer Diagramme (axes) in einem GUI

 

ms1080
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 29.09.2010, 09:35     Titel: Mehrer Diagramme (axes) in einem GUI
  Antworten mit Zitat      
Hi

habe einige Berechnungen gemacht und daraus eine Matrix und zwei Vektoren erhalten. Diese will ich nun in drei von mir mit Hilfe des Guide erzeugten Programmfenster darstellen. Matrix als 3D und die Vektoren in 2D.

Das mit der Matrix klappt ganz gut, aber wie kriege ich das Programm dazu, die anderen axes zu füllen.

Code:

handles.data1 = data1;                                          
handles.data_2d = data_2d;
guidata(hObject, handles);

set(handles.figure1, 'CurrentAxes', handles.axes1);      
mesh(data1);
set(handles.figure2, 'CurrentAxes', handles.axes2);        
mesh(data_2d);
 


Bitte um Hilfe! Danke schonmal!
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: 29.09.2010, 10:58     Titel: Re: Mehrer Diagramme (axes) in einem GUI
  Antworten mit Zitat      
Hallo ms1080,

Zitat:
Diese will ich nun in drei von mir mit Hilfe des Guide erzeugten Programmfenster darstellen.

Was genau sind "Programmfenster"?

Zitat:
Das mit der Matrix klappt ganz gut, aber wie kriege ich das Programm dazu, die anderen axes zu füllen.

Schwer zu sagen, wenn Du so wenig Details angibst.
Du kannst natürlich immer das Parent-Objekt angeben, wenn Du etwas zeichnen möchtest.

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

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 29.09.2010, 11:27     Titel:
  Antworten mit Zitat      
Ich habe mit dem guide eine Oberfläche erzeugt auf der ich 3 Diagramme gesetzt habe und diese sollen und mit Garfiken gefüllt werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
ms1080
Themenstarter

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 29.09.2010, 11:32     Titel:
  Antworten mit Zitat      
Und wie gesagt, die Matrix wird als 3D bild dargestellt, aber wenn ich wie oben angegeben das zweite Diagramm als 2D erzeugen will klappt das nicht.

Wie sage ich dem Programm, dass es die datei data2d ins diagramm 2 darstellt (plottet).


mfg nitram
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: 29.09.2010, 17:11     Titel:
  Antworten mit Zitat      
Hallo Matrin,

Zitat:
Ich habe mit dem guide eine Oberfläche erzeugt auf der ich 3 Diagramme gesetzt habe und diese sollen und mit Garfiken gefüllt werden.

Und wie gesagt, die Matrix wird als 3D bild dargestellt, aber wenn ich wie oben angegeben das zweite Diagramm als 2D erzeugen will klappt das nicht.

Wie sage ich dem Programm, dass es die datei data2d ins diagramm 2 darstellt (plottet).


Ich kann Dir nicht folgen. Es wäre einfacher zu lesen, wenn Du Dich an die Matlab-Nomenklatur halten würdest:
Oberfläche, Diagramme, Garfiken (klingt irgendwie gar nicht nach Matlab), Matrix als 3D-Bild (wie geht denn das, wo eine Matrix doch so 2D ist?), Diagram als 2D erzeugen (man kann Diagramme immer nur als 2D erzeugen), die Datei ins Diagramm plotten? Das sind lauter Ausdrücke, die einen vagen Eindruck vermitteln, aber nicht sagen, was Du genau möchtest. Unter "figure", "axes", "bar", "mesh", "surface", "plot", "line" etc. kann sich hier dagegen jeder etwas genaues vorstellen. Man kann auch keine Datei plotten, und für die Frage ist es wahrscheinlich gar nicht so wichtig, wo die Daten herkommen, oder doch?

Bitte stelle doch die Frage nochmal mit so wenig wie möglich, aber so viel wie nötig Details.
Gib ein Code-Beispiel an, in dem Du versuchst das Problem zu lösen und zeige, in welcher Zeile was genau nicht funktioniert. Ich habe den Eindruck, die Lösung ist dann ganz schnell zu finden.

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

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 29.09.2010, 19:47     Titel:
  Antworten mit Zitat      
okay sorry bin mit matlab und dem guv nicht so bewandert

habe mit hilfe des guide drei axes (axes1, axes2 und axes3) positioniert und in der zugehörigen m-file aus einer txt-datei daten entnommen.
diese daten befinden sich im m-file einer 100x100 matrix
diese matrix habe ich dann mit dem mesh befehl im axes1 darstellen lassen.
die matrix ist 2d (100spalten und 100zeilen), als ergebnis gibt es ein bild, das einem 3d-bild der matrix entspricht.
nun habe ich je eine bestimmt zeile und eine bestimmte spalte herausgenommen und will diese vektoren nun jeweils im axes2 und axes3 darstellen.
das klappt aber nicht so wie ich es mir vorstelle.
wie sage ich der m-file, dass z.B. datax in axes2 dargesetllt werden soll.

hoffe das ist jetz besser verständlich, wenn nicht sag bitte bescheid.

mfg nitram
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: 29.09.2010, 21:17     Titel:
  Antworten mit Zitat      
Hallo Martin,

Meinst Du so etwas:
Code:

Axes1H = subplot(1, 3, 1);
Axes2H = subplot(1, 3, 2);
Axes3H = subplot(1, 3, 3);

line(rand(1, 10), rand(1, 10), 'Parent', Axes1H);
plot(1:10, rand(1, 10), 'Parent', Axes2H);
bar(1:5, rand(5), 'Parent', Axes3H);
 

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

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 05.10.2010, 09:32     Titel:
  Antworten mit Zitat      
hi jan

wenn ich das richtig verstehe, erzeuge ich so 3 neue axes. das wollte ich eigentlich nicht, weil ich ja das gui mit dem guide erstellt habe und dort habe ich axes1, axes2 und axes3.

habe das jetzt so probiert, da kommt aber wieder eine fehlermeldung:

Code:

mesh (set(handles.axes1,data1_b));
plot (set(handles.axes2,data_2d));
 


wo liegt da der Fehler, mit set sage ich dem m-file doch, das es meine daten (data1_b und data_2d) den jeweiligen axes zuweisen soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
ms1080
Themenstarter

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 05.10.2010, 09:42     Titel:
  Antworten mit Zitat      
ist bei der Hilfe von mesh und plot schlecht erklärt

so funktioniert es jetzt wie ich es gerne hätte:
Code:


mesh (handles.axes1, data1_b);                                        
plot (handles.axes2, data_2d);        
                               
 


Namen der Diagramme sollten im guide entsprchend geändert werden.

vielen Dank an alle dir mir geholfen haben.

MfG

Nitram
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2010, 12:31     Titel:
  Antworten mit Zitat      
hallo forum,

ich habe ein ähnliches problem.

Code:

ax(1) = axes('units','pixels','position', [500 320 492 369]);
ax(2) = axes('units','pixels','position', [100 100 240 240]);
           
[data, map] = imread('bild.bmp');
pic=ind2rgb(data,map);

B1 = image(pic);                                          
B2 = imhist(data);
 


wie sage ich matlab nun, dass B1 in ax(1) und B2 in ax(2) dargestellt werden soll?

schöne grüße
 
ms1080
Themenstarter

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 11.10.2010, 14:08     Titel:
  Antworten mit Zitat      
versuche mal so:

Code:


image(handles.ax1, B1);
imhist(handles.ax2, b2);

 


vielleicht funktioniert das ja so.

um ax1 oder ax2 anzsprechen bzw. matlab zu sagen tu mal das da mach must du die handles funktion verwenden.

mfg nitram
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2010, 10:48     Titel:
  Antworten mit Zitat      
hallo,

danke für deine antwort. geht das nicht ohne handles? hab damit noch gar nicht gearbeitet und aus der doku werde ich auch nicht schlau.

mfg
 
ms1080
Themenstarter

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 12.10.2010, 11:05     Titel:
  Antworten mit Zitat      
nein
wenn du das im gui machst, must du handles verwenden, weil handles als übergabefunktion dient.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2010, 13:08     Titel:
  Antworten mit Zitat      
hallo,

also das funktioniert leider nicht:

Code:

handles.axes1=axes('units','pixels','position', [500 320 492 369]);
handles.axes2=axes('units','pixels','position', [100 100 240 240]);
           
[data, map] = imread('bild.bmp');
pic=ind2rgb(data,map);

B1=image(pic);                                          
B2=imhist(data);

image(handles.axes1, B1);
imhist(handles.axes2, B2);
 


kann mir jemand sagen warum? wie wäre das richtig??

mfg
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2010, 18:41     Titel:
  Antworten mit Zitat      
also falls es jemanden interessiert, so habe ich das gelöst:

Code:

ax1=axes('units','pixels','position', [500 320 492 369]);
ax2=axes('units','pixels','position', [100 100 240 240]);

....
   
axes(ax1)      
[data, map] = imread('bild.bmp');
pic=ind2rgb(data,map);
image(pic);  

axes(ax2)                                        
imhist(data);
 


danke an alle, die versucht haben mir zu helfen! Smile

lg
 
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.