Check if variable exists in workspace to plot variable, else generate error
1.643 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Maarten
am 9 Jan. 2015
Kommentiert: Alex Morgan
am 16 Aug. 2022
Hi there,
I am having some trouble with checking if a variable exists in the workspace. If the variable exists (which is a structure with time), it should plot the data in my GUI. If the variable does not exist, it should generate an error.
I used this code, however it will always generate an error even if the variable does exist in the workspace. I cannot find what I am doing wrong.
function AmechM_Callback(hObject, eventdata, handles)% Executes on button press in AmechM.
if exist('AmechM','var')
AmechM = evalin('base','AmechM');
plot(AmechM.time,AmechM.signals.values);
xlabel(handles.ax1,'time (s)');
ylabel(handles.ax1,'Acceleration (rad/s²)');
else
errordlg('The workspace does not contain any data. Run a simulation first.','Error');
end
2 Kommentare
per isakson
am 9 Jan. 2015
"exists in the workspace"   which workspace, that of the callback function or the base?
Akzeptierte Antwort
per isakson
am 9 Jan. 2015
Bearbeitet: per isakson
am 9 Jan. 2015
replace
if exist('AmechM','var')
by
if exist('AmechM','var') == 1
or rather by
ise = evalin( 'base', 'exist(''AmechM'',''var'') == 1' )
if ise
since you want to know whether AmechM exists in the base workspace
and read the on-line help on exist and on "scope"
8 Kommentare
Moritz Plinke
am 14 Feb. 2020
Bearbeitet: Moritz Plinke
am 14 Feb. 2020
I know answer is really late but I struggled on a very similar case. My solution is using the function fieldnames().
contains( fieldnames( variable_to_inspect) , 'sub_variable_name_string' )
To make it suitable and robust for "if", use sum()
sum( contains( fieldnames( variable_to_inspect ) , 'sub_variable_name_string' ) )
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!