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

golaber workspace

 

slinshady
Forum-Century

Forum-Century


Beiträge: 115
Anmeldedatum: 12.01.16
Wohnort: ---
Version: R2012b+
     Beitrag Verfasst am: 18.04.2016, 11:11     Titel: golaber workspace
  Antworten mit Zitat      
Hallo ich suche eine Möglichkeit eine struct zu laden, die dann von allen callback und createFcn der Anwendungen benutzt werden kann.

ich habe die struct in handles.data der openingFcn schreiben wollen, allerdings benötige ich zum Beispiel schon Daten aus der struct zum erstellen mehrerer Popupmenüs. Es kann ja nicht sinnvoll sein, den load befehl für jedes popmenü aufzurufen.

Außerdem versuche ich später mit der Auswahl weiter zu arbeiten.

data.strings=
'leer' 'kappa_ml' 'kappa_rl' 'dmax_ml' 'd_rl'

data=
data.strings, data.kappa_ml, data.s_ml


dort soll später data.kappa_rl data.s_rl usw hinzukommen

was ich momentan noch nicht hinbekomme ist, dass wenn ich mir folgend:

Code:
popup_sel_111 = get(handles.popup111, 'Value');
str = get(handles.popup111, 'String');
v=str{popup_sel_111}


den string kappa_ml aus dem popmenü hole, möchte z.B. ich mit data.v die datei laden
ich habe dort schon mit eval , feval , und evalin versucht zu arbeiten. bekomme aber diese fehler

Code:
>> plot(data.s,feval('data','str'))
Error using feval
Undefined function 'data' for input arguments of type 'char'.


Ansonsten wäre ich sehr dankbar für einen tipp, wie ich mein v auf ihren Inhalt prüfen kann.

wenn ich nämlich weiß, ob es _ml oder _rl enthält, könnte ich später beim plot exakter arbeiten

bspcode:
Code:
if ( v contains _ml)
    plot(handles.axes11,data.s_ml,data.v,'-b.', DisplayName, 'kappa_ml');
    xlabel('s_ml');
    ylabel('kappa_ml')
elseif ( v contains _rl)
     plot(handles.axes11,data.s_rl,data.v,'-b.', DisplayName, 'kappa_rl');
    xlabel('s_rl');
    ylabel('kappa_rl')
end


bsp1.jpg
 Beschreibung:

Download
 Dateiname:  bsp1.jpg
 Dateigröße:  30.15 KB
 Heruntergeladen:  407 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.04.2016, 11:23     Titel:
  Antworten mit Zitat      
Hallo,

zum Verwalten der Daten siehe
http://de.mathworks.com/help/matlab.....data-among-callbacks.html

Zitat:
Ansonsten wäre ich sehr dankbar für einen tipp, wie ich mein v auf ihren Inhalt prüfen kann.
wenn ich nämlich weiß, ob es _ml oder _rl enthält

Das kannst du mit strfind herausfinden.

Wenn v das zu verwendende Feld ist, musst du
Code:
schreiben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
slinshady
Themenstarter

Forum-Century

Forum-Century


Beiträge: 115
Anmeldedatum: 12.01.16
Wohnort: ---
Version: R2012b+
     Beitrag Verfasst am: 18.04.2016, 12:25     Titel:
  Antworten mit Zitat      
danke! Das waren ja gleich alle antworten in einem kurzen Post ^^

das mit dem globalen Workspace muss ich jetzt erstmal verstehen.

Im Moment tuh ich das noch nicht so ganz. Aber es ist möglich in z.B. der openingFcn oder eine .mat Datei zu laden und dann in allen Funktionen darauf zuzugreifen.

Soweit ich das verstanden habe sollte es doch so funktionieren oder??

Code:
% --- Executes just before endgui is made visible.
function endgui_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 endgui (see VARARGIN)

% Choose default command line output for endgui
handles.output = hObject;
load('data.mat');
handles.data=data;
% Update handles structure
guidata(hObject, handles);


leider funktioniert es bei mir aber noch nicht darauf in den creatFcn der Popmenüs darauf zuzugreifen.


Code:
function popup111_CreateFcn(hObject, eventdata, handles)
% hObject    handle to popup111 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
% set(hObject, 'String', {'leer','\kappa Mittellinie', '\kappa Rennlinie', 'dmax Mittellinie', 'd Rennlinie'});
set(hObject, 'String', handles.data.strings);



=>

Attempt to reference field of non-structure array.

Error in endgui>popup111_CreateFcn (line 630)
set(hObject, 'String', handles.data.strings);

Error in gui_mainfcn (line 96)
feval(varargin{:});

Error in endgui (line 42)
gui_mainfcn(gui_State, varargin{:});

Error in @(hObject,eventdata)endgui('popup111_CreateFcn',hObject,eventdata,guidata(hObject))
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.04.2016, 13:42     Titel:
  Antworten mit Zitat      
Hallo,

ich persönlich nutze nie die CreateFcns, sondern stecke alles in die OpeningFcn.

Überprüfe doch mal mit dem Debugger, ob zuerst die CreateFcn oder die OpeningFcn ausgeführt werden. Ich würde vermuten die CreateFcn, und das wäre die Erklärung für das Problem.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
slinshady
Themenstarter

Forum-Century

Forum-Century


Beiträge: 115
Anmeldedatum: 12.01.16
Wohnort: ---
Version: R2012b+
     Beitrag Verfasst am: 18.04.2016, 17:14     Titel:
  Antworten mit Zitat      
so wie es dort ist. habe ich es doch in der openingFcn?
oder verstehe ich dich falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.04.2016, 18:54     Titel:
  Antworten mit Zitat      
Hallo,

sowohl dein Code als auch die Fehlermeldung geben klar an, dass du popup111_CreateFcn statt der OpeningFcn verwendest.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
slinshady
Themenstarter

Forum-Century

Forum-Century


Beiträge: 115
Anmeldedatum: 12.01.16
Wohnort: ---
Version: R2012b+
     Beitrag Verfasst am: 19.04.2016, 13:53     Titel:
  Antworten mit Zitat      
achso ja aber ich möchte ja das handle von der OpeningFcn verwenden. Doch darauf komme ich irgendwie nicht Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.04.2016, 18:03     Titel:
  Antworten mit Zitat      
Hallo,

was soll denn das "handle von der OpeningFcn" sein?

Natürlich kannst du in der OpeningFcn nicht hObject verwenden, sondern musst das Handle aus der handles-Struktur holen, vermutlich
Zitat:
set(handles.popup111, 'String', handles.data.strings);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
slinshady
Themenstarter

Forum-Century

Forum-Century


Beiträge: 115
Anmeldedatum: 12.01.16
Wohnort: ---
Version: R2012b+
     Beitrag Verfasst am: 19.04.2016, 18:57     Titel:
  Antworten mit Zitat      
Hmmm, ich habe es jetzt für 24 solcher popmenüs plus 6 Achsen dazu jedesmal mit load geladen. Ist zwar nicht schön programmiert aber läuft immerhin. Hab jetzt leider aber auch nicht mehr die zeit mir das was anzulesen. Da setze ich mich nach der Abgabe nochmal dran ^^

Danke aber schonmal für die Hilfe bisher!!!
Dieses Forum ist der Hammer
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.04.2016, 20:23     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe wirklich nicht, was dich davon abhält, den Vorschlag umzusetzen.
Du brauchst ja nur die zuletzt vorgeschlagene Zeile in die OpeningFcn zu kopieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
slinshady
Themenstarter

Forum-Century

Forum-Century


Beiträge: 115
Anmeldedatum: 12.01.16
Wohnort: ---
Version: R2012b+
     Beitrag Verfasst am: 19.04.2016, 20:26     Titel:
  Antworten mit Zitat      
set(handles.popup111, 'String', handles.data.strings);

Das hier?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.04.2016, 21:19     Titel:
  Antworten mit Zitat      
Ja.
Private Nachricht senden Benutzer-Profile anzeigen
 
slinshady
Themenstarter

Forum-Century

Forum-Century


Beiträge: 115
Anmeldedatum: 12.01.16
Wohnort: ---
Version: R2012b+
     Beitrag Verfasst am: 20.04.2016, 19:16     Titel:
  Antworten mit Zitat      
herzlichen Dank!!!!


Very Happy
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 - 2024 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.