Verfasst am: 06.05.2009, 11:16
Titel: Variable Pop Up Menüs
Moinsen,
ich habe messdaten von 96 Sensoren, die ich in gui dargestellt habe. insgesamt werden es 3 plots.
der eine plot zeigt mir alle Messdaten der 96 Sensoren an.
der zweite plot zeigt mit eine Auswahl der gemessenen plots an: z.B. von Sensor 3-16.
Dies habe ich bisher mit nem m-file realisiert. Nun will ich aber diese Auswahl Variabel mit 2 pop up menus machen.
pop up 1: von Sensor x
pop up 2: bis Sensor y
hier will ich auswählen, welchen Bereich er mit plotten soll.
Wie mache ich das am besten?
Will nicht alle 96 Sensoren einzeln im pop up Menu eingeben, geht es vielleicht über ne Schleife???
hab jetzt 2 pup up menus.
bin jetzt so weit, dass ich einzelne sensoren darstellen kann, mit dem case befehl. ist jedoch umständlich, da ich ja 96 cases habe, geht das in ner schleife und wenn ja wie?
und darüberhinaus will ich nicht einzelne Sensoren dargestellt haben, sondern zusammenhängende von Sensor 4 bis Sensor 18 zum Beispiel.
den anfangssensor wähle ich im ersten pop up menu und den endsensor im zweiten popup menü.
functionvarargout = argus_test(varargin) % ARGUS_TEST M-file for argus_test.fig % ARGUS_TEST, by itself, creates a new ARGUS_TEST or raises the existing % singleton*.
%
% H = ARGUS_TEST returns the handle to a new ARGUS_TEST or the handle to % the existing singleton*.
%
% ARGUS_TEST('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in ARGUS_TEST.M with the given input arguments.
%
% ARGUS_TEST('Property','Value',...) creates a new ARGUS_TEST or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before argus_test_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to argus_test_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help argus_test
% Last Modified by GUIDE v2.5 06-May-2009 13:59:52
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @argus_test_OpeningFcn, ...
'gui_OutputFcn', @argus_test_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
% --- Executes just before argus_test is made visible. function argus_test_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to argus_test (see VARARGIN)
% Einlesen der Argus Messdaten aus der "txt.Datei mit Sensornumerrierung
daten = load('test Argus_ohne_Zeit.txt');
%Messdaten weise ich der Matrix A vom Typ(7681,96) zu
A = [daten];
%Startzeile in Matrix A hinzufügen und mit Werten füllen, die die Anzahl
%der Spalten bzw. die Anzahl der Sensoren wiedergibt:
%Da durch das Einfügen der Startzeile, die Länge des Zeitvektors nicht mit
%der Länge der Datenmatrix übereinstimmt, füge ich auch dem Zeitvektor t ein
%Element an erster Stelle zu mit dem Wert 0. Es wird wieder gewährleistet, dass die
%Zeit den äquivalenten Messwerten zugewiesen werden und es auch beim
%Plotten keine Versetzung zustande kommt.
t = 0:12:92160; %Zeilen-Zeitvektor
t = [0 t]; %modifizierter Zeitvektor: beginnend mit der
%Zeit erst ab 2. Zeile
t1 = t'; %transponierter Zeitvektor --> Spaltenvektor
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Darstellung aller Messdaten mit allen Sensoren:
% UIWAIT makes argus_test wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = argus_test_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
% --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Einlesen der Argus Messdaten aus der "txt.Datei mit Sensornumerrierung
daten = load('test Argus_ohne_Zeit.txt');
%Messdaten weise ich der Matrix A vom Typ(7681,96) zu
A = [daten];
A=[1:size(A,2);A];
%Zeitvektor t erstellen:
t = 0:12:92160;
t = [0 t];
t1 = t';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Darstellung von Messdaten rausgegriffener Sensoren:
%Nummer des ausgewählten Menü Eintrags
val=get(hObject, 'Value');
%Liste der Texte im Pop Up Menü (Cell Array)
str=get(hObject,'string');
%Text zur Nummer des ausgewählten Menü-Eintrags
switch(str{val})
%Eintrag 1 wurde gewählt -> plotten von Sensor 1 case '1'
plot(handles.axes2, t1, A(:,1));
case '88'
plot(handles.axes2,t1, A(:,88));
end
edit by steve: Code-Umgebung ergänzt. Bitte in Zukunft selbständig den Button oben in der Mitte verwenden!
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.