在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+ 次檢視

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.