Check if variable exists in workspace to plot variable, else generate error

1.584 visualizaciones (últimos 30 días)
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 comentarios
per isakson
per isakson el 9 de En. de 2015
"exists in the workspace" &nbsp which workspace, that of the callback function or the base?

Iniciar sesión para comentar.

Respuesta aceptada

per isakson
per isakson el 9 de En. de 2015
Editada: per isakson el 9 de En. de 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 comentarios
Moritz Plinke
Moritz Plinke el 14 de Feb. de 2020
Editada: Moritz Plinke el 14 de Feb. de 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' ) )
Alex Morgan
Alex Morgan el 16 de Ag. de 2022
Yes, I think fieldnames is the best solution for structures

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by