00_coolprop_in_matlab在Matlab中使用CoolProp

在Matlab中使用CoolProp

简介

在这里插入图片描述

CoolProp是一个开源的热力学性质库,可以计算多种流体的热力学性质。CoolProp支持多种编程语言,包括Python、C++、Matlab等。本文将介绍如何在Matlab中使用CoolProp。

CoolProp官网

本文所使用的Matlab版本为R2021a。

在Matlab中调用CoolProp有两个思路:

  1. 利用DLL文件,直接调用CoolProp的C++接口;
  2. 利用Python的CoolProp接口,通过Matlab调用Python。

第一种方法需要调用loadlibrary函数,然后使用calllib函数调用CoolProp的C++接口。这种方法比较复杂,而且需要了解CoolProp的C++接口。

第二种方法则比较简单,只需要调用Python的CoolProp接口即可。

Matlab的Python接口

从2014b版本开始,Matlab支持调用Python。在Matlab中调用Python需要先安装Python,然后在Matlab中设置Python的路径。

在Matlab中调用Python之前,应该设置Python的路径,在2019不之前,可以使用pyversion函数设置Python的路径,如下所示:

pyversion('C:\Python27\python.exe');

在2019b版本之后,可以使用pyenv函数设置Python的路径,如下所示:

pyenv('executable','C:\Python27\python.exe');

Matlab会自动记住上次设置的pyenv。不用每次都设置Python的路径。

但是,每次启动Python(调用Python的函数)之后,就不能更改Python的路径了,必须重启Matlab才能更改Python的路径。

此外,还有一个参数executionMode可以设置。executionMode有两个值,inprocessOutOfProcessinprocess表示在Matlab进程中运行Python,OutOfProcess表示在独立的Python进程中运行Python。默认值为inprocess

对于性能关键的应用,建议使用InProcess模式。当需要三方库来运行Python代码时(Python库依赖的库与Matlab不兼容),或者需要调试的时候,可以使用OutOfProcess模式。

设置好路径之后,不带参数调用函数pyenv可以查看当前Python的路径和执行模式,如下所示:

在这里插入图片描述

在Matlab中调用Python

当按照如上的方式设置好Python的路径之后,就可以在Matlab中调用Python了。在Matlab中调用Python的方式有两种:

  1. 使用py函数;
  2. 使用py.importlib.import_module函数。

py函数可以直接调用Python的函数,py.importlib.import_module函数可以导入Python的模块。

使用py函数调用Python的函数时,可以直接调用Python的函数,如下所示:

py.math.sin(3.14)
 ans =

    0.0016

还比如,可以调用Python的numpy库,如下所示:

py.numpy.array([1,2,3])

使用py.importlib.import_module函数导入Python的模块,然后调用Python的函数,如下所示:

np = py.importlib.import_module('numpy');
np.array([1,2,3])

当然这两种方法都是可以的。使用py函数调用Python的函数时,需要输入完整的Python函数名,而使用py.importlib.import_module函数导入Python的模块,然后调用Python的函数时,只需要输入Python函数名即可。

这里需要注意的是,python的常用类型在matlab中是不支持的,比如listdicttuple等。在matlab中,listdicttuple等都是py.listpy.dictpy.tuple等类型。哪怕是整数、浮点数等,也是py.intpy.float等类型。

可以用class函数查看python的类型,如下所示:

class(py.list([1,2,3]))

detail函数查看python对象的详细信息,包括字段、方法、事件、父类(Matlab中显示为超类)这些。

总的来说,在Matlab中调用Python的函数还是有点憋屈的,不过也能用。

那么,接下来就可以在Matlab中调用Python的CoolProp接口了。

在Matlab中调用Python的CoolProp接口

在Matlab中调用Python的CoolProp接口,首先需要安装Python的CoolProp库。在Matlab中调用Python的CoolProp接口,需要导入CoolProp模块,然后调用CoolProp.PropsSI函数即可。

总之是跟在Python中调用CoolProp接口一样的。

下面是一个例子,计算水的饱和水蒸气的焓值:

cp = py.importlib.import_module('CoolProp.CoolProp');
h = cp.PropsSI('H','P',101325,'Q',1,'Water');

如果只是使用PropsSI函数,我们可以直接导入PropsSI函数,如下所示:

PropsSI = py.importlib.import_module('CoolProp.CoolProp').PropsSI;
h = PropsSI('H','P',101325,'Q',1,'Water');

在这里插入图片描述

另外还可以写一个Matlab函数,来调用PropsSI函数,如下所示:

function ret = propsSI(varargin)
try
    ret = py.CoolProp.CoolProp.PropsSI(varargin{:});
catch
    error('CoolProp is not installed or not in the system path');
end
end

把这个函数放在Matlab的搜索路径下,就可以在Matlab中调用这个函数了。

h = propsSI('H','P',101325,'Q',1,'Water');

总结

  1. 在Matlab中调用Python需要先设置Python的路径(pyenv);
  2. 在Matlab中调用Python的函数有两种方式,一种是使用py函数,一种是使用py.importlib.import_module函数;
  3. 在Matlab中调用Python的CoolProp接口,需要导入CoolProp模块,然后调用CoolProp.PropsSI函数即可。
  4. 可以写一个Matlab函数,来调用PropsSI函数。
    使用py.importlib.import_module函数;
  5. 在Matlab中调用Python的CoolProp接口,需要导入CoolProp模块,然后调用CoolProp.PropsSI函数即可。
  6. 可以写一个Matlab函数,来调用PropsSI函数。
  7. 在Matlab中调用Python的函数时,需要注意Python的类型。

相关推荐

  1. matlabMATLAB实现对仪器的控制

    2024-03-20 09:08:05       79 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-20 09:08:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-20 09:08:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-20 09:08:05       87 阅读
  4. Python语言-面向对象

    2024-03-20 09:08:05       96 阅读

热门阅读

  1. PHP与Spring Boot在实现功能上的比较

    2024-03-20 09:08:05       45 阅读
  2. 关于sftp限制登录默认目录若干问题

    2024-03-20 09:08:05       32 阅读
  3. Go语言学习12-反射和Unsafe

    2024-03-20 09:08:05       46 阅读
  4. go 解决货币计算的难题:避免浮点数陷阱

    2024-03-20 09:08:05       31 阅读
  5. Rust 的 PhantomData

    2024-03-20 09:08:05       42 阅读
  6. ES进程除了kill之外,有什么优雅关闭的方式吗?

    2024-03-20 09:08:05       43 阅读
  7. R语言Scale函数与normalize.quantiles()函数的异同

    2024-03-20 09:08:05       46 阅读
  8. Linux Shell 管道基本介绍

    2024-03-20 09:08:05       44 阅读
  9. 红魔馆的馆主

    2024-03-20 09:08:05       39 阅读
  10. SQL-存储过程介绍

    2024-03-20 09:08:05       48 阅读
  11. 未来之路:Python PDF处理技术的革新

    2024-03-20 09:08:05       44 阅读
  12. 使用 pypdf 快速切分 PDF 文件

    2024-03-20 09:08:05       47 阅读