MATLAB数组作为Python变量
的matlab
Python®模块提供了MATLAB的数组类来表示数组®MATLAB数值类型Python变量,数组可以在Python和MATLAB之间传递。
MATLAB类的matlab.engine
Python模块
您可以使用MATLAB数值数组的Python代码导入
matlab.engine
Python包和必要调用构造函数。例如:导入matlab。= matlab引擎。双([[1,2,3],[4、5、6]])
你可以使用一个可选的初始化一个数组
初始化器
包含数字的输入参数。的初始化器
参数必须是一个Python序列类型等列表
,元组
,或范围
。您可以指定初始化器
包含多个序列的数字。你可以使用一个可选的初始化一个数组
向量
输入参数包含输入大小1)×(n。如果你使用向量
,你不能使用初始化器
。您可以创建一个多维数组使用下列选项之一:
指定一个嵌套的序列没有指定大小。
指定一个嵌套的同时指定一个序列
大小
输入参数匹配嵌套的尺寸序列。指定一个一维序列与一个多维的大小。在这种情况下,将假定为代表的元素序列列为主的秩序。
您可以创建一个MATLAB的复数通过设置可选的
is_complex
关键字参数真正的
。您可以使用定制类型对MATLAB在Python中数组进行初始化。自定义类型应该执行Python缓冲协议。一个例子是
ndarray
在NumPy。
类 |
构造函数调用在Python中 |
例子 |
---|---|---|
|
matlab.double(initializer=None|vector=None, size=None, is_complex=False) |
> > > = matlab.double (4) > > > b = matlab。双(向量=[33]11日22日) > > > c = matlab。双([[10 20],[30 40]]) > > > d = matlab。双(初始值设定项=[(10、20),[30 40]],大小= (2,2)is_complex = False) > > > e = matlab。双(向量=范围(0,20)) > > > f = matlab。双(向量= [x * x x范围(0 10 2))) > > > g = matlab.double ([[1.1 + 2.4 j, 3 + 4 j], [5.3, 6.7]], is_complex = True) |
|
matlab.single(initializer=None|vector=None, size=None, is_complex=False) |
> > > = matlab.single ([(1.1, 2.2, 3.3), (4.4, 5.5, 6.6))) > > > = matlab。单(向量=[33]11日,22日,is_complex = False) |
|
matlab.int8(初始值设定项= = |向量没有问题,大小= None, is_complex = False) |
> > > = matlab.int8([[11, 22岁,33],[44岁,55岁,66]]) > > > = matlab.int8(向量=[33]11日,22日,is_complex = False) |
|
matlab.int16(初始值设定项= = |向量没有问题,大小= None, is_complex = False) |
> > > e = matlab.int16 ([[1 + 2 j, 3 + 4 j], [5, 6]], is_complex = True) |
|
matlab.int32(初始值设定项= = |向量没有问题,大小= None, is_complex = False) |
> > > = matlab.int32(初始值设定项=[[11,22岁,33],[44、-55、66]],大小= [2、3],is_complex = False) |
|
matlab.int64(初始值设定项= = |向量没有问题,大小= None, is_complex = False) |
> > > = matlab.int64([[11, 22岁,33],[44、-55、66]]) |
|
matlab.uint8(initializer=None|vector=None, size=None, is_complex=False) |
> > > = matlab。uint8([[11, 22岁,33],[44岁,55岁,66]]) > > > b = matlab。uint8(向量=[33]11日,22日,is_complex = False) |
|
matlab.uint16(initializer=None|vector=None, size=None, is_complex=False) |
> > > = matlab。uint16(初始值设定项=[[33]11日,22日,[44岁,55岁,66]],大小= [2、3],is_complex = False) > > > b = matlab。uint16(向量=[33]11日,22日,is_complex = False) > > > c = matlab。uint16([[11, 22岁,33],[44岁,55岁,66]]) |
|
matlab.uint32(initializer=None|vector=None, size=None, is_complex=False) |
> > > = matlab。uint32(向量=[33]11日,22日,is_complex = False) > > > b = matlab。uint32([[11, 22岁,33],[44岁,55岁,66]]) |
|
matlab.uint64(initializer=None|vector=None, size=None, is_complex=False) |
> > > = matlab。uint64([[11, 22岁,33],[44岁,55岁,66]]) > > > b = matlab。uint64(向量=[33]11日,22日,is_complex = False) |
|
matlab.logical(initializer=None|vector=None, size=None)一个 |
> > > = matlab。逻辑(初始值设定项=[[真,假,真],[真的,真的,真的]],大小= [2、3]) > > > b = matlab。逻辑([[真,假,真],[真的,真的,真的]]) > > > c = matlab。逻辑(向量=[真,假,真]) > > > d = matlab。逻辑((真的,假,真的)) |
一个逻辑值不能做成一个复数数组。 |
的属性和方法MATLAB类的matlab
Python包
创建的所有MATLAB数组matlab.engine
包的构造函数有以下属性和方法:
属性
属性名 | 描述 | 例子 |
---|---|---|
|
一个元组的整数代表一个数组的维度 |
> > > = matlab.int16 ([[1, 2, 3], [4、5、6]]) > > >。大小(2、3) |
|
一个整数代表大小字节的数组的一个元素 |
> > > = matlab.int16 () > > >。itemsize2 >>> b = matlab.int32() >>> b.itemsize 4 |
方法
方法名称 | 目的 | 例子 |
---|---|---|
克隆() |
返回一个新的不同的对象与内容相同的原始对象的内容 |
> > > = matlab.int16 ([[1, 2, 3], [4、5、6]]) > > > b = a.clone() > > >打印(b) [[1, 2, 3], [4、5、6]] > > > b [0] [0] = 100 > > > b matlab.int16([[100, 2, 3],[4、5、6]]) > > >打印(a) [[1, 2, 3], [4、5、6]] |
真正的() |
返回元素的真正部分复数,列为主的顺序,1)×(n数组 |
> > > = matlab.int16 ([[1 + 10 j 2 + 20 j, 3 + 30 j], [4、5、6]], is_complex = True) > > >打印(a.real ()) (1、4、2、5、3、6) |
图像放大() |
返回元素复数的虚部,在列为主的顺序,1)×(n数组 |
> > > = matlab.int16 ([[1 + 10 j 2 + 20 j, 3 + 30 j], [4、5、6]], is_complex = True) > > >打印(a.imag())[0 10 0, 20日,30日0] |
并且没有() |
返回的元素不是复数,列为主的顺序,1)×(n数组 |
> > > = matlab.int16([[1, 2, 3],[4、5、6]]) > > >打印(a.noncomplex ()) (1、4、2、5、3、6) |
|
根据尺寸和重塑数组返回结果 |
> > > = matlab.int16([[1, 2, 3],[4、5、6]]) > > >打印(a) [[1, 2, 3], [4、5、6]] > > >。重塑(2)> > >打印(a) [[1,5], [4 3], [2,6]] |
toarray () |
返回一个标准Python |
> > > = matlab.int16 ([[1, 2, 3], [4、5、6]]) > > > [0] .toarray()数组(“h”, [1, 2, 3]) > > > b = matlab.int16 ([[1 + 10 j 2 + 20 j, 3 + 30 j], [4、5、6]], is_complex = True) > > > b.real () .toarray()数组(“h”, [1、4、2、5、3、6]) |
tomemoryview () |
返回一个标准Python |
> > > = matlab.int16 ([[1, 2, 3], [4、5、6]]) > > > b = a.tomemoryview () > > > b.tolist () [[1, 2, 3], [4、5、6]] > > > b。形状(2、3) |
多维MATLAB中的数组Python
在Python中,您可以创建多维数组MATLAB的数值类型。Python使用两个列表
变量创建一个2-by-5 MATLAB双打的数组。
导入matlab。= 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-by-5数组。
打印(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是从零开始的索引。当你访问元素的MATLAB Python会话中的数组,使用从零开始的索引。
指数为MATLAB多维数组。
一个= matlab。双([[1、2、3、4、5],[6 7 8 9 10]])打印([1][2])
8.0
片MATLAB中的数组Python
你可以切MATLAB数组相同的方式把Python列表
和元组
变量。
导入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 iterable包含数字。
您可以指定片分配如下所示。
A = matlab.int8 ([1, 2, 3, 4, 5, 6, 7, 8));[0][2:4]=[30 40][0][6:8]=(70、80)打印(A)
40[[1、2、30日,5日,6日,70年,80]]
重塑MATLAB中的数组Python
你可以重塑一个MATLAB数组在Python重塑
方法。输入参数大小
必须是一个序列,保存元素的数量。使用重塑
改变一个1-by-9 MATLAB 3 x3的数组。
导入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]]