English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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)

ファイルを実行すると、以下の結果が表示されます-

x =
   38  23  45
x =
   38  23  45
x = 
{
   [1,1] = 38
   [1,2] = 23
   [1,3] = 45
}

最小および最大整数

関数intmax()およびintmin()すべての整数データ型で表すことができる最大値と最小値を返します。

これらの関数は、例えばintmax(int8)またはintmin(int64),整数データ型で表すことができる最大値と最小値を返します。

以下の例では、整数の最小値と最大値を取得する方法を説明します。スクリプトファイルを作成し、以下のコードを記述します-

% 表示する最小および最大有符号整数データ
str = 'The range for int8 is:\n\t%d から % ';
sprintf(str, intmin('int8), intmax('int8))
str = 'The range for int16 is:\n\t%d から % ';
sprintf(str, intmin('int16), intmax('int16))
str = 'The range for int32 is:\n\t%d から % ';
sprintf(str, intmin('int32), intmax('int32))
str = 'The range for int64 is:\n\t%d から % ';
sprintf(str, intmin('int64), intmax('int64))
 
% 表示する最小および最大無符号整数データ
str = 'The range for uint8 is:\n\t%d から % ';
sprintf(str, intmin('uint8), intmax('uint8))
str = 'The range for uint16 is:\n\t%d から % ';
sprintf(str, intmin('uint16), intmax('uint16))
str = 'The range for uint32 is:\n\t%d から % ';
sprintf(str, intmin('uint32), intmax('uint32))
str = 'The range for uint64 is:\n\t%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:
	0 から 0 
ans = The range for uint8 is:
	0 から 255 
ans = The range for uint16 is:
	0 から 65535 
ans = The range for uint32 is:
	0 から -1 
ans = The range for uint64 is:
	0 から 18446744073709551616

最小および最大浮点数

関数realmax()およびrealmin()浮点数で表すことができる最大値と最小値を返します。

「single」パラメータを使用して両方の関数を呼び出した場合、両方の関数は単精度データ型で表すことができる最大値および最小値を返します;「double」パラメータを使用して呼び出した場合、両方の関数はパラメータで指定された最大値および最小値を返します。これは双精度データ型の最大値および最小値です。

以下の例では、最小および最大の浮点数を取得する方法を説明します。スクリプトファイルを作成し、以下のコードを記述します-

%表示可能な最小および最大の単精度
%浮点数
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'))
%表示可能な最小および最大の双精度
%浮点数
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 = singleの範囲は:                                                  
        -3.40282e+38 to -1.17549e-38 and                                        
         1.17549e-38 to  3.40282e+38                                            
ans = doubleの範囲は:                                                  
        -1.79769e+308 to -2.22507e-308 and                                      
         2.22507e-308 to  1.79769e+308