compare parts of strings
86 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
good morning, I want to know if there is a way to compare parts of strings in matlab.
For example: I want to find a string with 'dog':
A=['dog','cat','ball','hot-dog','god','dogged']
compared to
B=['dog']
should return:
[1,0,0,1,0,1]
In the same way, if I want to compare:
A=['red','green','yellow'] with
B=['greener', 'baseball', 'reddish'],
that should return either [1,1,0] or [1,0,1].
Just want to know if it is possible, because it seems quite impossible for my MATLAB skills.
Thanks
0 commentaires
Réponse acceptée
Stephen23
le 3 Mar 2015
Modifié(e) : Stephen23
le 4 Mar 2015
In MATLAB the square brackets are not a list operator (as a lot of beginners think), but actually a concatenation operator , so your code:
['dog','cat','ball','hot-dog','god','dogged']
simply concatenates all of those strings to give
'dogcatballhot-doggoddogged'
which is probably not what you wanted. And
['dog']
does nothing at all, because there is nothing to concatenate.
>> A = {'dog','cat','ball','hot-dog','god','dogged'};
and 'dog' can simply be defined as a simple string like this
>> B = 'dog';
>> strfind(A,B)
ans =
[1] [] [] [5] [] [1]
which tell us the indices of where string B is found in each of the string in A. If you only need to know if the string exists in A then you can use cellfun on its output:
>> ~cellfun('isempty',strfind(A,B))
ans =
1 0 0 1 0 1
Likewise we can compare a cell array to see if there are any strings contained in the the strings of another cell array, although this is a little more code:
>> A = {'greener', 'baseball', 'reddish', 'mellow-yellow', 'greenspan'};
>> B = {'red', 'green', 'yellow'};
>> C = cellfun(@(s)strfind(A,s),B,'UniformOutput',false);
>> any(~cellfun('isempty',vertcat(C{:})),1)
ans =
1 0 1 1 1
You might also be interested in the matrix, which shows which substrings match between the two cell arrays (the rows=B, the columns=A):
>> ~cellfun('isempty',vertcat(C{:}))
ans =
0 0 1 0 0
1 0 0 0 1
0 0 0 1 0
Note that in all of these examples the code checks if the string/s in B exist in A.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Characters and Strings dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!