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

Variablen Global oder in den "base" Workspace setz

 

Felix16

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2020, 14:30     Titel: Variablen Global oder in den "base" Workspace setz
  Antworten mit Zitat      
Hallo,
ich wollte mal nachfragen wo genau denn in Matlab der Unterschied liegt, wenn ich eine Variable global setzte oder nur in den "base" Workspace? Beispielsweise hol ich mir eine Variable in einer function in meinem GUI Skript mithilfe von Eingabefeldern heraus und möchte mit dieser in einer anderen Funktion im selben Skript weiterarbeiten. Welche Möglichkeiten gibt es da?
Lg, Felix


Felix16

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2020, 14:34     Titel:
  Antworten mit Zitat      
Hier meine 2 Überlegungen dazu:

function freqrange1_min_Callback(~, ~, handles)

frange1_min_val = str2double(char(get(handles.freqrange1_min, 'String')));
assignin('base','frange1_min', frange1_min_val);


function setGlobalfrange1_min(frange1_min_val)
global frange1_min
frange1_min = frange1_min_val;
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.04.2020, 14:51     Titel:
  Antworten mit Zitat      
Hallo,

global: überall verwendbar, wo die entsprechende Variable als global definiert ist.
base: ein bestimmter Workspace, auf den man von außen über evalin / assignin zugreifen kann.

Aber: empfehlenswert ist weder der eine noch der andere Ansatz, weil die Variablen nicht direkt der GUI zugeordnet sind. Besser:
https://www.mathworks.com/help/matl.....data-among-callbacks.html
Mein bevorzugter Weg ist Application Data (setappdata / getappdata). Allerdings nur, sofern du mit GUIDE arbeitest, so wie dein Code aussieht.

Der wirklich empfehlenswerte Weg ist App Designer. Dort werden zusätzliche Informationen als eigene Eigenschaften (properties) der App abgelegt.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Felix16

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2020, 15:36     Titel:
  Antworten mit Zitat      
Danke für die Antwort,
wenn ich also in App Designer die Variable einlese kann ich direkt in dem ganzen Skript der App damit arbeiten ohne zusätzlichen Aufwand?
Lg, Felix
 
Harald
Forum-Meister

Forum-Meister


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

ja. Eigene Eigenschaft myProp anlegen, an einer Stelle über app.myProp = ... belegen und dann an jeder anderen Stelle mit app.myProp abrufen.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Felix16

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2020, 17:14     Titel:
  Antworten mit Zitat      
In der Matlab Hilfe stehts ja so drinnen:

setappdata(obj,name,val);

Ist dann mein Object der Tag des Feldes bzw die Benennung der Funktion des Eingabefeldes? Also würde das dann folgendermaßen aussehen?

function freqrange1_min_Callback(~, ~, handles)

frange1_min_val = str2double(char(get(handles.freqrange1_min, 'String')));
setappdata (freqrange1_min_Callback, frange1_min, frange1_min_val);
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.04.2020, 17:19     Titel:
  Antworten mit Zitat      
Hallo,

das erste Argument muss ein Handle auf ein Objekt sein, das zweite Argument muss eine Zeichenkette sein, also eher:
Code:
setappdata (handles.figure1, 'frange1_min', frange1_min_val);


Wenn du das später wieder abfragen willst:
Code:
wert = getappdata(handles.figure1, 'frange1_min');

Das gilt aber wie gesagt für GUIDE. Eben hast du zu App Designer gefragt, da ist die Vorgehensweise wie gezeigt anders (und deutlich einfacher).

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Felix16

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2020, 17:33     Titel:
  Antworten mit Zitat      
Mir geht der Sinn des Objects nicht ganz ein. Erstelle ich das erst mit setappdata oder existiert dieses bereits davor?
 
Harald
Forum-Meister

Forum-Meister


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

in dem Objekt werden die Daten gespeichert. Das muss bereits vorher existieren.
Üblicherweise verwendet man die Figure, bei GUIDE standardmäßig handles.figure1.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Felix16

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2020, 17:56     Titel:
  Antworten mit Zitat      
Danke, ich hoff ich habs jetzt verstanden..
Also erstelle ich nur eine Art Zwischenspeicher mithilfe von figure, damit ich in diesen jederzeit Variablen speichern kann um später wieder darauf zugreifen zu können?
Lg, Felix
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.04.2020, 20:31     Titel:
  Antworten mit Zitat      
Ja, genau.

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 ;)
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.