在MATLAB中查找包含我的字符串的单元格的索引
MATLAB中的单元格阵列是一种以单元格形式存储数据的阵列。使用这些单元格数组的好处是,它们可以将不同类型的数据仅作为单元格存储在单元格数组中。在这篇文章中,我们将看到如何在一个单元格数组中找到一个给定的字符串。
首先,我们将检查给定的单元格数组是否包含所有字符串。这可以通过以下函数来完成。
iscellstr(<cell array>)
如果它包含所有的字符串,它将返回1,否则,返回0。
示例 1:
% MATLAB array
arr = {'geeks','for','geeks','geek'}
输出:
可以看出,上述数组的所有元素都包含所有的字符串,因此,我们将继续前进。
现在,我们可以通过两种方式找到一个字符串。
1.弦细胞的一部分。
2.完全匹配一个字符串单元。
我们将看到这两种情况以及如何做到这一点。
寻找作为单元格一部分的我的字符串的索引。
为了找到我的字符串作为模式匹配/字符串的一部分,我们可以使用包含()函数,然后,可以传递给find()函数以获得索引。
语法:
indices = find(contain(array,string))
.
示例 2:
% MATLAB Array code
arr = {'geeks','for','geeks','geek'};
% Converting to cell array
arr=cell(arr);
%The string to be matches
str='gee';
% Getting indices
indices = find(contains(arr,str))
输出:
可以验证的是,字符串’gee’出现在单元格1、3和4中。
寻找我的字符串作为一个精确单元格的索引。
为了找到完全匹配的字符串,我们将使用strcmp()函数,它返回一个完全匹配的逻辑数组。然后,通过将其传递给find()函数,我们将得到我的字符串的精确匹配的索引。
str_logical = strcmp(array,my_string)
indices = find(str_logical)
请看下面的代码来理解。
示例 3:
% MATLAB code for Finding an index of
% my string as an exact cell
% cell array
arr = {'geeks','for','geeks','geek'};
arr=cell(arr);
% Defining two strings for comparison
str1='geek';
str2='geeks';
% 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);
输出:
我们可以看到,它只与 “geek “字符串完全匹配,而不是与 “geek “匹配。