matlab调用python

一、matlab命令行窗口检查python状态

 

我这里显示没有配置,然后添加python路径

 由于我的python是最近安装的,出现了版本兼容问题,可以参考:

Versions of Python Compatible with MATLAB Products by Release - MATLAB & Simulink (mathworks.cn)

 具体的配置方法参考官方提供的指引

配置您的系统使用 Python - MATLAB & Simulink - MathWorks 中国

在python配置好之后,基本的使用方法如下

% 调用Python内置函数
py.print('Hello, Python!')

% 调用Python库
numpy = py.importlib.import_module('numpy')
array = numpy.array([1, 2, 3, 4, 5])
disp(array)

% 调用Python脚本文件
py.runfile('path/to/your/python/script.py')

如果Python代码返回结果,你可以将其转换为MATLAB数据类型。例如,使用double将Python列表转换为MATLAB的双精度数组

% 调用返回结果的Python函数
result = py.mymodule.mypythonfunction();
matlab_array = double(result);
disp(matlab_array);

在matlab中调用python的具体操作方法参考:

从 MATLAB 中调用 Python - MATLAB & Simulink - MathWorks 中国

 二、例子

%zxr
numpy = py.importlib.import_module('numpy');
di_array = numpy.array(diff(:,1:D));
di = py.myfun.get_fitness(di_array,func_num);
d_array = double(di);
%zxr
from cma import bbobbenchmarks as bn
import numpy as np

def get_fitness(x, i):
func = bn.instantiate(i)[0]
return func(x)

 

        opfunu= py.importlib.import_module('opfunu');
        a = opfunu.get_functions_by_classname("F" + string(int32(problem_name)) + "2010");
        b = a{1};
        c = b(ndim=int32(1000));
        py_newx = py.list(new(:,1:end-1));
        dd = c.evaluate(py_newx);
        newY = double(dd);
        Data0 = [ Data0;[new(:,1:end-1),newY] ];
        fes = fes + length(newY);

 

>> matlab_matrix = rand(200, 1000);
>> numpy_array = py.numpy.array(matlab_matrix);
>> a = py.myfun.get_fitness(numpy_array,2); 

 

posted @ 2024-03-15 20:37  jasonzhangxianrong  阅读(47)  评论(0编辑  收藏  举报