Matlab數字
MATLAB支持包括有符號和無符號整數以及單精度和雙精度浮點數的各種數字類型。 默認情況下,MATLAB將所有數值存儲爲雙精度浮點數。
可以選擇將任何數字或數組的數字存儲爲整數或單精度數字。
所有數字類型都支持基本的數組運算和數學運算。
轉換爲各種數值數據類型
MATLAB提供以下函數來將數值轉換爲各種數字數據類型 -
函數
描述說明
double
轉換爲雙精度數
single
轉換爲單精度數
int8
轉換爲8
位有符號整數
int16
轉換爲16
位有符號整數
int32
轉換爲32
位有符號整數
int64
轉換爲64
位有符號整數
uint8
轉換爲8
位無符號整數
uint16
轉換爲16
位無符號整數
uint32
轉換爲32
位無符號整數
uint64
轉換爲64
位無符號整數
示例
創建腳本文件並鍵入以下代碼 -
x = single([5.32 3.47 6.28]) .* 7.5
x = double([5.32 3.47 6.28]) .* 7.5
x = int8([5.32 3.47 6.28]) .* 7.5
x = int16([5.32 3.47 6.28]) .* 7.5
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
執行上面示例代碼,得到以下結果 -
x =
39.900 26.025 47.100
x =
39.900 26.025 47.100
x =
38 23 45
x =
38 23 45
x =
38 23 45
x =
38 23 45
示例
讓我們再來擴展上面的例子。 創建腳本文件並鍵入以下代碼 -
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)
執行上面示例代碼,得到以下結果 -
Trial>> x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)
x =
1×3 int32 行向量
38 23 45
x =
1×3 int64 行向量
38 23 45
x =
1×3 cell 數組
{[38]} {[23]} {[45]}
最小和最大的整數
intmax()
和intmin()
函數返回可以用所有類型的整數表示的最大值和最小值。
這兩個函數將整數數據類型作爲參數,例如int_max(int8)
或intmin(int64)
,並返回可以使用整數數據類型表示的最大值和最小值。
示例
以下示例說明如何獲取最小和最大的整數值。 創建腳本文件並在其中寫下面的代碼 -
% displaying the smallest and largest signed integer data
str = 'The range for int8 is:\n\t%d to %d ';
sprintf(str, intmin('int8'), intmax('int8'))
str = 'The range for int16 is:\n\t%d to %d ';
sprintf(str, intmin('int16'), intmax('int16'))
str = 'The range for int32 is:\n\t%d to %d ';
sprintf(str, intmin('int32'), intmax('int32'))
str = 'The range for int64 is:\n\t%d to %d ';
sprintf(str, intmin('int64'), intmax('int64'))
% displaying the smallest and largest unsigned integer data
str = 'The range for uint8 is:\n\t%d to %d ';
sprintf(str, intmin('uint8'), intmax('uint8'))
str = 'The range for uint16 is:\n\t%d to %d ';
sprintf(str, intmin('uint16'), intmax('uint16'))
str = 'The range for uint32 is:\n\t%d to %d ';
sprintf(str, intmin('uint32'), intmax('uint32'))
str = 'The range for uint64 is:\n\t%d to %d ';
sprintf(str, intmin('uint64'), intmax('uint64'))
執行上面示例代碼,得到以下結果 -
ans =
'The range for int8 is:
-128 to 127 '
ans =
'The range for int16 is:
-32768 to 32767 '
ans =
'The range for int32 is:
-2147483648 to 2147483647 '
ans =
'The range for int64 is:
-9223372036854775808 to 9223372036854775807 '
ans =
'The range for uint8 is:
0 to 255 '
ans =
'The range for uint16 is:
0 to 65535 '
ans =
'The range for uint32 is:
0 to 4294967295 '
ans =
'The range for uint64 is:
0 to 1.844674e+19 '
最小和最大的浮點數
realmax()
和realmin()
函數返回可以用浮點數表示的最大值和最小值。
當使用參數'single'
調用這兩個函數時,返回使用單精度數據類型表示的最大值和最小值,當使用參數'double'
調用時,返回可以表示的最大值和最小值的雙精度數據類型。
示例
以下示例說明如何獲取最小和最大的浮點數。 創建腳本文件並在其中寫下面的代碼 -
% displaying the smallest and largest single-precision
% floating point number
str = 'The range for single is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('single'), -realmin('single'), ...
realmin('single'), realmax('single'))
% displaying the smallest and largest double-precision
% floating point number
str = 'The range for double is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('double'), -realmin('double'), ...
realmin('double'), realmax('double'))
執行上面示例代碼,得到以下結果 -
ans =
'The range for single is:
-3.40282e+38 to -1.17549e-38 and
1.17549e-38 to 3.40282e+38'
ans =
'The range for double is:
-1.79769e+308 to -2.22507e-308 and
2.22507e-308 to 1.79769e+308'