MATLAB 和 Python 中的默认数值类型
默认情况下,MATLAB® 中的数值具有双精度类型。然而,在 Python® 中,没有小数部分的数值默认为具有整数类型。由于此差异,当使用 MATLAB Engine API for Python 从 Python 调用 MATLAB 时,如果您将 Python 变量作为输入参量传递给应接受双精度数的 MATLAB 函数,您可能需要先转换变量的数据类型。
如果您要从 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.0,而不是4。将数字转换为数据类型
float。例如,x = float(4)将数值转换为数据类型float。从数值或序列创建
matlab.double数组。例如,x = matlab.double([1,2,3,4,5])从 Python 整数list创建具有double数据类型的 MATLAB 数组。
当您将整数传递给接受数据类型为 double 的输入参量的 MATLAB 函数时,MATLAB Engine API for Python 会返回错误。有关示例,请参阅 MatlabExecutionError: Undefined Function。
当调用接受整数作为数值输入参量的 MATLAB 函数时,可以将具有 Python 数据类型 int 的输入参量传递给该函数。