Exist function returning 0 for a variable that definitely exists?

2 次查看(过去 30 天)
I'm trying to use the 'exist' function to check whether a certain variable has been read in from a .csv file, as the existence of that variable defines the direction the rest of the code should take. This is what I have boils down to:
if exist('DATA.processedData.VTI_EX1048_09_CJC09', 'var')
CJCConfirm = 'Yes';
else
CJCConfirm = 'No';
end
(For reasons out of my control, the return has to be 'yes' or 'no'). However, even when running a data set where I know that DATA.processedData.VTI_EX1048_09_CJC09 exists (confirmed by putting it into the command window and seeing it returns a value), this:
exist DATA.processedData.VTI_EX1048_09_CJC09
still returns a 0. I've checked, and the exist function works fine with other variables in my workspace.
What do I need to do differently?

采纳的回答

James Tursa
James Tursa 2018-7-18
编辑:James Tursa 2018-7-18
Don't use exist() with struct field syntax. Only use it for variable names. E.g.,
>> a.f = 4
a =
f: 4
>> exist('a','var')
ans =
1
>> exist('a.f','var')
ans =
0
>> exist('a','var') && isfield(a,'f')
ans =
1
  2 个评论
Steven Lord
Steven Lord 2018-7-18
Also keep in mind that you can't specify multiple levels of indexing in one call to isfield.
a = struct('b', struct('c', 2));
abc = a.b.c % 2
check_bc = isfield(a, 'b.c') % false
check_b_then_c = isfield(a, 'b') && isfield(a.b, 'c') % true
The struct a does not have a field named b.c (and that would be an invalid field name, so it can't have a field with that name) but the struct stored in a.b does have a field named c.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

产品


版本

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by