Variable evaluated with "evalin" vanishes
Ältere Kommentare anzeigen
Hello everyone, I just received Matlab 2014b after working with 2012a and I tried to run my „old“ scripts. Now the problem I encountered was the following: I store some data x using assignin to the ‘base’ workspace. I created a GUI (with guide) which is supposed to (among others) plot the data x in an axis. This is the part of the code which should (and in 2012a DID) plot the data:
function Show_path_CreateFcn(hObject, eventdata, handles)
% hObject handle to Show_path (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
data_laser = evalin('base', 'ld');
plot(data_laser(:,3));
Now here is the strange part: It reads the data from the workspace (I know because when I leave out the semicolon, all numbers are “written out” in the command window) but the plot-function returns an error, telling me that my variable “data_laser” doesn’t exist. Can somebody help me here? Thank you in advance!
3 Kommentare
Rich Ohman
am 19 Mär. 2015
Can you provide the exact error message? Is it possible that the base workspace variable is being cleared?
Stephen23
am 23 Mär. 2015
Avoid using evalin and eval for passing variables like this. Use guidata or the handles structure instead and you will avoid this problem altogether.
CrazyEngineer
am 23 Mär. 2015
Akzeptierte Antwort
Weitere Antworten (1)
Image Analyst
am 18 Mär. 2015
0 Stimmen
OK, good. It's a blessing in disguise. Now you can program it up properly without using functions like evalin(), assignin(), and eval(). See the FAQ for better methods: http://matlab.wikia.com/wiki/FAQ#How_can_I_share_data_between_callback_functions_in_my_GUI.28s.29.3F
4 Kommentare
CrazyEngineer
am 18 Mär. 2015
Image Analyst
am 19 Mär. 2015
Probably. But are you sure that "ld" is still in the base workspace? How can you see the base workspace? When you're in the debugger you can only see the local workspace of the specific function that you're in.
What is the difference between your GUI and your main script? Is it all in one m-file that you're using GUIDE with? Or do you have a GUI m-file (either a script or a GUIDE-built function) and a separate "main script" m-file?
CrazyEngineer
am 23 Mär. 2015
Guillaume
am 23 Mär. 2015
@Image Analyst, totally agree with using a better method of sharing data between gui and main code. I just want to correct something:
When you're in the debugger you can only see the local workspace of the specific function that you're in
Kategorien
Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!