前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MATLAB使用Python数值和字符变量

MATLAB使用Python数值和字符变量

作者头像
用户9925864
发布2022-07-27 09:37:47
8240
发布2022-07-27 09:37:47
举报
文章被收录于专栏:算法工程师的学习日志

后台有位读者留言关于matlab使用python的方法,故分享一点这个资料

在 MATLAB 中使用 Python 数值类型

当调用接受数值输入参数的 Python 函数时,MATLAB 会将双精度值转换为最适合在 Python 语言中表示该数据的类型。例如,要调用 Python math 模块中的三角函数,请传递 MATLAB 双精度值。

代码语言:javascript
复制
pynum = py.math.radians(90)
pynum = 1.5708

对于返回 Python float 类型的函数,MATLAB 会自动将该类型转换为双精度类型。

代码语言:javascript
复制
class(pynum)
ans = 
'double'

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

代码语言:javascript
复制
py.int(intmax).bit_length
ans = int64
    31

用数值 iterable 参数调用 Python 方法

Python math.fsum 函数对 iterable 输入参数中的浮点值求和。例如,打开 MATLAB patients.mat 数据文件并读取数值数组 Height。

代码语言:javascript
复制
load patients.mat
class(Height)
ans = 
'double'

size(Height)
ans = 1×2

   100     1

当将此参数传递给 Python 时,MATLAB 自动将数值转换为 Python 数值且 Python 会对向量值进行迭代。

代码语言:javascript
复制
py.math.fsum(Height)
ans = 6707

在 MATLAB 中使用 Python array 类型

假设有一个 Python 函数,它返回以下双精度类型的 Python array.array。

代码语言:javascript
复制
P = py.array.array('d', 1:5)
P = 
  Python array with properties:

    itemsize: 8
    typecode: [1×1 py.str]

    array('d', [1.0, 2.0, 3.0, 4.0, 5.0])

要将 P 传递给 MATLAB 函数 sum,请将 P 转换为双精度类型的 MATLAB 数组。

代码语言:javascript
复制
>> sum(P)
错误使用 sum
数据类型无效。第一个参数必须为数值或逻辑值。
sum(double(P))
ans = 15

在 MATLAB 中使用 Python 整数 array 类型

假设有以下 Python 数组。对该数组调用 Python reverse 函数,然后将结果转换为 MATLAB 数组。

代码语言:javascript
复制
arr = py.array.array('i',[int32(5),int32(1),int32(-5)])
arr = 
  Python array with properties:

    itemsize: 4
    typecode: [1×1 py.str]

    array('i', [5, 1, -5])


arr.reverse
A = int32(arr)
A = 1×3 int32 row vector

   -5    1    5

默认数值类型

默认情况下,MATLAB 中的数值是 double 类型。默认情况下,Python 中的数值(没有小数部分)是整数类型。这种差异会导致在将数值传递给 Python 函数时出现混淆。

例如将下列 MATLAB 数值传递给 Python datetime 函数时,Python 会将它们读取为 float 类型并显示错误:

代码语言:javascript
复制
d = py.datetime.date(2014,12,31)
Python Error: TypeError: integer argument expected, got float

要更正该错误,请将每个数值显式转换为整数类型:

代码语言:javascript
复制
d = py.datetime.date(int32(2014),int32(12),int32(31))
d = 
  Python date with properties:

      day: 31
    month: 12
     year: 2014

    2014-12-31
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师的学习日志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在 MATLAB 中使用 Python 数值类型
  • 用数值 iterable 参数调用 Python 方法
  • 在 MATLAB 中使用 Python array 类型
  • 在 MATLAB 中使用 Python 整数 array 类型
  • 默认数值类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档