MATLAB および Python の既定の数値型
既定では、MATLAB® での数値は倍精度型です。ただし、Python® では、小数部のない数値は既定で整数型です。この違いの結果として、Python 用の MATLAB エンジン API を使用して Python から MATLAB を呼び出すときに、倍精度数値を予期する MATLAB 関数に Python 変数を入力引数として渡す場合、最初に変数のデータ型の変換が必要な場合があります。
代わりに、MATLAB 内から Python 関数にデータを渡す場合は、詳細についてMATLAB での Python 数値変数の使用を参照してください。
これらの変数を MATLAB で代入するとします。
x = 4; y = 4.0;
x および y は両方とも double データ型です。isfloat関数を使用してデータ型を確認できます。
fprintf("x is a float: %s\ny is a float: %s",string(isfloat(x)),string(isfloat(y)))x is a float: true y is a float: true
次は、同じ代入を Python で考えてみます。
x = 4 y = 4.0
x および y は、異なる数値データ型です。print と type を使用して x のデータ型を表示します。
print(type(x))
<type 'int'>
次に、y のデータ型を表示します。
print(type(y))
<type 'float'>
ほとんとの MATLAB 関数は、double データ型の数値の入力引数をとります。入力引数として MATLAB 関数に渡す数値は、Python データ型 float であり、Python データ型 int ではないことを確認することをお勧めします。以下の場合、Python 変数を確実に浮動小数点数にできます。
リテラルを浮動小数点数に変更する。たとえば、
4の代わりに「4.0」と入力します。数値を
floatデータ型に変換する。たとえば、x = float(4)は数値をfloatデータ型にキャストします。数値またはシーケンスから
matlab.double配列を作成する。たとえば、x = matlab.double([1,2,3,4,5])は、MATLAB のdoubleデータ型の配列を Python 整数のlistから作成します。
double データ型の入力引数を取る MATLAB 関数に整数を渡すと、Python 用の MATLAB エンジン API からエラーが返されます。例については、MatlabExecutionError: 未定義の関数を参照してください。
数値入力引数として整数を取る MATLAB 関数を呼び出すときは、Python データ型 int の入力引数を関数に渡すことができます。