在 MATLAB 中查找单元格数组中的精确字符串
MATLAB 是一款为科学家和工程师开发的编程环境,用于设计和分析系统、执行数据分析、创建可视化效果等等。MATLAB 代表矩阵实验室 (Matrix Laboratory),它是由 MathWorks 开发的一个编程和交互式平台,提供各种用于编程数学函数和运算、数据分析等的工具。MATLAB 广泛应用于科学、工程、金融、经济等不同领域。
阅读本文以了解在 MATLAB 中查找单元格数组中的精确字符串的过程。
什么是 MATLAB 中的单元格数组?
在 MATLAB 中,单元格数组是一种数据结构,其中数组的每个元素都可以包含不同类型的数据。因此,在一个单元格数组中,每个元素可以包含不同类型的数据的混合,例如整数、浮点数、字符、其他数组等等。
在 MATLAB 中,我们可以使用以下两种语法定义单元格:
A = {'banana', 5.215, [1, 4]}
或者
A = cell({'banana', 5.215, [1, 4]})
这里,单元格数组“A”包含三个不同数据类型的元素,如下所示:
第一个元素是字符串“banana”。
第二个元素是浮点数“5.215”。
第三个元素是一个值为 [1, 4] 的普通数组。
现在,让我们讨论如何在单元格数组中查找精确的字符串。
在 MATLAB 中查找单元格数组中的精确字符串
在 MATLAB 中,我们可以使用以下两种 MATLAB 函数组合来查找单元格数组中的精确字符串。
strcmp() 和 find() 函数。
ismember() 和 find() 函数。
让我们通过程序示例了解如何在 MATLAB 中使用这些函数组合来查找单元格数组中的精确字符串。
方法 1:使用 strcmp() 和 find() 函数
在 MATLAB 中,我们可以使用 strcmp() 和 find() 函数的组合来查找单元格数组中的精确字符串。
示例 1
下面的 MATLAB 程序演示了如何使用 strcmp() 和 find() 函数的组合来查找单元格数组中的精确字符串。
% 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()”函数返回一个逻辑数组,如果单元格数组的对应元素等于目标字符串,则每个元素都为真(逻辑 1)。然后,我们使用“find()”函数查找逻辑数组中真(逻辑 1)元素的索引,该索引对应于给定单元格数组中目标字符串的索引。
现在,在代码中,如果“index”变量不为空,则在单元格数组中将找到目标字符串。因此,程序的输出将为“目标字符串在索引 4 处找到”,这表明目标字符串存在于给定单元格数组的索引 4 处。
方法 2:使用 ismember() 和 find() 函数
在 MATLAB 中,我们还可以使用 ismember() 和 find() 函数的组合来查找单元格数组中的精确字符串。
示例 2
下面的 MATLAB 程序演示了如何在 MATLAB 中使用 ismember() 和 find() 函数的组合来查找单元格数组中的精确字符串。
% 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()”函数返回一个逻辑数组,如果单元格数组的对应元素等于目标字符串,则每个元素都为真(逻辑 1)。
我们使用 find() 函数查找逻辑数组中真(逻辑 1)元素的索引,该索引对应于给定单元格数组中目标字符串的索引。最后,如果“index”变量不为空,则在单元格数组中将找到目标字符串。
因此,MATLAB 程序的输出将为“目标字符串在索引 4 处找到”。这表明目标字符串在给定单元格数组的索引 4 处找到。
结论
我们可以使用“strcmp()”和“find()”或“ismember()”和“find()”函数的组合来查找 MATLAB 单元格数组中的精确字符串。“strcmp()”和“ismember()”函数都返回一个逻辑数组,如果单元格数组的对应元素等于目标字符串,则每个元素都为真(逻辑 1)。因此,使用这两个 MATLAB 函数,我们可以轻松快速地在单元格数组中搜索特定元素,并获得其在单元格数组中的索引值。