主要内容

MATLAB数组作为Python变量

matlabPython®包提供了数组类来表示MATLAB的数组®数值类型作为Python变量。也支持其他MATLAB类型,如所列金宝app从Python传递数据到MATLAB.获取关于安装matlabPython包,看到安装一个MATLAB Compiler SDK Python包

创建MATLAB中的数组Python

函数的构造函数可以在Python会话中创建MATLAB数字数组matlabPython包(例如,matlab.double,matlab.int32).构造函数的名称指示MATLAB数值类型。您可以将MATLAB数组作为输入参数传递给Python调用的MATLAB函数。当MATLAB函数返回一个数字数组作为输出参数时,该数组将返回给Python。

你可以用一个可选的初始化数组初始化器包含数字的输入参数。的初始化器参数必须是Python序列类型,如列表或元组。可选大小参数设置初始化数组的大小。要创建多维数组,请指定初始化器包含多个数字序列,或指定大小多维。您可以通过设置可选参数来创建一个MATLAB复数数组is_complex关键字参数真正的.的mlarray模块提供了MATLAB中列出的数组构造函数表。

matlab

Python中的构造函数调用

MATLAB数值类型

matlab.double

matlab.double( initializer=None, size=None, is_complex=False)

双精度

matlab.single

matlab.single( initializer=None, size=None, is_complex=False)

单精度

matlab.int8

matlab.int8(initializer=None, size=None, is_complex=False)

8位带符号整数

matlab.int16

matlab.int16(initializer=None, size=None, is_complex=False)

16位带符号整数

matlab.int32

matlab.int32(initializer=None, size=None, is_complex=False)

32位带符号整数

matlab.int64一个

matlab.int64(initializer=None, size=None, is_complex=False)

64位带符号整数

matlab.uint8

matlab.uint8( initializer=None, size=None, is_complex=False)

8位无符号整数

matlab.uint16

matlab.uint16( initializer=None, size=None, is_complex=False)

16位无符号整数

matlab.uint32

matlab.uint32( initializer=None, size=None, is_complex=False)

32位无符号整数

matlab.uint64b

matlab.uint64( initializer=None, size=None, is_complex=False)

64位无符号整数

matlab.logical

matlab.logical( initializer=None, size=None)c

逻辑

一个在Windows上的Python中,matlab.int64被转换为int32在MATLAB。同样,MATLAB不能返回int64数组到Python。

b在Windows上的Python中,matlab.uint64被转换为uint32在MATLAB。而且,MATLAB不能返回auint64数组到Python。

c逻辑不能被做成一个复数数组。

当你创建一个数组N元素的大小为1乘1N因为这是一个MATLAB数组。

import matlab A = matlab.int8([1,2,3,4,5]) print(A.size) (1,5)

初始化式是一个包含五个数字的Python列表。MATLAB的数组大小是1 × 5,由元组表示(1、5)

MATLAB数组中的属性和方法Python

所有用MATLAB创建的数组matlab包构造函数具有下表中列出的属性和方法:

属性或方法

目的

大小

作为元组返回的数组的大小

重塑(大小)

按照序列指定的顺序重塑数组大小

多维MATLAB中的数组Python

在Python中,您可以创建任何数字类型的多维MATLAB数组。使用两个Python浮点数列表创建一个2 × 5的MATLAB双精度数组。

导入matlab A = matlab。双([[1、2、3、4、5],[6 7 8 9 10]])打印(A) ((1.0, 2.0, 3.0, 4.0, 5.0), (6.0, 7.0, 8.0, 9.0, 10.0)]

大小的属性一个显示它是一个2乘5的数组。

print (A.size)(2、5)

索引MATLAB中的数组Python

你可以索引到MATLAB数组,就像你可以索引到Python列表和元组一样。

导入matlab = matlab.int8([1、2、3、4、5])打印([0])(1、2、3、4、5)

MATLAB数组的大小为(1、5);因此,一个[0](1、2、3、4、5).索引到数组中,得到3。

打印([0][2])3

Python索引是从零开始的。在Python会话中访问MATLAB数组的元素时,请使用从零开始的索引。

这个例子展示了如何索引到一个多维MATLAB数组。

一个= matlab。双([[1、2、3、4、5],[6 7 8 9 10]])打印([1][2])8.0

MATLAB中的数组Python

您可以像切片Python列表和元组一样切片MATLAB数组。

导入matlab = matlab.int8([1、2、3、4、5])打印([0][1:4])(2、3、4)

您可以将数据分配给一个片。这个例子展示了一个从Python列表到数组的赋值。

A = matlab.double([[1、2、3、4],[5、6、7、8]])[0]=[10年,20年,30、40]打印(A) ((10.0, 20.0, 30.0, 40.0), (5.0, 6.0, 7.0, 8.0)]

您可以从另一个MATLAB数组或任何包含数字的Python可迭代对象中分配数据。

您可以为赋值指定片,如本例所示。

A = matlab.int8([1, 2, 3, 4, 5, 6, 7, 8))一个[0][2:4]=[30 40][0][6:8]=(70、80)打印(A)[[1、2、30、40、5、6,70,80]]

请注意

MATLAB数组的切片行为与Python列表的切片不同。对MATLAB数组进行切片将返回一个视图,而不是一个浅拷贝。

给定一个MATLAB数组和一个具有相同值的Python列表,给一个切片赋值会得到不同的结果。

> > > mlarray = matlab.int32([[1、2],[3,4],[5,6]])> > > py_list =[[1、2],[3,4],[5,6]]> > > mlarray [0] = mlarray [0] [:: 1] > > > py_list [0] = py_list [0] [:: 1] > > > mlarray [0] matlab.int32 ([[2 2], [3, 4], [5, 6]]) > > > py_list [[2,1], [3, 4], [5, 6]]

重塑MATLAB中的数组Python

函数可以在Python中重塑MATLAB数组重塑方法。输入参数,大小,必须是一个不会改变数组元素数目的序列。使用重塑将1乘9的MATLAB数组改为3乘3。

导入matlab = matlab.int8 ([1, 2, 3, 4, 5, 6, 7, 8, 9]) A.reshape((3,3))打印(A)[[1、4、7],[2、5、8],[3、6、9]]

相关的话题