simulink与python联合仿真(三):python中调用matlab

目录

1. 安装matlab引擎

1.1 在matlab安装地址下,找到extern -> engines -> python,复制地址

1.2 打开anaconda的终端,进入需要安装matlab引擎的环境

1.3 打开复制的路径

1.4 安装引擎

2. 启动和停止matlab引擎

3. 使用matlab的工作区

4. 数据交换与映射

4.1 通过matlab Python包中的类创建matlab数组

4.2 matlab类的属性和方法

5. 调用matlab函数


1. 安装matlab引擎

1.1 在matlab安装地址下,找到extern -> engines -> python,复制地址

simulink与python联合仿真(三):python中调用matlab_第1张图片

1.2 打开anaconda的终端,进入需要安装matlab引擎的环境

conda activate env_name

1.3 打开复制的路径

cd matlabroot/extern/engines/python

1.4 安装引擎

python setup.py install

simulink与python联合仿真(三):python中调用matlab_第2张图片

2. 启动和停止matlab引擎

调用matlab.engine包,调用start_matlab启动新的matlab进程

import matlab.engine
eng = matlab.engine.start_matlab()

使用quit函数停止引擎,如果在引擎运行状态下退出python,python会自动停止引擎及其matlab进程

eng.quit()

3. 使用matlab的工作区

将变量x的值送入matlab的工作区,命名为y

x = 4.0
eng.workspace['y'] = x

在matlab的工作区执行命令 sqrt( y )

a = eng.eval('sqrt(y)')

获取工作区的变量y

y = eng.eval('y')

4. 数据交换与映射

4.1 通过matlab Python包中的类创建matlab数组

可用的类有matlab.double 、matlab.single、matlab.int8、matlab.int16、matlab.int32、matlab.int64、matlab.uint8、matlab.uint16、matlab.uint32、matlab.uint64、matlab.logical

如创建一个matlab数组,并对数组调用sqrt函数,可使用如下命令:

a = matlab.double([1,4,9,16,25])
b = eng.sqrt(a)

4.2 matlab类的属性和方法

A.size:获取数组A的尺寸

A.clone():复制数组A的形状和内容给新的数组(完全相同)

A.real():以 1×N 数组形式按列优先顺序返回数组A复数元素的实部

A.imag():以 1×N 数组形式按列优先顺序返回数组A复数元素的虚部

A.noncomplex():以 1×N 数组形式按列优先顺序返回非复数元素

A.reshape:重构数据形状

5. 调用matlab函数

在当前文件夹下创建一个matlab函数,命名为add.m

function c = add(a, b)
    c = a + b;
end

通过引擎调用函数

c = eng.add(1.0, 2.0)

函数仅返回一个输出参数时,无需指定nargout;当输出为多个输出或无输出时,需指定nargout。例如,当add函数返回两个参数时,需要变为eng.add(1.0, 2.0, nargout=2)

你可能感兴趣的:(python,matlab,开发语言)