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?
0 个评论
采纳的回答
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
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 Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!