在 MATLAB 中將變數插入字串

Ammar Ali 2022年7月18日
在 MATLAB 中將變數插入字串

本教程將討論使用 MATLAB 中的 num2str() 函式將變數值插入到字串中。

在 MATLAB 中將變數插入字串

如果我們想將變數的值插入到字串中,我們需要使用 num2str() 函式將值轉換為字串或字元陣列,然後我們可以使用 strcat() 函式將其與字串連線起來。例如,讓我們在字串中插入一個浮點數。

請參閱下面的程式碼。

clc
clear

n = 100.577;
s1 = num2str(n);
s2 = "value is ";
s3 = strcat(s2,s1)

輸出:

s3 =

    "value is 100.577"

我們還可以使用 num2str() 函式的第二個引數新增精度或我們希望在輸出中看到的位數,它的輸入應該是一個正整數。第二個引數設定將轉換為字串的最大位數,如果我們要設定精度,輸入應該是浮點數。

例如,讓我們僅將數字的前 3 個元素轉換為字串,並將其與另一個字串連線。請參閱下面的程式碼。

clc
clear

n = 10.212;
s1 = num2str(n,3);
s2 = "value is ";
s3 = strcat(s2,s1)

輸出:

s3 =

    "value is 10.2"

在輸出中,字串 s3 僅包含 3 位浮點數,因為我們在 num3str() 函式中將精度設定為 3。如果我們不設定精度,num2str() 函式會將整個數字轉換為字元陣列。

我們還可以使用帶百分號的 f 字元設定輸入的格式型別,例如浮點數的有效位數,我們可以在百分比和 f 之間傳遞有效位數 特點。例如,讓我們將長浮點數四捨五入為 2 位有效數字,然後將其與字串連線起來。

請參閱下面的程式碼。

clc
clear

n = 10.218;
s1 = num2str(n,'%0.2f');
s2 = "value is ";
s3 = strcat(s2,s1)

輸出:

s3 =

    "value is 10.22"

我們可以在上面的輸出中看到該數字被四捨五入為兩位有效數字。在上面的程式碼中,我們已經使用雙引號定義了字串,但是我們也可以使用單引號定義字串。

我們還可以使用 strcat() 函式在同一行中連線多個字串。我們只需要傳遞函式中的所有字串變數。

我們還可以在兩個或多個字串之間使用加號將它們連線起來,得到一個字串。在上面的程式碼中,我們手動在數字和字串之間新增了一個空格,但是如果我們用單引號定義字串,我們將無法在兩個變數之間新增空格。

例如,讓我們使用單引號重複上面的示例。請參閱下面的程式碼。

clc
clear

n = 10.218;
s1 = num2str(n);
s2 = 'value is ';
s3 = strcat(s2,s1)

輸出:

s3 =

    'value is10.218'

在上面的輸出中,我們在 s2 字串中新增了一個空格,但該空格在 s3 字串中不存在。如果我們使用加號,輸出將是相同的。

為避免此問題,至少要連線的字串之一應該是字串,而不是字元向量或陣列。num2str() 函式總是返回一個字元陣列,但我們可以使用 string() 函式將輸出作為字串獲取。

例如,讓我們在上面的例子中使用 string() 函式。請參閱下面的程式碼。

clc
clear

n = 10.218;
s1 = string(n);
s2 = 'value is ';
s3 = s2 + s1

輸出:

s3 =

    "value is 10.218"

我們可以看到數字和字串之間的輸出中存在空格,並且輸出也是字串資料型別。如果我們有一個很長的字元或字串數​​組並且想要連線它們並在它們之間包含一個空格或另一個分隔符,我們可以使用 join()strjoin() 函式。

如果我們要連線的值在向量或矩陣中,我們可以使用 join() 函式,如果值在陣列中,我們必須使用 strjoin() 函式。我們可以使用 join() 函式連線不同資料型別的變數,但我們必須將所有變數放在單個向量或矩陣中,並將其傳遞給 join() 函式以連線它們。

例如,讓我們使用 join() 函式連線一個字串、一個字元陣列和一個數值。請參閱下面的程式碼。

clc
clear

n = 100.55;
s1 = "Value is";
s2 = 'kg';
n = [s1,n,s2];
s = join(n)

輸出:

s =

    "Value is 100.55 kg"

請注意,我們要連線的變數中至少有一個值應該是字串;否則,結果可能會改變。在上面的輸出中,三個變數已經連線在一起;結果儲存為字串,因為一個輸入是字串。

我們也可以使用 strjoin() 函式,但我們要連線的變數應該是字元陣列資料型別幷包含在陣列中。預設情況下,join()strjoin() 函式在向量或陣列的值之間放置空格,但我們也可以使用 join()strjoin 的第二個引數放置其他分隔符和字元() 功能。

我們必須在 join()strjoin() 函式中將分隔符作為字元陣列傳遞,以將它們新增到向量或陣列的元素之間。例如,讓我們使用不同的分隔符重複上述示例。

請參閱下面的程式碼。

clc
clear

n = 100.55;
s1 = "Value is";
s2 = 'kg';
n = [s1,n,s2];
s = join(n,'--')

輸出:

s =

    "Value is--100.55--kg"

我們可以在上面的輸出中看到,輸入分隔符被新增到輸出中,而不是空格分隔符。我們還可以在給定矩陣或陣列的元素之間新增任意長度的字串或字元陣列作為分隔符。

我們還可以使用 Matlab 的 sprintf() 函式,該函式用於將格式化資料新增到字串或字元陣列中。sprintf() 函式的第一個引數是格式規範,接下來的引數是我們想要放入字串或字元陣列的變數。

如果使用雙引號將格式規範定義為字串,則 sprintf() 函式的輸出也將是字串。如果格式規範定義為使用單引號的字元陣列,則 sprintf() 函式的輸出也將是字元陣列。

我們可以像上面在 num2str() 函式中使用的相同方式使用格式規範。我們可以使用百分號;之後,我們可以傳遞欄位寬度,然後我們可以傳遞資料型別。

例如,讓我們使用 sprintf() 函式將不同資料型別的變數新增到字串中。請參閱下面的程式碼。

clc
clear

n = 100.55;
s1 = "Value is";
s2 = 'kg';
s = sprintf("%s %0.1f %s",s1,n,s2)

輸出:

s =

    "Value is 100.5 kg"

在上面的程式碼中,我們使用%s 作為字串資料型別,使用%f 作為浮點資料型別。我們還定義了浮點數的有效位數。

在上面的程式碼中,我們將字串儲存在變數中,然後將它們傳遞給 sprintf() 函式,但我們也可以直接在函式的第一個引數中寫入字串。在大字串變數的情況下,為了簡單起見,我們應該將它們儲存在變數中並將它們傳遞到 sprintf() 函式中。

我們還可以將符號用於其他資料型別,例如%c 用於字元,%d 用於整數等。檢視此連結以獲取有關 sprintf() 函式的更多詳細資訊。

Author: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - MATLAB String