在MATLAB中查找数组中最接近的值


MATLAB是一个为科学家和工程师开发的编程环境,用于设计和分析系统、执行数据分析、创建可视化效果等等。MATLAB代表矩阵实验室(Matrix Laboratory),它是MathWorks开发的一个编程和交互式平台,提供各种用于编程数学函数和运算、数据分析等的工具。MATLAB广泛应用于不同的科学、工程、金融、经济等领域。

阅读本教程,学习在MATLAB中查找数组中最接近的值的不同方法。但在学习之前,让我们先了解一下MATLAB中的数组。

什么是MATLAB中的数组?

在MATLAB中,由相同数据类型元素组成并组织成一个或多个维度的数据集合称为数组。数组类似于矩阵,其元素按行和列排列。

  • 在MATLAB中,数组可以是任何维度,从一维数组到多维数组。在MATLAB中,数组是一种基本数据结构,用于存储和操作数据。

  • 根据特定应用程序,MATLAB数组可以用于存储数值数据、逻辑数据、字符或任何其他数据类型。

  • 在MATLAB中,使用“方括号'[]'”创建数组,其中数组的元素用逗号分隔。

MATLAB中数组的示例

以下代码是一个包含七个元素的一维数组示例:

A = [1, 2, 3, 4, 5, 6, 7]

输出

它将产生以下输出

A =
1	2	3	4	5	6	7

以下代码是一个多维数组的示例:

A = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]

输出

它将产生以下输出

A =
1	2	3	4
5	6	7	8
9	10	11	12

在MATLAB中,数组是一种基本且广泛使用的类型的数据结构,应用于各种各样的应用。

现在,让我们讨论在MATLAB中查找数组中最接近值的不同方法。

在MATLAB中查找数组中最接近的值

在本教程的这一部分中,我们将讨论在MATLAB中查找数组中与给定目标值最接近的不同方法。

方法1 - 最近邻插值法:

在MATLAB中,我们可以使用最近邻插值法来查找给定数组中最接近的值。为此,使用函数“interp1()”。然后,我们可以使用“nearest”(即最近邻插值)进行插值。

语法:以下代码显示了在MATLAB中使用最近邻插值法的“interp1()”函数的语法:

Interp1(array, array, target, 'nearest')

示例1

% Create an array
A = [1, 2, 3, 5, 7, 9]
% Select a target value
target = 1.4
% Use interp1() function and nearest neighbor interpolation to find the closest value
Closest_Value = interp1(A, A, target, 'nearest')

输出

它将产生以下输出

A =
1	2	3	5	7	9
target = 1.4000
Closest_Value = 1

解释

在这个程序中,我们首先创建了一个值为“[1, 2, 3, 5, 7, 9]”的数组“A”。然后,我们选择一个目标值“1.4”,我们希望在给定数组中找到最接近该目标值的值。之后,我们使用“interp1()”函数使用最近邻插值法找到最接近的值。

在“interp1()”函数中,第一个参数指定要从中进行插值的数组,这里是“A”,第二个参数指定相应的输出值,这里是“A”,第三个参数是目标值“1.4”,第四个参数指定插值方法,这里是“nearest”。

因此,此MATLAB程序的输出值为“1”,它是给定数组“A”中与目标值“1”最接近的值。

重要:上述程序中解释的方法仅适用于目标值在数组的最大值和最小值之间的值。如果目标值小于或大于数组中的最大值和最小值,则上述代码将返回NaN作为输出,请参考下面给出的示例程序。

示例2

% Create an array
A = [1, 2, 3, 5, 7, 9]
% Select a target value
target = 12
% Use interp1() function and nearest neighbor interpolation to find the closest value
Closest_Value = interp1(A, A, target, 'nearest')

输出

它将产生以下输出

A =
1	2	3	5	7	9
target = 12
Closest_Value = NaN

示例3

% Create an array
A = [1, 2, 3, 5, 7, 9]
% Select a target value
target = -30
% Use interp1() function and nearest neighbor interpolation to find the closest value
Closest_Value = interp1(A, A, target, 'nearest')

输出

它将产生以下输出

A =
1	2	3	5	7	9
target = -30
Closest_Value = NaN

为了解决这个问题,我们使用以下方法。

方法2 - 最近邻外推法:

在MATLAB中,在查找数组中最接近的值时,有时我们会遇到一个目标值,该值大于或小于数组的最大值或最小值。在这种情况下,“interp1”函数的输出将是NaN值,如上述两个程序所示。

为了解决这个问题,我们使用“最近邻外推法”,其中“interp1()”函数与“extrap”选项一起使用。“extrap”选项允许我们通过外推数组范围之外的值来查找目标值超出数组范围时的最接近值。

语法:以下代码显示了在MATLAB中使用最近邻外推法的“interp1()”函数的语法。

Interp1(array, array, target, 'nearest', 'extrap')

现在,让我们通过示例程序来理解这个概念。

示例4

% Create an array
A = [1, 2, 3, 5, 7, 9]
% Select a target value
target = -30
% Use interp1() function and nearest neighbor extrapolation to find the closest value
Closest_Value = interp1(A, A, target, 'nearest', 'extrap')

输出

它将产生以下输出

A =
1	2	3	5	7	9
target = -30
Closest_Value = 1

示例5

% Create an array
A = [1, 2, 3, 5, 7, 9]
% Select a target value
target = 12
% Use interp1() function and nearest neighbor extrapolation to find the closest value
Closest_Value = interp1(A, A, target, 'nearest', 'extrap')

输出

它将产生以下输出

A =
1	2	3	5	7	9
target = 12
Closest_Value = 9

在这两个程序中,“extrap”选项告诉MATLAB在外推以查找目标值超出给定数组“A”的范围时的最接近值。

结论

在本教程中,我们借助一些示例程序详细解释了在MATLAB中查找数组中最接近值的不同方法。

更新于:2023年7月26日

2K+ 次查看

启动您的职业生涯

完成课程获得认证

开始学习
广告