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

Drei kleinere Fragen/Probleme zu Plots/Code

 

Shin
Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 26.05.2010, 14:37     Titel: Drei kleinere Fragen/Probleme zu Plots/Code
  Antworten mit Zitat      
Hey Leute,
mein Grundstein für mein Programm steht endlich, jedoch gibt es noch diverse Haken, die für mich an sich noch nicht ganz lösbar sind bzw. Dinge, die es ungeheuerlich vereinfachen würden, wenn ich eine Antwort bekäme.

1.
Der Benutzer meines Control Panels/GUI soll aus belieben Datenquellen Vektoren auswählen können, die dann geplottet werden. Wenn die Vektoren der 2 verschiedenen Datensätzen aber ungleich lang sind, gibt mir MATLAB die wohl bekannte Fehlermeldung aus.

Long story short: Ist es möglich mit irgendeinem Befehl oder über einen Umweg ungleich lange Vektoren in einem Plot zu plotten? Egal ob dann beim ersten Datensatz was weggeschnitten wird oder der Plot insgesamt größer ist, als ein Datensatz.


2.
Ist es möglich, dass nachdem man etwas geplottet hat - IM fertigen Plot noch beispielsweise den Text der Legende noch verändern kann? Klingt in meinen Augen nicht so abwegig, dass das gehen dürfte - würde die Handhabung meines Programmes für den "Endnutzer" später vereinfachen und vorallem übersichtlicher machen.

Long story short: Kann man aktivieren, dass man in einem Plot den Text der Legende noch ändert?

3.
Kann mir kurz wer sagen, wie ich am geschicktesten einstelle, dass wenn meine Checkbox 2 aktiviert wird, die Checkbox 1 gleichzeitig mitaktiviert wird?

Danke und Gruß!
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 26.05.2010, 16:43     Titel:
  Antworten mit Zitat      
Moin,

zu 1.: Ja! --> Gegenfrage: Wie sieht dein Code zum Plotten bisher aus?

zu 2.: Ja!
Code:
graph_handle = plot(1:10,5:5:50);
legend('str1');
pause(1);
set(graph_handle,'DisplayName','new_str1');
 
--> ungetestet Rolling Eyes

zu 3.:
Code:
% in der Callback zur Checkbox 2:
if get(hObject,'value')
    set(handles.checkbox1,'value',1)
end
--> ebenfalls ungetestet...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Shin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 26.05.2010, 17:04     Titel:
  Antworten mit Zitat      
steve hat Folgendes geschrieben:
Moin,

zu 1.: Ja! --> Gegenfrage: Wie sieht dein Code zum Plotten bisher aus?

zu 2.: Ja!
Code:
graph_handle = plot(1:10,5:5:50);
legend('str1');
pause(1);
set(graph_handle,'DisplayName','new_str1');
 
--> ungetestet Rolling Eyes

zu 3.:
Code:
% in der Callback zur Checkbox 2:
if get(hObject,'value')
    set(handles.checkbox1,'value',1)
end
--> ebenfalls ungetestet...

Gruß
Alex


Vielen Dank!
Lösung zu 2. funktioniert und die zu 3. klingt plausibel.

Zu deiner Gegenfrage:
mit
Code:
ax(1) = subplot(4,1,1);
box on;
plot(pv1(:,3),pv1(:,2),'Color',[1 0 0.5]);
hold on;
plot(pv1b(:,3),pv1b(:,2),'Color',[0 0 1]);
grid on;


wird das Ganze geplottet bisher, pv1 und pv1b (später soll noch pv1c dazu kommen) sind eben die Vektoren, die vom Benutzer individuell 'bestückt' werden sollen - und wenn möglich, sollen diese unterschiedlich lang sein.
Doch wie genau das am besten geht, weiß ich nicht!

Nochmals Danke und Gruß!
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 27.05.2010, 07:31     Titel:
  Antworten mit Zitat      
Shin hat Folgendes geschrieben:
[...]Lösung zu 2. funktioniert und die zu 3. klingt plausibel.

Sehr schön! Smile

Shin hat Folgendes geschrieben:

Zu deiner Gegenfrage:
mit
Code:
ax(1) = subplot(4,1,1);
box on;
plot(pv1(:,3),pv1(:,2),'Color',[1 0 0.5]);
hold on;
plot(pv1b(:,3),pv1b(:,2),'Color',[0 0 1]);
grid on;


wird das Ganze geplottet bisher, pv1 und pv1b (später soll noch pv1c dazu kommen) sind eben die Vektoren, die vom Benutzer individuell 'bestückt' werden sollen - und wenn möglich, sollen diese unterschiedlich lang sein.

Inwiefern sollen die Vektoren unterschiedlich lang sein? Das du z.B. nicht pv1b(:,3) sondern pv1b(:,5) plotten müsstest oder soll die andere Dimension unterschiedlich sein? Wenn 2., dann sollte dein Code allerdings so funktionieren über HOLD...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Shin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 27.05.2010, 14:26     Titel:
  Antworten mit Zitat      
steve hat Folgendes geschrieben:

Inwiefern sollen die Vektoren unterschiedlich lang sein? Das du z.B. nicht pv1b(:,3) sondern pv1b(:,5) plotten müsstest oder soll die andere Dimension unterschiedlich sein? Wenn 2., dann sollte dein Code allerdings so funktionieren über HOLD...

Gruß
Alex


Mhm..
Jetzt bin ich total aus dem Konzept, habe gerade nochmal ein paar Dinge rumprobiert und frage mich, warum ich auf das Problem gestoßen bin bzw. was genau mein Problem war.
Natürlich kann man unterschiedlich lange Funktionen in einen Plot plotten, war gestern nachmittag wohl ein derber Denkfehler. Ich ziehe die Frage vorerst zurück.^^

Ich danke dir vielmals.


edit:
Ah, eine Frage hätte ich noch, dann bin ich aber bestens bedient und kann mein Projekt endlich abschließen:

In meiner Plotfunktion habe ich vordefinierte Variablen die vom Benutzer "gefüllt" werden, d.h. erst bei Benutzung meines GUIs werden die Vektoren erstellt und mit bereits festgelegten Namen gespeichert.
Nun - sollte der Benutzer eine der Variablen nicht "bestücken", weil er sie nicht brauch, funktioniert das alles nicht, Grund:

??? Error using ==> evalin
Undefined function or variable 'PlotVar4'.


Nun zur eigentlichen Frage:
Gibt es irgendeinen Trick, diese Fehlermeldung zu umgehen? Also quasi den Plotbefehl zu ignorieren, wenn die Variable nicht vorliegt?
Geplottet wird das mit:
Code:

plot(pv1b(:,3),pv1b(:,2),'Color',[0 0 1]);



Möglicherweise eine if-Abfrage, ob der Vektor existiert? Wenn ja, kommt der Plotbefehl, wenn nein, passiert nichts?
Oder was wäre wenn ich einfach, sofern der Vektor nicht existiert einfach einen "Doppelnullvektor" erzeuge? plot(0,0);



Dank und Gruß!


[/i]
Private Nachricht senden Benutzer-Profile anzeigen
 
quant82
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 30.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2010, 15:54     Titel:
  Antworten mit Zitat      
joa du könntest es natürlich über einen flag machen den du setzt wenn die variable gesetzt wird und die eben über eine if abfrage gecheckt wird
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.05.2010, 16:04     Titel:
  Antworten mit Zitat      
Hallo,

Code:


oder mit try / catch.

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

Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 27.05.2010, 16:31     Titel:
  Antworten mit Zitat      
Super,
danke euch.
Habe es mit
Code:
if evalin('base','exist(''pv1b'',''var'')')
plot(pv1b(:,3),pv1b(:,2),'Color',[0 0 1]);
end

gelöst.
Smile
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.