MATLAB 找到最接近的数组值
MATLAB 是为科学家和工程师开发的编程环境,用于设计和分析系统、进行数据分析、创建可视化等。MATLAB代表Matrix Laboratory,它是由MathWorks开发的一种编程和交互平台,提供各种编程数学函数和操作、数据分析等工具。MATLAB在科学、工程、金融、经济等不同领域得到广泛应用。
阅读本教程以了解在MATLAB中找到数组中最接近的值的不同方法。在此之前,让我们对MATLAB中的数组有一个了解。
什么是MATLAB中的数组
在MATLAB中,将相同数据类型的元素组织到一个或多个维度中的集合称为 数组 。数组类似于矩阵,其中的元素按行和列排列。
- 在MATLAB中,数组可以是任意维度的,从 一维数组到多维数组 。在MATLAB中,数组是一种用于存储和操作数据的基本数据结构。
-
根据特定的应用,MATLAB数组可以用于存储数值数据、逻辑数据、字符或任何其他数据类型。
-
在MATLAB中,可以使用 “方括号'[]’” 创建一个数组,其中数组的元素之间用逗号符号分隔。
Array在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
解释
在这个程序中,首先我们创建了一个名为”A”的数组,其中包含值”[1, 2, 3, 5, 7, 9]”。然后我们选择一个目标值”1.4″,我们想要在给定的数组中找到最接近的值。然后我们使用”interp1()”函数来使用最近邻插值方法找到最接近的值。
“interp1()”函数中,第一个参数指定要进行插值的数组,这里是”A”,第二个参数指定对应的输出值,这里也是”A”,第三个参数是目标值”1.4″,第四个参数指定插值的方法,这里是”nearest”。
因此,这个MATLAB程序的输出结果是在给定的数组”A”中最接近目标值”1.4″的值”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中找到数组中最接近的值的不同方法,并借助一些示例程序进行说明。