如何在 MATLAB 中查找非零元素的索引和值?

matlabdata analysisprogramming

MATLAB 是一个强大的工具,可以执行与数组和矩阵相关的操作和计算。在 MATLAB 中,数组或矩阵是一种用于存储数字数据的数据结构。存储在数组或矩阵中的每个值称为元素。元素在数组或矩阵中的位置称为元素的索引。

MATLAB 提供了一个内置函数"find",使我们能够在给定数组或矩阵中找到非零元素的索引和值。但是,在 MATLAB 中,我们也可以使用循环机制(即不使用"find"函数)找到非零元素的值和索引。

下面解释了使用 MATLAB 在数组中查找非零元素的值和索引的这两种方法。

(1)。不使用"find"函数查找非零元素的索引和值

在 MATLAB 中,我们可以不使用"find"函数查找数组或矩阵中非零元素的索引和值。为此,我们循环遍历矩阵的元素以检查它们是否为零。如果元素为非零值,则循环将提取其索引和值并存储在另一个数组中。

示例

让我们举一个例子来实际了解不使用"find"函数查找非零元素的索引和值的过程。

% MATLAB 程序用于在不使用"find"函数的情况下查找非零元素的索引和值
% 创建示例矩阵
X = [0, 5, 0, 3; 0, 2, 1, 0; 2, 0, 7, 0; 1, 0, 3, 7];

% 创建一个空数组来存储非零元素的索引
I = [];

% 创建一个空数组来存储非零元素的值
V = [];

% 确定输入矩阵的大小
[m, n] = size(X);

% 循环遍历矩阵的元素
for i = 1 : m
   for j = 1 : n
      if X(i, j) ~= 0	% 检查元素是否非零
        % 存储非零元素的索引
        I = [I; i, j];
        % 存储非零元素的值
        V = [V; X(i, j)];
      end
   end
end

% 显示结果
disp('Input matrix:');
disp(X);

disp('Indices of non-zero elements:');
disp(I);

disp('Values of non-zero elements:');
disp(V);

输出

Input matrix:
     0     5     0     3
     0     2     1     0
     2     0     7     0
     1     0     3     7

Indices of non-zero elements:
     1     2
     1     4
     2     2
     2     3
     3     1
     3     3
     4     1
     4     3
     4     4

Values of non-zero elements:
     5
     3
     2
     1
     2
     7
     1
     3
     7

代码说明:

在此 MATLAB 代码中,我们首先创建一个示例矩阵"X"。然后,我们创建两个空数组,一个用于存储非零元素"I"的索引,另一个用于存储非零元素"V"的值。

之后,我们确定矩阵或数组的大小以定义适当的循环。然后,我们指定"for"循环,该循环查找输入矩阵中的非零元素,并将其索引和值分别存储在数组"I"和"V"中。

最后,我们显示输入矩阵、非零元素的索引及其值。

(2)。使用"find"函数查找非零元素的索引和值

在 MATLAB 中,"find"函数是一个内置函数,用于查找数组或矩阵中非零元素的索引和值。

语法

要查找非零元素的索引和值,我们可以使用"find"函数的以下语法,

[row_ind, col_ind, V] = find(X);

此处,变量"row_ind"存储非零元素的行索引,变量"col_ind"存储非零元素的列索引,"V"存储非零元素的值,X 是输入矩阵。

让我们看一个例子来了解如何实现 MATLAB 代码以使用"find"函数查找数组中非零元素的索引和值。

示例

% MATLAB 代码使用"find"函数查找非零元素的索引和值
% 创建输入矩阵
X = [0, 5, 0, 3; 0, 2, 1, 0; 2, 0, 7, 0; 1, 0, 3, 7];

% 查找非零元素的索引和值
[row_ind, col_ind, V] = find(X);

% 显示结果
disp('Input matrix:');
disp(X);

disp('Row indices of non-zero elements:');
disp(row_ind);

disp('Column indices of non-zero elements:');
disp(col_ind);

disp('Values of non-zero elements:');
disp(V);

输出

Input matrix:
     0     5     0     3
     0     2     1     0
     2     0     7     0
     1     0     3     7

Row indices of non-zero elements:
     3
     4
     1
     2
     2
     3
     4
     1
     4

Column indices of non-zero elements:
     1
     1
     2
     2
     3
     3
     3
     4
     4

Values of non-zero elements:
     2
     1
     5
     2
     1
     7
     3
     3
     7

代码说明

在此 MATLAB 示例中,首先,我们创建一个包含零和非零元素的输入矩阵"X"。然后,我们调用"find"函数来确定非零元素的索引和值。非零元素的索引存储在向量"row_ind"和"col_ind"中,值存储在向量"V"中。

最后,我们显示输入矩阵、非零元素的行索引和列索引以及非零元素的值。

结论

在本教程中,我解释了使用 MATLAB 在数组或矩阵中查找非零元素的索引和值的两种不同方法。在第一种方法中,我们使用"for"循环来查找数组中的非零元素,然后查找它们的索引和值。在第二种方法中,我们使用了内置函数"find"来确定非零元素的索引和值。


相关文章