Exist function returning 0 for a variable that definitely exists?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Brendan Macklem
am 18 Jul. 2018
Kommentiert: Brendan Macklem
am 18 Jul. 2018
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 Kommentare
Akzeptierte Antwort
James Tursa
am 18 Jul. 2018
Bearbeitet: James Tursa
am 18 Jul. 2018
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 Kommentare
Steven Lord
am 18 Jul. 2018
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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!