MATLAB - 文字格式化



當您想要以特定格式顯示文字時,文字格式化就發揮作用了。

Matlab 使用格式化運算子來管理符號、對齊方式、有效數字等。函式 num2str 和 sprintf 是最常用的方法,它們使用格式化運算子來處理文字格式化。

例如,格式化運算子如下:

%f 用於使用定點表示法將浮點值轉換為文字。

%.2f 用於表示小數點後 2 位數字。

%12f 用於在輸出中顯示 12 個字元,包括填充和空格。

在 Matlab 中,支援格式化運算子的函式包括 compose、num2str、sprintf、fprintf。

格式化運算子欄位

格式化運算子共有六個欄位。以下是詳細資訊

formatting operator fields

格式化運算子的六個欄位包括識別符號、標誌、欄位寬度、精度、子型別和轉換字元。在這六個欄位中,轉換字元是唯一必須與前面的 % 字元一起使用的引數。

轉換字元

轉換字元指示輸出表示法。它採用單個字元,位於格式說明符的最後。

說明符 描述
c 單個字元 (char)
d 十進位制表示法(帶符號)
e 指數表示法(使用小寫 e,例如 3.1415e+00)。
E 指數表示法(使用大寫 E,例如 3.1415E+00)。
f 定點表示法。
g %e 或 %f 中較緊湊的一種。
G 與 %g 相同。
o 八進位制表示法(無符號)。
s 字元向量或字串陣列。
u 十進位制表示法(無符號)。
x 十六進位制表示法小寫 (a-f)
X 十六進位制表示法大寫 (A-F)

這是一個使用轉換字元的示例,它將數字格式化為十六進位制形式。

>> N = 30*ones(1,3);
text_format = sprintf('%X', N)

text_format =

    '1E1E1E'

>> 

要獲得相同數字的十進位制和定點格式,您可以如下所示在 sprintf 方法中使用 %d 和 %f。

>> N = 30*ones(1,3);
>> text_format = sprintf('%d %f', N)

text_format =

    '30 30.00000030 '

>> 

子型別

子型別是一個單個字母,它緊跟在轉換字元之前。如果沒有子型別,則 %o、%x、%X 和 %u 等轉換說明符將輸入資料視為整數。

因此,要將輸入資料視為浮點數而不是整數,並將其轉換為八進位制、十進位制或十六進位制,您可以考慮以下子型別說明符

說明符 描述
b 對於雙精度浮點值輸入資料。
t 對於單精度浮點值輸入資料。

示例

>> N = 15;
>> text_format = sprintf('%bu', N)

text_format =

    '04624633867356078080'

精度

此欄位緊跟在格式化運算子中的句點之後。使用的數字為 0 或正整數。例如 %6.3f,這裡的精度為 3。

示例

>> text_format = sprintf('%.2f', 1500)

text_format =

    '1500.00'

>> 

欄位寬度

是格式化操作欄位寬度中的正整數,它指示輸出中的位數或字元數。例如 %5.2f,這裡的欄位寬度為 5。

預設情況下,如果欄位寬度大於要顯示的字元數,則會在左側填充空格。

示例 1

>> text_format = sprintf('|%3e|%f|%5f|',[33333 45454 50.12123])

text_format =

    '|3.333300e+04|45454.000000|50.121230|'
>> 

示例 2

>> text_format = sprintf('%20s', 'Hello world')

text_format =

    'Hello world'

>> 

標誌

此欄位是可選的,但使用它可以為您的輸出提供其他格式。下表描述了您在格式化過程中可以使用字元。

字元 描述 示例
減號 (-) 左對齊給定的輸入 %-3.2d
加號 (+) 如果是數字,它將在數字輸入資料前面顯示符號 +/-。對於文字輸入,它將右對齊。

%+3.2d

%+3s

空格 在給定的輸入前插入空格 % 3.2f
零 (0) 在給定的輸入前使用填充 %03.2f
井號 (#) 使用此特定數字輸入可以更改:
  • 對於 %o、%x 或 %X,列印 0、0x 或 0X 字首。
  • 對於 %f、%e 或 %E,即使精度為 0,也要列印小數點。
  • 對於 %g 或 %G,不要刪除尾隨零或小數點。
%#3.0f

示例 1:使用減號 (-)

>> txt_format = sprintf('Example of left-justify: %-12.2f',11.3)

txt_format =

    'Example of left-justify: 11.30       '

>>

示例 2:使用加號 (+)

>> text_format = sprintf('plus sign: %+5.2f',12.3)

text_format =

    'plus sign: +12.30'

>> 

示例 3:使用空格進行填充

>> mytxt = sprintf('Padding with zeroes: %010.2f',5.2)

mytxt =

    'Padding with zeroes: 0000005.20'

>> 

示例 4:使用零 (0) 進行填充

>> mytxt = sprintf('Padding with zeroes: %010.2f',5.2)

mytxt =

    'Padding with zeroes: 0000005.20'

>> 

識別符號

識別符號是指給程式碼中的變數、函式或其他元素指定的名稱。在文字格式化方面,識別符號可用於指定應在格式化字串中插入值的位 置。

要在 MATLAB 中的文字格式化中包含識別符號,您可以使用 % 字元後跟一個數字(或可選名稱),該數字指定輸入引數列表中相應引數的位置。

示例

>> a = 'My age is: ';
b = 25;

mystr = sprintf('%s %d', a, b)

mystr =

    'My age is:  25'

>> 

使用 compose() 方法進行文字格式化

MATLAB 中的 compose() 函式將其第一個引數作為格式說明符字串,並將一個或多個值或變數作為後續引數。它透過用提供的值替換格式說明符中的佔位符來返回格式化字串。

示例

a = 'My age is: ';
b = 25;

mystr = compose('%s %d', a, b)

在 matlab 中執行後,輸出為

>> a = 'My age is: ';
b = 25;

mystr = compose('%s %d', a, b)

mystr =

  1×1 cell array

    {'My age is:  25'}

>> 

使用 num2str() 方法進行文字格式化

MATLAB 中的 num2str() 函式用於將數值轉換為其對應的字串表示形式。它接受一個或多個數值輸入值,並返回這些值的字串表示形式。

num2str 的基本語法為:

str = num2str(value, format)
  • 表示您要轉換為字串的數值或陣列。
  • 格式(可選)指定結果字串的格式。它可以是格式說明符,例如整數的 '%d' 或浮點數的 '%0.2f' 等。

示例

pi_value = 3.14159;
str = num2str(pi_value, '%0.3f')

在 matlab 中執行後,您將獲得

>> pi_value = 3.14159;
str = num2str(pi_value, '%0.3f')

str = 3.142

>> 

使用 fprintf() 方法進行文字格式化

MATLAB 中的 fprintf() 函式用於將格式化資料寫入檔案或命令視窗。它允許您以靈活且組織有序的方式組合文字和資料。

fprintf() 的基本語法為:

fprintf(format, A1…AN)
  • 格式是一個字串,指定輸出的格式。它由靜態文字和格式說明符組成,例如 %s、%d、%f 或 %e,這些說明符表示A中相應資料的佔位符。
  • A1..AN是要寫入的資料,可以是標量、向量、矩陣或元胞陣列。

示例

a = 'My age is: ';
b = 25;

fprintf('%s %d', a, b)

在 matlab 中執行後,您將獲得

>> a = 'My age is: ';
b = 25;

fprintf('%s %d', a, b)

My age is:  25
>> 
廣告
© . All rights reserved.