如何在 MATLAB 中检测数组中的重复值及其索引?

matlabdata analysisprogramming

在本教程中,我将解释如何在 MATLAB 中检测数组中的重复值及其索引。为了完成此任务,我们可以使用 MATLAB 中的各种内置函数。在本文中,我将使用以下两个函数组合来实现这一点。

  • unique() 和 length()

  • unique() 和 ismember()

在开始实现 MATLAB 代码之前,让我们先了解检测数组中重复值所涉及的步骤。

如何使用 MATLAB 检测数组中的重复值及其索引?

在 MATLAB 中,检测数组中的重复值及其索引涉及以下步骤:

步骤 (1) - 输入或创建一个数组。

步骤 (2) - 使用函数返回数组中的唯一值。

步骤 (3) - 显示结果。

让我们考虑一些示例,以实际了解如何使用 MATLAB 实现这三个步骤来检测数组中的重复值编程。

(1). 使用"unique() & length()"函数检测数组中的唯一值

在 MATLAB 中,有两个内置函数"unique"和"length()"可用于检测数组中的重复值。

语法

unique_values = unique(input_array);

示例

考虑以下 MATLAB 程序以了解如何使用"unique"和"length"函数检测数组中的重复值。

% MATLAB 代码用于检测数组中的重复值
% 创建示例数组
A = [1, 2, 3, 2, 4, 3, 5, 6, 6, 7]; % 包含重复值的数组
B = [1, 2, 3, 4, 5, 6, 7]; % 包含唯一值的数组

% 确定数组中的唯一值
UV1 = unique(A);
UV2 = unique(B);

% 显示结果
disp('数组 A:');
disp(A);
disp('数组 A 中的唯一值:');
disp(UV1);

% 显示消息
if length(A) == length(UV1)
    fprintf('数组 A 中的每个元素都是唯一的。
'); else fprintf('数组 A 具有重复的值。
'); end disp('数组 B:'); disp(B); disp('数组 B 中的唯一值:'); disp(UV2); % 显示消息 if length(B) == length(UV2) fprintf('数组 B 中的每个元素都是唯一的。
'); else fprintf('数组 B 具有重复的值。
'); end

输出

数组 A:
1 2 3 2 4 3 5 6 6 7

数组 A 中的唯一值:
1 2 3 4 5 6 7

数组 A 具有重复的值。
数组 B:
1 2 3 4 5 6 7

数组 B 中的唯一值:
1 2 3 4 5 6 7

数组 B 中的每个元素都是唯一的。

(2). 使用"unique() & ismember()"函数检测数组中的唯一值及其索引

在 MATLAB 中,我们可以使用"unique"函数检测数组中的唯一值,使用"ismember"函数检测数组中重复值的索引。

示例

让我们举一个例子来了解如何使用"unique"和"ismember"函数检测数组中的重复值及其索引。

% MATLAB 代码用于查找数组中的重复值及其索引
% 创建示例数组
A = [1, 2, 3, 2, 3, 4, 1, 5, 6, 7, 6];

% 确定数组中的唯一值
unique_values = unique(A);

% 创建一个空数组来存储重复值
duplicate_values = [];

% 循环遍历唯一值以查找重复值
for i = 1:length(unique_values)
    value = unique_values(i);
    indices = find(A == value);
    
    % 如果有多个索引,则为重复
    if numel(indices) > 1
        duplicate_values = [duplicate_values, value];
        end
end

% 确定数组中重复值的索引
% 创建一个空数组来存储重复值的索引
duplicate_ind = [];

% 使用循环查找重复值的索引
for i = 1:length(A)
    if ismember(A(i), duplicate_values)
        duplicate_ind = [duplicate_ind, i];
    end
end

% 显示重复值及其索引
fprintf('数组中的重复值:%s
', num2str(duplicate_values)); fprintf('重复值的索引:%s
', num2str(duplicate_ind));

输出

数组中的重复值:1 2 3 6
重复值的索引:1 2 3 4 5 7 9 11

代码说明

在此 MATLAB 代码中,我们首先定义一个包含多个重复值的示例数组。然后,我们使用"unique"函数查找数组中的唯一值。

接下来,我们创建一个空数组来存储重复值。为了查找重复值,我们循环遍历唯一值,如果发现任何重复值,则将其存储在数组"duplicate_values"中。在此循环中,我们检查数组中某个值是否有多个索引,如果是,则该值是重复的,并存储在重复数组中。

在代码的下一段中,我们检测重复值的索引。为此,我们创建一个空数组"duplicate_ind",它将存储数组中重复值的索引。要检测重复索引,我们使用"ismember"函数。

最后,我们将重复值及其索引显示为输出。

结论

这就是使用 MATLAB 编程检测数组中重复值及其索引的全部内容。MATLAB 提供了各种方法来完成此任务。在本教程中,我解释了如何使用 MATLAB 的内置函数(即"unique & length"和"unique & ismember")的组合来检测数组中的重复值及其索引。您也可以在数组中尝试这些 MATLAB 代码。


相关文章