參考:https://ww2.mathworks.cn/help/matlab/ref/num2str.html?searchHighlight=num2str&s_tid=doc_srchtitle
num2str
說明
示例
浮點值的默認轉換
將 pi
和 eps
返回的浮點值轉換為字符向量。
s = num2str(pi)
s = '3.1416'
s = num2str(eps)
s = '2.2204e-16'
指定精度
指定浮點值的最大有效位數。
A = gallery('normaldata',[2,2],0);
s = num2str(A,3)
s = 2x16 char array
'-0.433 0.125'
' -1.67 0.288'
指定格式
指定浮點值數組的寬度、精度及其他格式。
A = gallery('uniformdata',[2,3],0) * 9999;
s = num2str(A,'%10.5e\n')
s = 2x35 char array
'9.50034e+03...'
'2.31115e+03...'
格式 '%10.5e'
使用具有五個小數位數的指數格式輸出各個值,'\n'
輸出換行符。
輸入參數
A
- 輸入數組
數值數組
輸入數組,指定為數值數組。
數據類型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
復數支持: 是
precision
- 有效數字最大位數
正整數
輸出字符串中的有效數字最大位數,指定為正整數。
注意
如果您指定的 precision
超出輸入浮點數據類型的精度,則結果可能與您指定的精度的輸入值不匹配。結果取決於您的計算機硬件和操作系統。
數據類型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
formatSpec
- 輸出字段的格式
格式化操作符
輸出字段的格式,使用格式化操作符指定。formatSpec
還可以包括普通文本和特殊字符。
formatSpec
可以是用單引號引起來的字符向量,從 R2016b 開始,也可以是字符串標量。
格式化操作符
格式化操作符以百分號 %
開頭,以轉換字符結尾。轉換字符是必需的。您也可以在 %
和轉換字符之間指定標識符、標志、字段寬度、精度和子類型操作符。(操作符之間的空格無效,在這里顯示空格只是為了便於閱讀。)
轉換字符
此表顯示了要將數值和字符數據格式化為文本的轉換字符。
值類型 | 轉換 | 詳細信息 |
---|---|---|
有符號整數 |
|
以 10 為基數 |
無符號整數 |
|
以 10 為基數 |
|
以 8 為基數(八進制) |
|
|
以 16 為基數(十六進制),小寫字母 |
|
|
與 |
|
浮點數 |
|
定點記數法(使用精度操作符指定小數點后的位數。) |
|
指數記數法,例如 |
|
|
與 |
|
|
更緊湊的 |
|
|
更緊湊的 |
|
字符或字符串 |
|
單個字符 |
|
字符向量或字符串數組。輸出文本的類型與 |
可選操作符
可選標識符、標志、字段寬度、精度和子類型操作符進一步定義了輸出文本的格式。
-
標識符
處理函數輸入參數的順序。使用語法
,其中n
$n
代表函數調用中其他輸入參數的位置。示例:
('%3$s %2$s %1$s %2$s','A','B','C')
將輸入參數'A'
、'B'
、'C'
輸出為:C B A B
。注意:如果輸入參數為數組,則不能使用標識符指定該輸入參數中的特定數組元素。
-
標志
'–'
左對齊。
示例:%-5.2f
示例:%-10s
'+'
始終為任何數值輸出符號字符(+ 或 –)。
示例:%+5.2f
右對齊文本。
示例:%+10s
' '
在值之前插入空格。
示例:% 5.2f
'0'
在值之前補零以填充字段寬度。
例如:%05.2f
'#'
修改選定的數值轉換:
-
對於
%o
、%x
或%X
,將輸出0
、0x
或0X
前綴。 -
對於
%f
、%e
或%E
,即使精度為零也將輸出小數點。 -
對於
%g
或%G
,不刪除尾隨零或小數點。
示例:
%#5.0f
-
-
字段寬度
要輸出的最低字符數。字段寬度操作符可以是數字,也可以是指向輸入參數的星號 (
*
)。當您將
*
指定為字段寬度操作符時,其他輸入參數必須指定打印寬度和要打印的值。寬度和值可以是參數對組,也可以是數值數組中的對組。使用*
作為字段寬度操作符時,您可以打印具有不同寬度的不同值。示例:輸入參數
('%12d',intmax)
等效於('%*d',12,intmax)
。示例:輸入參數
('%*d',[2 10 5 100])
返回'10 100'
,其中兩個空格分配給10
,五個空格分配給100
。您也可以將字段寬度和值指定為多個參數,如('%*d',2,10,5,100)
中所示。除非標志另行指定,否則該函數使用空格填充值之前的字段寬度。
-
精度
對於
%f
、%e
或%E
小數點右側的位數
示例:'%.4f'
將pi
輸出為'3.1416'
對於
%g
或%G
有效位數
示例:'%.4g'
將pi
輸出為'3.142'
精度操作符可以是數字,也可以是指向參數的星號 (
*
)。當您將
*
指定為字段精度操作符時,其他輸入參數必須指定打印精度和要打印的值。精度和值可以是參數對組,也可以是數值數組中的對組。使用*
作為精度操作符時,您可以打印具有不同精度的不同值。將
*.*
指定為字段寬度和精度操作符時,必須以三元組形式指定字段寬度、精度和值。示例:輸入參數
('%.4f',pi)
等效於('%.*f',4,pi)
。示例:輸入參數
('%6.4f',pi)
等效於('%.*f',6,4,pi)
。示例:輸入參數
('%*.*f',6,4,pi,9,6,exp(1))
返回'3.1416 2.718282'
,其中以9
和6
分別作為exp(1)
輸出的字段寬度和精度。注意
如果您為浮點值指定的精度操作符所表示的精度超出輸入數值數據類型的精度,則在指定精度內,結果與輸入值可能不匹配。結果取決於您的計算機硬件和操作系統。
-
子類型
可以使用子類型操作符將浮點值顯示為八進制、十進制或十六進制值。子類型操作符緊鄰轉換字符之前。此表顯示了可使用子類型的轉換。
輸入值類型
子類型和轉換字符
輸出值類型
浮點數
%bx
或%bX
%bo
%bu
雙精度十六進制、八進制或十進制值
例如:%bx
將pi
輸出為400921fb54442d18
%tx
或%tX
%to
%tu
單精度十六進制、八進制或十進制值
例如:%tx
將pi
輸出為40490fdb
格式化操作符前或后的文本
formatSpec
還可以在百分號 %
前添加其他文本,或者在轉換字符后添加其他文本。文本可以為:
-
要打印的普通文本。
-
您無法作為普通文本輸入的特殊字符。此表顯示了如何在
formatSpec
中表示特殊字符。特殊字符
表示形式
單引號
''
百分比字符
%%
反斜杠
\\
警報
\a
退格符
\b
換頁符
\f
換行符
\n
回車符
\r
水平制表符
\t
垂直制表符
\v
其 Unicode® 數值可以通過十六進制數
N
表示的字符\xN
示例:
sprintf('\x5A')
返回'Z'
其 Unicode 數值可以通過八進制數
N
表示的字符\N
示例:
sprintf('\132')
返回'Z'
使用格式化操作符進行轉換時要注意的行為
-
數值轉換僅輸出復數的實部。
-
如果指定不適合數據的轉換(例如數值的文本轉換),MATLAB® 將改寫指定的轉換並使用
%e
。示例:
'%s'
將pi
轉換為3.141593e+00
。 -
如果對整數值應用文本轉換(
%c
或%s
),MATLAB 會將對應於有效字符代碼的值轉換為字符。示例:
'%s'
將[65 66 67]
轉換為ABC
。
數據類型: char
| string
輸出參數
s
- 輸入數組的文本表示形式
字符數組
輸入數組的文本表示形式,以字符數組的形式返回。
提示
num2str
不接受 formatSpec
輸入參數中的位置標識符。例如,num2str([14 15],'%2$X %1$o)
將返回錯誤。
位置標識符指定格式化操作符處理函數的輸入參數的順序,而不是處理輸入數組的元素的順序。當您調用 num2str
時,只有一個輸入參數包含要轉換的數字。
算法
num2str
將刪除字符數組中的任何前導空格,即使 formatSpec
包含空格字符標志也是如此。例如,num2str(42.67,'% 10.2f')
返回一個 1×5 字符數組 '42.67'
。
擴展功能
C/C++ 代碼生成
使用 MATLAB® Coder™ 生成 C 代碼和 C++ 代碼。
用法說明和限制:
-
輸入參數必須是常量。
GPU 數組
通過使用 Parallel Computing Toolbox™ 在圖形處理單元 (GPU) 上運行來加快代碼執行。
此函數完全支持 GPU 數組。有關詳細信息,請參閱Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。