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

Dropdown & datestr() (Liste von Daten)

 

CryptKeeper
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 10.03.11
Wohnort: ---
Version: MATLAB 7.9.0 (R2009B) / Octave 3.2.3
     Beitrag Verfasst am: 21.04.2011, 10:45     Titel: Dropdown & datestr() (Liste von Daten)
  Antworten mit Zitat      
Ich hab eine Liste mit (Kalender-)Daten in diesem Zahlenformat von Matlab, das sich mit datestr() in lesbare Daten umwandeln lässt. Nun will ich eine Liste dieser Tage zur Auswahl in einem GUI-Dropdown. Die Daten liegen in folgender Form in der Matrize 'timedate' vor:
Code:

>> timedate(1:5)

ans =

   1.0e+05 *

    7.3453
    7.3454
    7.3454
    7.3454
    7.3454

>> size(timedate)

ans =

        9289           1

>>
 

Diese Matrize importiere ich in die GUI-Funktion in die Variable 'handles.timedate'. An die entsprechenden Daten komme ich so:
Code:

>> datestr(timedate(1:144:end),'dd.mm.yyyy')

ans =

01.02.2011
02.02.2011
03.02.2011
04.02.2011
05.02.2011
06.02.2011
07.02.2011
08.02.2011
09.02.2011
10.02.2011
11.02.2011
12.02.2011
13.02.2011
14.02.2011
15.02.2011
16.02.2011
17.02.2011
18.02.2011
19.02.2011
20.02.2011
21.02.2011
22.02.2011
23.02.2011
24.02.2011
25.02.2011
26.02.2011
27.02.2011
28.02.2011
01.03.2011
02.03.2011
03.03.2011
04.03.2011
05.03.2011
06.03.2011
07.03.2011
08.03.2011
09.03.2011
10.03.2011
11.03.2011
12.03.2011
13.03.2011
14.03.2011
15.03.2011
16.03.2011
17.03.2011
18.03.2011
19.03.2011
20.03.2011
21.03.2011
22.03.2011
23.03.2011
24.03.2011
25.03.2011
26.03.2011
27.03.2011
28.03.2011
29.03.2011
30.03.2011
31.03.2011
01.04.2011
02.04.2011
03.04.2011
04.04.2011
05.04.2011
06.04.2011

>>
 

Und diese Datenliste will ich als Liste im Dropdown.

Ich schaff es auch, diesen Dropdown manuell zu füttern:
Code:

timedate_datestr = {'tag1','tag2'}
%timedate_datestr = handles.timedate_datestr;
set(hObject, 'String', timedate_datestr);
guidata(hObject, handles);
 

Aber was ich eigentlich will, habe ich mit der auskommentierten zweiten Zeile versucht. Wenn ich das aber so laufen lasse:
Code:

...
timedate_datestr = datestr(timedate(1:144:end)); % weiter oben im Script...
...
timedate_datestr = {handles.timedate_datestr};
set(hObject, 'String', timedate_datestr);
guidata(hObject, handles);
 

kriege ich folgende Fehlermeldung:
Code:

??? Attempt to reference field of non-structure array.

Error in ==> indexgui>popupmenu1_CreateFcn at 126
timedate_datestr = {handles.timedate_datestr};

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> indexgui at 42
    gui_mainfcn(gui_State, varargin{:});

Error in ==>
@(hObject,eventdata)indexgui('popupmenu1_CreateFcn',hObject,eventdata,guidata(hObject))

 
??? Error using ==> struct2handle
Error while evaluating uicontrol CreateFcn
 


Wie krieg ich die Daten von 'timedate' bzw. 'timedate_datestr' in den Dropdown rein?
Private Nachricht senden Benutzer-Profile anzeigen


tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 26.04.2011, 10:19     Titel:
  Antworten mit Zitat      
Hallo,

wahrscheinlich muß man vorher das char array mit dem Befehl cellstr in ein cell array wandeln:

Code:
timedate_datestr = cellstr(handles.timedate_datestr);


Dann sollte es funktionieren.

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
CryptKeeper
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 10.03.11
Wohnort: ---
Version: MATLAB 7.9.0 (R2009B) / Octave 3.2.3
     Beitrag Verfasst am: 28.04.2011, 13:15     Titel:
  Antworten mit Zitat      
Ich hab jetzt anhand eines GUI-Templates ( edit(fullfile(docroot,'techdoc','creating_guis','examples','simple_gui2.m')) ins Matlab-Terminal einfügen) das GUI ohne GUIDE neu gebastelt, um volle Kontrolle über den Code zu haben. Als ich jetzt die Daten in die Popups eingefügt habe, hat es ohne irgendwelche Probleme beim ersten Versuch geklappt, warum auch immer. Ich hab den Code, den ich bisher habe, mal angehägt, inkl. einem Screenshot des GUIs.

Code:

function index_gui_bastel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% import data

timedate = evalin('base','timedate');
datamat = evalin('base','datamat');

%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

% create (hidden) GUI  
f = figure('Visible','off','Position',[360,500,500,300],'MenuBar','none','Resize','off');

bgc_gui = [0.85,0.85,0.85]; % background color of GUI window and text boxes
bgc_listbox = [0.75,0.75,0.75]; % background color of list box
 
%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

timedatestr = {datestr(timedate(1:144:end),'yyyy / mm / dd')};

popupmenu1 = uicontrol('Style','popupmenu','String',timedatestr,'Position',[105,260,135,25], ...
                       'Callback',{@popupmenu1_Callback});
popupmenu2 = uicontrol('Style','popupmenu','String',timedatestr,'Position',[105,220,135,25], ...
                       'Callback',{@popupmenu2_Callback});
popupmenu3 = uicontrol('Style','popupmenu','String','pop3','Position',[345,260,135,25], ...
                       'Callback',{@popupmenu3_Callback});

listbox_string = {'Index waehlen', ...             % 1
                  '11Windgeschwindigkeit', ...     % 2
                  '12Windrichtung', ...            % 3
                  '13Windrichtung2', ...           % 4
                  '14Windtag', ...                 % 5
                  '21Regentag'};                   % 6

listbox = uicontrol('Style','listbox','String',listbox_string,'Position',[20,55,220,155], ...
                    'BackgroundColor',bgc_listbox,'Callback',{@listbox_Callback});

pushbutton1 = uicontrol('Style','pushbutton','String','Plot anzeigen', ...
                        'Position',[20,15,140,30],'Callback',{@pushbutton1_Callback});
pushbotton2 = uicontrol('Style','pushbutton','String','Plot sichern [png]', ...
                        'Position',[180,15,140,30],'Callback',{@pushbutton2_Callback});
pushbutton3 = uicontrol('Style','pushbutton','String','Daten sichern [dat]', ...
                        'Position',[340,15,140,30],'Callback',{@pushbotton3_Callback});

txtpop1 = uicontrol('Style','text','String','Startdatum:','Position',[20,260,85,25]);
txtpop2 = uicontrol('Style','text','String','Enddatum:','Position',[20,220,85,25]);
txtpop3 = uicontrol('Style','text','String','Station:','Position',[260,260,85,25]);

stdinfotxt = sprintf(['Waehle das Start- und Enddatum fuer den Zeitraum der Daten.\n\n' ...
                      'Waehle in der Liste, was mit den Daten gemacht werden soll.\n\n' ...
                      'Klicke auf den ''Plot''-Button, um den entsprechenden Plot zu ' ...
                      'generieren.\n\nKlicke auf den ''Datenfile'' -Button, um die Daten ' ...
                      'in ein Datenfile zu speichern.']);

txtinfo = uicontrol('Style','Text','String',stdinfotxt,'Position',[260,55,220,190]);  

set([txtpop1,txtpop2,txtpop3,txtinfo],'BackgroundColor',bgc_gui);

%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

set(f,'Name','Index-GUI','Color',bgc_gui);   % GUI window title & background color
movegui(f,'center');                                  % move GUI to the center of the screen
set(f,'Visible','on');                                % make the GUI visible
 
%///////////////////////////////////////////////////////////////////////////////////////////////

% popup menu callbacks -------------------------------------------------------------------------
 
function popupmenu1_Callback(source,eventdata)

end

function popupmenu2_Callback(source,eventdata)

end

function popupmenu3_Callback(source,eventdata)

end

% listbox callback -----------------------------------------------------------------------------

function listbox_Callback(source,eventdata)
    str = get(source, 'String');
    val = get(source,'Value');
    switch str{val};
        case 'Index waehlen'
            set(txtinfo,'String',stdinfotxt)
        case '11Windgeschwindigkeit'
            handles.plottype = 11;
            set(txtinfo,'String','Windgeschwindigkeit')
        case '12Windrichtung'
            handles.plottype = 12;
            set(txtinfo,'String','Windrichtung')
        case '13Windrichtung2'
            set(txtinfo,'String','Windrichtung vs. Windgeschwindigkeit')
            handles.plottype = 13;
        case '14Windtag'
            handles.plottype = 14;
            set(txtinfo,'String','Windtag')
        case '21Regentag'
            handles.plottype = 21;
            set(txtinfo,'String','Regentag')
    end
end

% push button callbacks ------------------------------------------------------------------------

function pushbutton1_Callback(source,eventdata)

end

function pushbutton2_Callback(source,eventdata)

end

function pushbutton3_Callback(source,eventdata)

end
 
end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 


Picture 2.png
 Beschreibung:

Download
 Dateiname:  Picture 2.png
 Dateigröße:  84.27 KB
 Heruntergeladen:  698 mal
Picture 1.png
 Beschreibung:

Download
 Dateiname:  Picture 1.png
 Dateigröße:  72.34 KB
 Heruntergeladen:  709 mal
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.