在 MATLAB 中查詢單元格陣列中的精確字串


MATLAB 是一款為科學家和工程師開發的程式設計環境,用於設計和分析系統、執行資料分析、建立視覺化效果等等。MATLAB 代表矩陣實驗室 (Matrix Laboratory),它是由 MathWorks 開發的一個程式設計和互動式平臺,提供各種用於程式設計數學函式和運算、資料分析等的工具。MATLAB 廣泛應用於科學、工程、金融、經濟等不同領域。

閱讀本文以瞭解在 MATLAB 中查詢單元格陣列中的精確字串的過程。

什麼是 MATLAB 中的單元格陣列?

在 MATLAB 中,單元格陣列是一種資料結構,其中陣列的每個元素都可以包含不同型別的資料。因此,在一個單元格陣列中,每個元素可以包含不同型別的資料的混合,例如整數、浮點數、字元、其他陣列等等。

在 MATLAB 中,我們可以使用以下兩種語法定義單元格:

A = {'banana', 5.215, [1, 4]}

或者

A = cell({'banana', 5.215, [1, 4]})

這裡,單元格陣列“A”包含三個不同資料型別的元素,如下所示:

  • 第一個元素是字串“banana”。

  • 第二個元素是浮點數“5.215”。

  • 第三個元素是一個值為 [1, 4] 的普通陣列。

現在,讓我們討論如何在單元格陣列中查詢精確的字串。

在 MATLAB 中查詢單元格陣列中的精確字串

在 MATLAB 中,我們可以使用以下兩種 MATLAB 函式組合來查詢單元格陣列中的精確字串。

  • strcmp() 和 find() 函式。

  • ismember() 和 find() 函式。

讓我們透過程式示例瞭解如何在 MATLAB 中使用這些函式組合來查詢單元格陣列中的精確字串。

方法 1:使用 strcmp() 和 find() 函式

在 MATLAB 中,我們可以使用 strcmp() 和 find() 函式的組合來查詢單元格陣列中的精確字串。

示例 1

下面的 MATLAB 程式演示瞭如何使用 strcmp() 和 find() 函式的組合來查詢單元格陣列中的精確字串。

% Create a cell array of strings
A = {'Tutorials', 'Point', 'for', 'MATLAB'}
% Choose a target string
target_string= 'MATLAB'
% Get a logical array from strcmp
strcmp(A, target_string)
% Find the index of the target string
index = find(strcmp(A, target_string))
% Check if the target string is found
if ~isempty(index)
   fprintf('The target string is found at index %d.
', index) else fprintf('The target string is not found.
') end

輸出

它將產生以下輸出

A = 1×4 cell array
{'Tutorials'}    {'Point'}    {'for'}    {'MATLAB'}
target_string = 'MATLAB'
ans = 1×4 logical array
0	0	0	1
index = 4
The target string is found at index 4.

解釋

在此 MATLAB 程式碼中,我們首先建立了一個包含四個字串“{'Tutorials', 'Point', 'for', 'MATLAB'}”的單元格陣列“A”。然後,我們選擇目標字串“MATLAB”。之後,我們使用“strcmp()”函式返回一個邏輯陣列,如果單元格陣列的對應元素等於目標字串,則每個元素都為真(邏輯 1)。然後,我們使用“find()”函式查詢邏輯陣列中真(邏輯 1)元素的索引,該索引對應於給定單元格陣列中目標字串的索引。

現在,在程式碼中,如果“index”變數不為空,則在單元格陣列中將找到目標字串。因此,程式的輸出將為“目標字串在索引 4 處找到”,這表明目標字串存在於給定單元格陣列的索引 4 處。

方法 2:使用 ismember() 和 find() 函式

在 MATLAB 中,我們還可以使用 ismember() 和 find() 函式的組合來查詢單元格陣列中的精確字串。

示例 2

下面的 MATLAB 程式演示瞭如何在 MATLAB 中使用 ismember() 和 find() 函式的組合來查詢單元格陣列中的精確字串。

% Create a cell array of strings
A = {'Tutorials', 'Point', 'for', 'MATLAB'}
% Choose a target string
target_string = 'MATLAB'
ismember(A, target_string)
% Check if the target string is in the cell array
index = find(ismember(A, target_string))
% Check if the target string is found
if ~isempty(index)
   fprintf('The target string is found at index %d.
', index) else fprintf('The target string is not found.
') end

輸出

它將產生以下輸出

A = 1×4 cell array
{'Tutorials'}    {'Point'}    {'for'}    {'MATLAB'}
target = 'MATLAB'
ans = 1×4 logical array
0   0   0   1
index = 4
The target string is found at index 4

解釋

在此 MATLAB 程式碼中,我們使用 ismember() 函式檢查目標字串是否在單元格陣列中。在 MATLAB 中,“ismember()”函式返回一個邏輯陣列,如果單元格陣列的對應元素等於目標字串,則每個元素都為真(邏輯 1)。

我們使用 find() 函式查詢邏輯陣列中真(邏輯 1)元素的索引,該索引對應於給定單元格陣列中目標字串的索引。最後,如果“index”變數不為空,則在單元格陣列中將找到目標字串。

因此,MATLAB 程式的輸出將為“目標字串在索引 4 處找到”。這表明目標字串在給定單元格陣列的索引 4 處找到。

結論

我們可以使用“strcmp()”和“find()”或“ismember()”和“find()”函式的組合來查詢 MATLAB 單元格陣列中的精確字串。“strcmp()”和“ismember()”函式都返回一個邏輯陣列,如果單元格陣列的對應元素等於目標字串,則每個元素都為真(邏輯 1)。因此,使用這兩個 MATLAB 函式,我們可以輕鬆快速地在單元格陣列中搜索特定元素,並獲得其在單元格陣列中的索引值。

更新於:2023年7月26日

410 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告