主要内容

matlabPython模块

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

MATLABmatlabPython模块

  • 控件可以在Python代码中使用MATLAB数值数组matlabPython包并调用必要的构造函数。例如:

    导入matlab a = matlab。Double ([[1,2,3],[4,5,6]])
    构造函数的名称表示MATLAB数值类型。可以将MATLAB数组作为输入参数传递给从Python调用的MATLAB函数。当MATLAB函数返回一个数字数组作为输出参数时,该数组将返回给Python。

  • 可以使用可选参数初始化数组初始化器包含数字的输入参数。的初始化器参数必须是Python序列类型,例如列表元组,或范围.你可以指定初始化器包含多个数字序列。

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

  • 您可以使用以下选项之一创建多维数组:

    • 指定嵌套序列而不指定大小。

    • 指定一个嵌套序列,并指定大小与嵌套序列的维度匹配的输入参数。

    • 指定一维序列和多维大小。在本例中,将假定序列以列-主序表示元素。

  • 您可以通过设置可选选项来创建一个复数的MATLAB数组is_complex关键字参数真正的

  • 可以使用自定义类型在Python中初始化MATLAB数组。自定义类型应该实现Python缓冲区协议。一个例子是ndarray在NumPy。

matlabPython包

Python中的构造函数调用

例子

matlab.double

matlab.double(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab.double(4)
>>> b = matlab。Double (vector=[11,22,33])
>>> c = matlab。双([[10 20],[30 40]])
>>> d = matlab。double(initializer=[[10,20],[30,40]], size=[2,2],is_complex=False)
>>> e = matlab。双(向量=范围(0,20))
>>> f = matlab。Double(向量=[x*x for x in range(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)))
>>> a = matlab。single(vector=[11,22,33], is_complex=False)

matlab.int8

matlab.int8(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab.int8([[11,22,33],[44,55,66]])
>>> a = matlab.int8(vector=[11,22,33], is_complex=False)

matlab.int16

matlab.int16(initializer=None|vector=None, size=None, is_complex=False)
> > > e = matlab.int16 ([[1 + 2 j, 3 + 4 j], [5, 6]], is_complex = True)

matlab.int32

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

matlab.int64

matlab.int64(初始值=None|vector=None, size=None, is_complex=False)
> > > = matlab.int64([[33] 11日,22日,[44、-55、66]])

matlab.uint8

matlab.uint8(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab。Uint8 ([[11,22,33],[44,55,66]])
>>> b = matlab。uint8(vector=[11, 22, 33], is_complex=False)

matlab.uint16

matlab.uint16(initializer=None|vector=None, size=None, is_complex=False)
>>> a = matlab。uint16(initializer=[[11,22,33],[44,55,66]], size=[2,3], is_complex=False)
>>> b = matlab。uint16(vector=[11, 22, 33], 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)
>>> a = matlab。uint32(vector=[11,22,33], 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)
>>> a = matlab。Uint64 ([[11,22,33],[44,55,66]])
>>> b = matlab。uint64(vector=[11,22,33], is_complex=False)

matlab.logical

matlab.logical(initializer=None|vector=None, size=None)一个
>>> a = matlab。logical(initializer=[[True, False, True],[True, True, True]], size=[2,3])
>>> b = matlab。logical([[True, False, True],[True, True, True]])
>>> c = matlab。logical(vector=[True, False, True])
>>> d = matlab。逻辑的([真,假,真])

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

性质和方法MATLABmatlabPython

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

属性

属性名 描述 例子

大小

表示数组维数的整数元组

> > > = matlab.int16([[1, 2, 3],[4、5、6]])> > > a.size(2、3)

itemsize

以字节为单位表示数组元素大小的整数

>>> a = matlab.int16() >>> a.itemsize 2 >>> b = matlab.int32() >>> b.itemsize

方法

方法名称 目的 例子
克隆()

返回一个新的不同的对象,其内容与原始对象的内容相同

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

  • 重塑((dim1dim2、……dimN))

  • 重塑([dim1dim2、……dimN])

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

> > > = matlab.int16([[1, 2, 3],[4、5、6]])> > >打印(a)[[1, 2, 3],[4、5、6]]> > > a.reshape(3 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.shape(2、3)

创建一个MATLABN元素数组

创建数组时N元素,大小为1 × -N因为它是MATLAB数组。

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

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

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

打印(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数组中。

A = 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可迭代对象分配数据。

您可以指定要分配的片,如本例所示。

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

控件可以在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]]

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

类型等自定义类型ndarray用于在Python中初始化MATLAB数组。自定义类型应该实现Python缓冲区协议。

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

相关的话题