MATLAB 查找单元格数组中的精确字符串
MATLAB 是为科学家和工程师开发的编程环境,用于设计和分析系统,进行数据分析,创建可视化等。MATLAB代表Matrix Laboratory,它是由MathWorks开发的编程和交互平台,提供了各种工具来编程数学函数和操作、数据分析等。MATLAB在科学、工程、金融、经济等不同领域广泛应用。
阅读本文以了解在MATLAB中查找单元格数组中精确字符串的过程。
什么是MATLAB中的单元格数组
在MATLAB中, 单元格数组 是一种数据结构,其中数组的每个元素可以包含不同数据类型的数据。因此,在单元格数组中,每个元素可以包含混合不同数据类型的数据,如整数、浮点数、字符、其他数组等。
在MATLAB中,我们可以使用以下两种语法定义单元格−
A = {'banana', 5.215, [1, 4]}
或者
A = cell({'banana', 5.215, [1, 4]})
这里,cell数组”A”包含三个不同数据类型的元素,分别为:
- 第一个元素是字符串”banana”。
-
第二个元素是浮点数”5.215″。
-
第三个元素是值为[1, 4]的普通数组。
现在,让我们讨论如何在cell数组中找到精确的字符串。
在MATLAB中查找cell数组中的精确字符串
在MATLAB中,我们可以使用以下两个MATLAB函数的组合来查找cell数组中的精确字符串:
- strcmp()和find()函数。
-
ismember()和find()函数。
让我们通过程序示例来看看如何在MATLAB中使用这些函数组合来查找cell数组中的精确字符串。
方法1:使用strcmp()和find()函数
在MATLAB中,我们可以使用strcmp()和find()函数的组合来在cell数组中查找精确字符串。
示例1
以下MATLAB程序演示了使用strcmp()和find()函数的组合来查找cell数组中精确字符串的过程。
% Create a cell array of strings
A = {'Tutorials', 'Point', 'for', 'MATLAB'}
% Choose a target string
target_string= 'MATLAB'
% Get a logical array from strcmp
strcmp(A, target_string)
% Find the index of the target string
index = find(strcmp(A, target_string))
% Check if the target string is found
if ~isempty(index)
fprintf('The target string is found at index %d.
', index)
else
fprintf('The target string is not found.
')
end
输出
它将产生以下 输出 –
A = 1×4 cell array
{'Tutorials'} {'Point'} {'for'} {'MATLAB'}
target_string = 'MATLAB'
ans = 1×4 logical array
0 0 0 1
index = 4
The target string is found at index 4.
解释
在这段MATLAB代码中,我们首先创建了一个包含四个字符串“{‘Tutorials’, ‘Point’, ‘for’, ‘MATLAB’}”的单元数组“A”。然后,我们选择了一个目标字符串“MATLAB”。接下来,我们使用“strcmp()”函数返回一个逻辑数组,其中每个元素等于true(逻辑1),如果单元数组的对应元素等于目标字符串。然后,我们使用“find()”函数找到逻辑数组中等于true(逻辑1)的元素的索引,该索引对应于给定单元数组中目标字符串的索引。
现在,在代码中,如果“index”变量不为空,则表示在单元数组中找到了目标字符串。因此,程序的输出将为“The target string was found at index 4.”,表示目标字符串在给定单元数组中的索引为4。
方法2:使用ismember()和find()函数
在MATLAB中,我们也可以使用ismember()和find()函数的组合来查找单元数组中的精确字符串。
示例2
以下MATLAB程序演示了如何使用ismember()和find()函数的组合在MATLAB中查找单元数组中的精确字符串。
% Create a cell array of strings
A = {'Tutorials', 'Point', 'for', 'MATLAB'}
% Choose a target string
target_string = 'MATLAB'
ismember(A, target_string)
% Check if the target string is in the cell array
index = find(ismember(A, target_string))
% Check if the target string is found
if ~isempty(index)
fprintf('The target string is found at index %d.
', index)
else
fprintf('The target string is not found.
')
end
输出
它将产生以下输出 输出 −
A = 1×4 cell array
{'Tutorials'} {'Point'} {'for'} {'MATLAB'}
target = 'MATLAB'
ans = 1×4 logical array
0 0 0 1
index = 4
The target string is found at index 4
解释
在这个MATLAB代码中,我们使用了ismember()函数来检查目标字符串是否在单元格数组中。在MATLAB中,”ismember()”函数返回一个逻辑数组,其中每个元素在单元格数组的对应元素等于目标字符串时为true(逻辑1)。
我们使用find()函数来找到逻辑数组中为true(逻辑1)的元素的索引,这个索引对应于给定单元格数组中的目标字符串的索引。最后,如果”index”变量不为空,那么目标字符串将在单元格数组中找到。
因此,MATLAB程序的输出将是”目标字符串在索引4处找到”。这表明在给定的单元格数组中,目标字符串在索引4处找到。
结论
我们可以使用”strcmp()”和”find()”或”ismember()”或”find()”函数的组合来在MATLAB中找到一个精确的字符串。”strcmp()”和”ismember()”函数都返回一个逻辑数组,在这个数组中,每个元素如果单元格数组的对应元素等于目标字符串,则为true(逻辑1)。因此,使用这两个MATLAB函数,我们可以轻松快速地搜索单元格数组中的特定元素,并获取它在单元格数组中的索引值。