主要内容

matlabPython模块

matlabPython®模块提供了MATLAB的数组类来表示数组®MATLAB数值类型Python变量,数组可以在Python和MATLAB之间传递。

MATLAB类的Python模块

  • 您可以使用MATLAB数值数组的Python代码导入Python包和必要调用构造函数。例如:构造函数的名称表明MATLAB数值类型。您可以将MATLAB数组作为输入参数传递给从Python调用MATLAB函数。当一个MATLAB函数返回一个数值数组作为输出参数,数组返回给Python。

  • 你可以使用一个可选的初始化一个数组初始化器包含数字的输入参数。的初始化器参数必须是一个Python序列类型等列表或者一个元组或其他序列类型。

  • 你可以使用一个可选的初始化一个数组向量输入参数包含输入大小1)×(n。如果你使用向量,你不能使用初始化器

  • 可选大小输入参数设置初始化数组的大小。创建多维数组,指定初始化器包含多个序列的数字,或指定大小多维。您可以创建一个MATLAB的复数通过设置可选的is_complex关键字参数真正的

  • 您可以使用定制类型初始化MATLAB在Python中数组的两倍。自定义类型应该执行Python缓冲协议。例如ndarray在NumPy。

matlabPython包

构造函数调用在Python中

例子

matlab.double

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

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

matlab.int8(初始值设定项= = |向量没有问题,大小= None, is_complex = False)
> > > = matlab.int8([[11, 22岁,33],[44岁,55岁,66]])
> > > = matlab.int8(向量=[33]11日,22日,is_complex = False)

matlab.int16

matlab.int16(初始值设定项= = |向量没有问题,大小= None, is_complex = False)
> > > e = matlab.int16 ([[1 + 2 j, 3 + 4 j], [5, 6]], is_complex = True)

matlab.int32

matlab.int32(初始值设定项= = |向量没有问题,大小= None, is_complex = False)
> > > = matlab.int32(初始值设定项=[[11,22岁,33],[44、-55、66]],大小= [2、3],is_complex = False)

matlab.int64

matlab.int64(初始值设定项= = |向量没有问题,大小= None, is_complex = False)
> > > = matlab.int64([[11, 22岁,33],[44、-55、66]])

matlab.uint8

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

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

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

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

matlab.logical(initializer=None|vector=None, size=None)一个
> > > = matlab。逻辑(初始值设定项=[[真,假,真],[真的,真的,真的]],大小= [2、3])
> > > b = matlab。逻辑([[真,假,真],[真的,真的,真的]])
> > > c = matlab。逻辑(向量=[真,假,真])
> > > d = matlab。逻辑((真的,假,真的))

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

的属性和方法MATLAB类的matlabPython

所有MATLAB数组创建包的构造函数有以下属性和方法:

属性

属性名 描述 例子

大小

一个元组的整数代表一个数组的维度

> > > = matlab.int16 ([[1, 2, 3], [4、5、6]]) > > >。大小(2、3)

itemsize

一个整数代表大小字节的数组的一个元素

> > > = 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)
  • 重塑(dim1,dim2、……dimN)

  • 重塑([dim1,dim2、……dimN)]

根据尺寸和重塑数组返回结果

> > > = matlab.int16([[1, 2, 3],[4、5、6]]) > > >打印(a) [[1, 2, 3], [4、5、6]] > > >。重塑(2)> > >打印(a) [[1,5], [4 3], [2,6]]
toarray ()

返回一个标准Pythonarray.array对象构建的内容。只适用于一维序列。

> > > = 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 ()

返回一个标准Pythonmemoryview对象构建的内容

> > > = matlab.int16 ([[1, 2, 3], [4、5、6]]) > > > b = a.tomemoryview () > > > b.tolist () [[1, 2, 3], [4、5、6]] > > > b。形状(2、3)

创建一个MATLAB与N个元素数组

当您创建一个数组N元素,大小是1 -N因为它是一个MATLAB数组。

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

初始化器是一个包含5个数字的Python列表。MATLAB数组大小1-by-5,元组的表示(1、5)

多维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数组。

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是从零开始的索引。当你访问元素的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) [[1、2、30、40、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]]

使用自定义类型初始化MATLAB数组

您可以使用定制类型等ndarray在NumPy MATLAB Python中的数组初始化。自定义类型应该执行Python缓冲协议。

导入matlab导入numpy nf = numpy.array ([[1.1, 2, 2, 3.3], [4.4, 5.5, 6.6]]) md = matlab.double ni32 = numpy (nf)。阵列([[1,2,3],[4、5、6]],dtype = int32) mi32 = matlab.int32 (ni32)

相关的话题