主要内容

在MATLAB中使用Python数值变量

这个例子展示了如何在MATLAB®中使用Python®数值类型。

在MATLAB中使用Python数值类型

当调用带有数字输入参数的Python函数时,MATLAB将双精度值转换为最能代表Python语言数据的类型。例如,在Python中调用三角函数数学模块,传递一个MATLAB双值。

pynum = py.math.radians (90)
pynum = 1.5708

对于返回Python的函数浮动类型,MATLAB自动将该类型转换为double类型。

类(pynum)
ans =“双”

对于返回整数类型的Python函数,MATLAB自动将该类型转换为int64.例如,bit_length函数返回以二进制形式表示整数所需的位数int价值。

py.int .bit_length (intmax)
ans =int6431

使用Numeric调用Python方法可迭代的参数

Pythonmath.fsum函数中浮点值的和可迭代的输入参数。您可以将一个MATLAB向量传递给这个函数。例如,打开MATLABpatients.mat数据文件并读取数字数组高度

负载patients.mat类(高度)
ans =“双”
大小(高度)
ans =1×2100年1

当您将此参数传递给Python时,MATLAB自动将数值转换为Python数值,并且Python遍历向量值。

py.math.fsum(高度)
ans = 6707

使用Python数组在MATLAB类型

假设您有一个Python函数,返回以下Pythonarray.array类型的两倍。

P = py.array.array (' d '1:5)
P =带有属性的Python数组:itemsize: 8 typecode: [1×1 py.]Str] array('d', [1.0, 2.0, 3.0, 4.0, 5.0])

通过P的MATLAB函数总和,转换P到一个双类型的MATLAB数组。

总和(双(P))
ans = 15

使用Python整数数组在MATLAB类型

假设你有这个Python数组。调用Python反向函数,然后将结果转换为MATLAB数组。

arr = py.array.array (“我”, (int32 (5), int32 (1) int32 (5)))
arr =带有属性的Python数组:itemsize: 4 typecode: [1×1 py.]Str] array('i', [5, 1, -5])
加勒比海盗。逆A = int32(arr)
一个=1×3 int32行向量5 1 5

默认的数值类型

默认情况下,MATLAB中的数字是a类型。默认情况下,Python中的数字(没有小数部分)是整数类型。在向Python函数传递数字时,这种差异可能会导致混淆。

例如,当您将这些MATLAB数字传递给Python时datetime函数,Python将它们读为浮动键入并显示错误:

d = py.datetime.date(2014、12、31)

Python错误:TypeError: integer参数预期,得到float

要纠正这个错误,请显式地将每个数字转换为整数类型:

d = py.datetime.date (int32 (2014), int32 (12), int32 (31)
d = Python日期与属性:天:31个月:12年:2014 2014-12-31

为什么显示数字时会看到属性?

MATLAB将所有Python类型显示为对象,其中包括一个对象属性列表。对于数值类型,MATLAB在最后一行显示预期的输出值。

py.int (5)
ans =带有属性的Python int:分母:1 imagg: 0分子:5实数:5 5