Verfasst am: 15.09.2013, 15:54
Titel: Auslesen eines dropdown Menüs und übergeben einer Funktion
Hallo zusammen,
ich versuche schon länger ein (wahrscheinlich leichtes) Problem in Matlab zu lösen. Leider bin ich weder programmiertechnisch begabt, noch habe ich Erfahrungen mit Matlab und anderen Programmiersprachen. Vielleicht könnt ihr mir ein wenig weiterhelfen das Prinzip zu verstehen.
Ich programmiere im GUI ein einfaches Programm, das werte aus einem Textfeld ausliest und bei Betätigung eines Pushbuttons drei Funktionen plotet. Dabei kann man außerdem für 3 versch. Fälle die Randbedingungen mittels popup Menü auswählen. Und genau hier komme ich nicht weiter.
Wie lese ich richtig das ausgewählte dropdown menü aus und wie übergebe ich dann die richtige Funktion?
Folgenden Code habe ich bis jetzt geschrieben:
Code:
function keine_Einspannung
X=[q*l/2-q.*x; q*l/2.*x-q.*x.^2/2; 1/(E*I*10^-4)*(q.*x.^4/24-q*l/12.*x.^3+q*l^3/24.*x)];
function rechts_Einspannung
X=[3*q*l/8-q.*x; 3*q*l/8.*x-q.*x.^2/2; 1/(E*I*10^-4)*(q.*x.^4/24-q*l/16.*x.^3+q*l^3/48.*x)];
function beide_Einspannung
X=[q*l/2-q.*x; -q*l^2/12+q*l/2.*x-q.*x.^2/2; 1/(E*I*10^-4)*(q.*x.^4/24-q*l/12.*x.^3+q*l^2/24.*x.^2)];
function plotten_Callback(hObject, eventdata, handles)
% Lese für die Werte E-Modul, Trägheitsmoment I, Trägerlänge l und Gleichlast q die String-Eigenschaft % der Edit-Felder e_modul, traegheitsmoment, traegerlaenge und gleichlast mit get aus % und wandle sie in Zahlen um
E = str2num(get(handles.e_modul,'String'));
I = str2num(get(handles.traegheitsmoment,'String'));
l = str2num(get(handles.traegerlaenge,'String'));
q = str2num(get(handles.gleichlast,'String'));
% x-Werte, Unterteilung des Intervalls [0,l]
x = linspace(0,l,501);
% Fallunterscheidung und auslesen der richtigen Matrix für den jeweiligen % Fall
%Plotten der drei verschiedenen Funktionen in ein eigenes Fenster
subplot(3,1,1) plot(x,X(1,:)) set(gca,'YDir','reverse');
title('Querkraft [kN]') xlabel('x [m]') ylabel('Q(x)[kN]') hold on
Dann musst du dir einmal die Strings und einmal den Wert holen (in dem pushbutton callback)
Code:
DAS.cell=get(handles.DAS,'String'); % Liest alle hinterlegten Strings deines PopDown Menüs aus
DAS.value=get(handles.DAS,'Value'); % Liest den aktuellen Wert des PopDown Menüs aus. Wenn der Wert = 1 ist, ist der erste String selektiert etc.
DAS.string=sprintf('%s', DAS.cell{DAS.value}); % Damit holst du dir nur den selektierten String
Leider funktioniert diese Variante nicht. Es wird immer nur der else - Teil ausgegeben. Die anderen Fälle sind nicht auswählbar. Es gibt auch diesbezüglich keine Fehlermeldung.
Woran könnte das liegen?
Hier ein kurzes Demo Video in ziemlich schlechter Qualität: http://p.osuv.de/index.php/JjU/ (wird in 5 Tagen automatisch gelöscht).
Und im Anhang hab ich noch die beiden Dateien (fig und m file) gezipped hochgeladen.
Mir geht es darum. Wenn der Pushbutton gedrückt wird, dann wird aus dem dropdown menu der ausgewählte Fall ausgelesen. Je nach Fall soll dann eine Matrix ausgewählt werden.
schreiben und dann kann man auch gleich die richtige Matrix benutzen.
Was noch recht seltsam war, war dass beim Vergleich des Ausgelesenen mit z.B.: 'keine Einspannung' Matlab entschieden hat einen Zeilenumbruch einzufügen. Aus diesem Grund war natürlich nie eine Übereinstimmung gegeben und es wurde immer nur otherwise geplotet.
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.