在 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 函数,我们可以轻松快速地在单元格数组中搜索特定元素,并获得其在单元格数组中的索引值。

更新于:2023年7月26日

410 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告