meine Plotfunktion sieht in etwas so aus:
[fh,ah] = meinePlotFunc(handles,x1,y1,x2,y2,x3,y3,x4,y4)
Input:
-Eingang ist variabel in
-x1,y1,x2,... sind Strukturen
-handles ist aus meiner GUI
Output:
- fh ist das FigureHandle
- ah ist das AxesHandle
Nun zum Problem:
Die Plotfunktion ruft ein neues Figure auf und zeichnet die "Kurven".
Ändern sich die Werte von x1,y1,... ändert dies nichts am Plot, erst wenn ich die Funktion nochmals aufrufe. Ich möchte aber, dass sich bei Ändern der Eingangswerte auch die Plotfunktion "aktualisiert".
Versucht habe ich es mit
set(fh,{'YDataSource'},{'y1','y2','y3','y4'}')
set(fh,'{XDataSource'},{'x1','x2','x3','x4'}')
refreshdata
%Grid und sonstiges einstellen:
set(ah(1),'GridLineStyle','-');
grid(ah(1),'on');
box(ah(1),'on');
hold(ah(1),'all');
%% Erstelle Plot in 1
%Plot1
hold on;
ifnargin > 2
lh(1)=plot(x1.Werte,y1.Werte,'Parent',ah(1));
set(lh(1),myplot1);
le1{1} = y1.(genvarname(['Leg' num2str(n)])); %erzeugt für n = '' >> y1.Leg oder für n = 2 >> y1.Leg2 end
%Plot2
ifnargin > 4
lh(2) = plot(x2.Werte,y2.Werte,'Parent',ah(1));
set(lh(2),myplot2);
le1{2} = y2.(genvarname(['Leg' num2str(n)]));
end
%Plot3 ifnargin > 6
lh(3) = plot(x3.Werte,y3.Werte,'Parent',ah(1));
set(lh(3),myplot3);
le1{3} = y3.(genvarname(['Leg' num2str(n)]));
end
%Plot4
ifnargin > 8
lh(4) = plot(x4.Werte,y4.Werte,'Parent',ah(1));
set(lh(4),myplot4);
le1{4} = y4.(genvarname(['Leg' num2str(n)]));
end
%% Beschriftung
%Leg
leg(1) = legend(le1);
set(leg(1),mylegend,'Interpreter','none'); %Interpreter ist auf aus, da ansonsten Unterstrich im String die folgende Zahl oder Buchstabe tiefsetzt
% Y-Label ifnargin < 4 %Es wird Legendenname mit Einheit angegeben:
ylh(1) = ylabel(ah(1),[y1.Leg, '[', y1.Einheit, ']']);
else% Es wird nur die Einheit angegeben:
ylh(1) = ylabel(ah(1),['[', y1.Einheit, ']']);
end set(ylh(1),myaxes);
% Titel
th(1) = title(ah(1),[x1.Leg, ' zu ', y1.Leg]);
set(th(1),mytitle);
Ich verstehe nicht, wie ich dies anzuwenden habe. Im Buch Matlab Kompakt von Wolfgang Schweizer ist folgendes geschrieben:
"Neu treten die Eigenschaften XData,YData und ZData hinzu. Bei allen drei handelt es sich um Koordinaten Vektoren oder Matrizen. Matrizen werden spaltenweise ausgewertet."
(in .Werte sind die Werte in einem Array gespeichert)
Das letzte funktioniert so in etwa. Probleme:
a) es werden nur x1.Werte und y1.Werte aktualisiert
b) x2.Werte und y2.Werte, ... werden mit x1.Werte und y1. Werte gleichgesetzt
Autsch! Indices in die Namen von Variablen zu schmuggeln und hinterher mit fehleranfälligen EVALs darauf zu zugreifen, ist immer eine schlechte Idee.
Dazu findet man hinreichend viele Themen in diesem Forum.
Viele Grüße, Jan
Einstellungen und Berechtigungen
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
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.