Verfasst am: 22.10.2021, 13:59
Titel: Drop Down komplizierter als angenommen
Hallo zusammen,
Ich habe in Matlab ein Programm geschrieben um Messwerte wahlweise von einem oder mehreren Tagen auszulesen und auszuwerten. Da funktioniert auch alles gut (mal sehen, ob meine Kollegen noch mit Sonderwünschen kommen). So viel zum Hintergrund. Bislang muss man den ersten und letzten Messtag, welchen man auswerten möchte, händisch und im korrekten Format eingeben. Um das zu erleichtern, wollte ich das ganze "mal eben" in einem Drop Down Menu umsetzten.
Ausgangsbasis ist Folgendes:
Code:
t1 = datetime(2021,9,1,0,0,0,"Format","ddMMuuuu"); % erster Messtag
t2 = datetime("today"); % Es ist unklar wie lange din der Anlage gemessen wird, wenn es einfacher ist kann hier auch eine fixe Grenze in der Zukunft gewählt werden
t = transpose(t1:t2); % Hatte überlegt die "lesbaren" Datumsangaben und das später benötigte Format in einem array nebeneinander zu legen, daher die transponierung
tdatestring = datestr(t);
% Überführung in das im weiteren Programmverlauf benötigte Format
t_year = string(t.Year);
t_month = num2str(t.Month, '%02d');
t_day = num2str(t.Day, '%02d');
t_char1 = t_year + '-' + t_month + '-' + t_day; % Formatierung als String, aber mit den "-" "besser lesbar", ergab sich bei versuchen mit uicontrol
t_nutzbar = t_year + t_month + t_day; % Format welches zur weiterverarbeitung benötigt wird (es müssen extern generierte Dateien ausgelesen werden, die nach diesem Format benannt sind
Mein Wunsch wäre der:
Man wählt in 2 Drop Downs je einen Tag aus, der lesbarkeit halber sollen in den Drop Downs wahlweise die Einträge aus t, tdatestring, oder t_char stehen und ausgewählt werden können. Nach Bestätigung sollenin zwei Variablen z.B. Messtag_1 und Messtag_2 dann die Einträge aus t_nutzbar abgelegt werden, welche den ausgewählten entsprechen.
Verständlich erklärt? Bin ich bei meiner Recherche falsch abgebogen, oder ist das wesentlich aufwendiger (als zumindest ich) zunächst angenommen hatte?
Code:
function Messtag = mytemps(t_char1)
f = figure;
c = uicontrol(f,'Style',"Popup");
% c.Position = [20 75 60 20];
c.String = t_char1;
c.Items = t_char;
c.Callback = @selection;
function selection(src,event)
val = c.Value;
str = c.String;
str{val};
disp(['Selection:' str{val}]);
end;
Messtag = c.Callback;
end
Wenn ein Datum in einem bestimmten Zeitraum ausgewählt werden soll (und in diesem Zeitraum jeder Tag zulässig ist) würde ich uidatepicker verwenden und die ganze Anwendung in eine schöne App packen (mit App Designer).
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
danke für die Antwort. datepicker ist wohl das Instrument der Wahl.
Ich hab dann in der Matlabhilfe gesucht und folgenden Code gefunden.
Code:
function mydateapp
fig = uifigure('Position',[340400415300]);
d = uidatepicker(fig,'DisplayFormat','MM-dd-yyyy',...
'Position',[13019015022],...
'Value',datetime(2014,4,9),...
'ValueChangedFcn', @datechange);
function datechange (src,event)
lastdate = char(event.PreviousValue);
newdate = char(event.Value);
msg = ['Change date from ' lastdate ' to ' newdate '?'];
% Confirm new date
selection = uiconfirm(fig,msg,'Confirm Date');
if(strcmp(selection,'Cancel')) % Revert to previous selection if cancelled
d.Value = event.PreviousValue;
end end end
Meine Versuche das ganze so anzupassen das 1. Das ausgewählte Datum in eine Variable übergeben wird und 2. Die Figure geschlossen wird, sobald ein Datum gewählt wurde, sind aber bisher gescheitert.
Ich würde gerne mit einer recht rudimentären Version arbeiten, ob ich das ganze dann hübscher in ein Fenster packe (Auswahl Messtag_1 und Auswahl:Messtag_2, vielleicht eine Abfrage, ob die gewählten Messtage korrekt sind, das würde ich dann später machen.
Mit 'Limit' kannst du wie geschrieben den Zeitraum beschränken.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
jetzt habe ich eine Version mit der ich erstmal "lebe".
Wie erwartet haben meine Kollegen noch Wünsche entwickelt und ich muss erstmal wieder substantiellere Dinge für die Datenauswertung implementieren. Hoffentlich reicht die Projektzeit am Ende noch zum Aufhübschen!
meine Empfehlung zum Aufhübschen wäre wirklich App Designer. Man kann eine schöne Oberfläche für die Funktion(en) zur Verfügung stellen und so eine App auch gut weitergeben.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.