Find Index of Cells Containing My String in MATLAB
Cell Arrays in MATLAB are a type of array that store data in the form of cells. The benefit of using these cell arrays is that they can store data of different types as cells within a cell array only. In this article, we will see how to find a given string in a cell array.
Firstly, we shall check whether the given cell array contains all strings or not. This can be done by the following function:
iscellstr(<cell array>)
It will return 1 if it contains all strings else, 0.
Example 1:
Matlab
% MATLAB array arr = { 'Beginner' , 'for' , 'Beginner' , 'geek' } |
Output:
As it can be seen that all elements of the above array contain all strings so, we shall move ahead.
Now, we can find a string in two manners:
- Part of a string cell.
- Exact matches a string cell.
We shall see both these cases and how to do them.
Finding the Index of My String as Part of a Cell:
To find my string as pattern matching/part of the string, we can use the contains a () function which can then, be passed to the find() function to get the indices.
Syntax:
indices = find(contain(array,string))
Example 2:
Matlab
% MATLAB Array code arr = { 'Beginner' , 'for' , 'Beginner' , 'geek' }; % Converting to cell array arr=cell(arr); %The string to be matches str= 'gee' ; % Getting indices indices = find(contains(arr,str)) |
Output:
As it can be verified that the string ‘gee’ appears in cells 1, 3, and 4.
Finding an Index of My String as an Exact Cell:
To find exact match of my string we shall use the strcmp() function which returns a logical array for exact matches. Then by passing it to the find() function, we shall get the indices of my string’s exact match.
str_logical = strcmp(array,my_string)
indices = find(str_logical)
See the following code for understanding the same.
Example 3:
Matlab
% MATLAB code for Finding an index of % my string as an exact cell % cell array arr = { 'Beginner' , 'for' , 'Beginner' , 'geek' }; arr=cell(arr); % Defining two strings for comparison str1= 'geek' ; str2= 'Beginner' ; % Making logical arrays for both strings str1_log = strcmp(arr,str1); str2_log = strcmp(arr,str2); % Finding indices of exact match of both strings indices_str1 = find(str1_log); indices_str2 = find(str2_log); |
Output:
As we can see, it matched the ‘geek’ string only to its exact match and not to ‘Beginner’.