find a string element in a structure matrix
显示 更早的评论
assume i have a matrix t =
'abc'
'defg'
'hi'
i want to check if 'abc' is in the matrix t
however this code doesnt seem to work
if (find(t == 'abc') >0)
i get the following error message Undefined function or method 'eq' for input arguments of type 'cell'.
1 个评论
Jan
2012-3-13
FIND replies a vector of indices. Therefore "find()>0" is not working.
采纳的回答
更多回答(2 个)
sworland
2015-12-3
I realize that the answer for this was accepted, but the question did say in a "structure matrix", which I interpreted to mean a structure array. For that the following will find the index of the first occurrence,
index = find(strcmp({structname.field}, 'string')==1)
6 个评论
vettel liu
2017-9-28
Very helpful! Thank you so much.
Adam Thodey
2018-11-23
Fantastic. just what i was looking for!
Alex Lord
2019-9-30
Fantastic! Was searching for ages
Shaul Shvimmer
2020-6-9
Thanks
gao yang
2020-10-15
Merci!!!!
dan
2021-3-10
Perfect! Thanks.
Geoff
2012-3-13
Direct comparison operators (==, etc) don't work with strings.
You need to use strcmp or strcmpi (which ignores case).
Because that function doesn't work on an array, you need to map it:
isabc = cellfun( @(x) strcmp(x,'abc'), t );
This will give you an array of booleans. If you don't care what index the 'abc' occurred at, but just that it exists, you then do this:
if any(isabc)
% etc
end
To obtain the index of the first occurrence, use this:
firstabc = find( isabc, 1 );
-g-
类别
在 帮助中心 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!