在MATLAB中查找包含我的字符串的单元格索引


在MATLAB中,单元数组是一种用于保存不同数据类型和大小的数据的数据结构。简而言之,单元数组允许我们存储不同类型的数据,如数字、字符、字符串、数组等等。

在单元数组中,每个单元格可以包含特定类型的数据。单元数组是处理异构数据的有力工具。

在MATLAB中,花括号 '{}' 用于创建单元数组,即

CellArray = {10, 'TutorialsPoint', [2 3 4]};

因此,当我们需要将不同类型的数据或不同大小的数据一起存储时,单元数组起着至关重要的作用。

在本篇文章中,我们的主要目标是使用MATLAB查找单元数组中特定字符串的索引。我们可以使用以下两种方法中的任何一种:

  • 使用循环和条件语句的组合

  • 使用内置函数

现在让我们借助示例程序详细讨论每种方法。

使用循环和条件语句查找我的字符串的索引

在MATLAB中,我们可以使用条件语句和循环来查找包含我的字符串的单元格的索引。

示例

下面的MATLAB程序演示了查找包含我的字符串的单元格索引的代码实现。

% MATLAB program to find index of my string using loops and conditional statements
% Create a sample cell array of strings
A = {'Tutorials', 'Point', 'is', 'a', 'Great', 'Platform', 'to', 'Learn', 'Programming'};

% Specifying my string whose index I want to know
S = 'Learn';

% Create an empty array to store the index
I = [];

% Loop through the cell array
for i = 1:numel(A)
    if strcmp(A{i}, S)
        I = [I, i];
    end
end

% Display the index of cells containing my string
disp('Index of cells containing my string:');
disp(I);

输出

Index of cells containing my string:
     8

解释

在这个MATLAB代码中,我们首先创建一个包含各种字符串的单元数组 'A'。然后,我们指定要查找其在单元数组中索引的字符串 'S',在本例中为 'Learn',您可以根据需要更改它。

之后,我们创建一个空数组 'I' 来存储包含指定字符串的单元格的索引。接下来,我们使用 'for' 循环遍历单元数组,其中我们使用 'strcmp' 函数将单元格字符串与指定字符串进行比较。如果两个字符串匹配,则包含该字符串的单元格的索引将存储到索引数组 'I' 中。

最后,我们使用 'disp' 函数显示包含指定字符串的单元格的索引。

需要注意的是,当单元数组具有大型数据集时,循环方法效率不高。在这种情况下,我们使用一些内置函数来查找单元数组中指定字符串的索引。

现在,让我们使用内置函数的组合来执行相同的操作。

使用内置函数查找我的字符串的索引

在MATLAB中,我们可以使用内置函数的组合来查找包含指定字符串的单元格的索引。下面将借助示例程序解释一些常用的内置函数组合来查找单元格的索引。

示例

下面的MATLAB代码展示了如何使用 "find" 和 "strcmp" 函数查找我的字符串的索引

% Create a sample cell array of strings
A = {'Tutorials', 'Point', 'is', 'a', 'Great', 'Platform', 'to', 'Learn', 'Programming'};

% Specifying my string whose index I want to know
S = 'Learn';

% Find index of cell containing the specified string
I = find(strcmp(A, S));

% Display the index of cells containing my string
disp('Index of cells containing my string:');
disp(I);

输出

Index of cells containing my string:
     8

解释

在这个MATLAB代码中,我们首先创建一个包含各种字符串的示例单元数组 'A'。接下来,我们指定要查找其在单元数组中索引的字符串 'S'。之后,我们使用 "find" 和 "strcmp" 函数的组合来查找包含指定字符串的单元格的索引,在本例中为 'Learn'。最后,我们使用 'disp' 函数显示结果。

示例

下面的MATLAB程序展示了如何使用 "find" 和 "contains" 函数查找我的字符串的索引

% MATLAB program to find index of my string using 'find' and 'contains' functions
% Create a sample cell array of strings
A = {'Tutorials', 'Point', 'is', 'a', 'Great', 'Platform', 'to', 'Learn', 'Programming'};

% Specifying my string whose index I want to know
S = 'Learn';

% Find index of cell containing the specified string
I = find(contains(A, S));

% Display the index of cells containing my string
disp('Index of cells containing my string:');
disp(I);

输出

Index of cells containing my string:
     8

解释

这个MATLAB代码的实现和执行与之前的代码相同。唯一的区别是,在这个代码中,我们使用 'contains' 函数代替 'strcmp' 函数来比较指定字符串与单元数组的字符串。

示例

现在,让我们考虑另一个示例程序来查找包含我的字符串的多个单元格的索引。

% MATLAB program to find index of cells containing my strings
% Create a sample cell array of strings
A = {'Tutorials', 'Point', 'is', 'a', 'Great', 'Platform', 'to', 'Learn', 'Programming'};

% Specifying my string whose index I want to know
S1 = 'Tutorials';
S2 = 'Platform';
S3 = 'Programming';

% Find indices of cells containing the specified strings
I1 = find(strcmp(A, S1));
I2 = find(strcmp(A, S2));
I3 = find(strcmp(A, S3));

% Display the indices of cells containing my strings
disp('Index of cell containing Tutorials:');
disp(I1);
disp('Index of cell containing Platform:');
disp(I2);
disp('Index of cell containing Programming:');
disp(I3);

输出

Index of cell containing Tutorials:
     1

Index of cell containing Platform:
     6

Index of cell containing Programming:
     9

结论

在本教程中,我们解释了如何在单元数组中查找包含指定字符串的单元格的索引的概念,并借助示例演示了实际的代码实现。

更新于:2023年9月7日

87 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告