python调用matlab奇葩经验总结

        每次都想纯而又纯的Python或者C++,或者matlab,无奈有的时候不同该语言的翻译是各种坑。最后只能择其优点而用之。

1.安装Anaconda

2.安装一个最好是高版本的matlab

3.查询matlab和python版本的兼容性问题,主要取决于matlab的版本,他里面的extern/engine的有些脚本是最高支持xx版本,版本不兼容还不行。

4.如何找到和matlab支持的版本,请看这个链接

5.如果Anaconda的版本太高,必须切换到一个合适的版本,切换操作如下:

  • 在 Anaconda promopt 输入python -V 显示自己的python版本号

        如果版本太高,根据安装matlab的版本,建立一个新的python虚拟环境:                                     例如,

conda create --name py35 python=3.5

        等号后面是你要的版本,--name后面是你起的别名。命令执行后,会出现让激活或者关闭这个版本的命令:

activate py36   #也就是你起的别名

        如果想要关闭,那就:

conda deactivate      # 退出虚拟环境
conda activate py3.x  #再次进行切换

        实在不行,退出虚拟环境后,conda update all,万事大吉,又回到最新的版本。

6.CMD切换目录到:engine的设置目录,

例如:D:\matlab_Rxxxx\extern\engines\pythonXXX

Note:这里的pythonXXX就是你删改你起的别名,

根据不同的系统,进行不同的操作

运行终端窗口命令(以管理员身份运行)
Windowscd D:\matlab_Rxxxx\extern\engines\pythonXXX
python setup.py install
Mac或Linuxcd  ……
python setup.py install
Matlab命令窗口
cd (fullfile(matlabroot,'extern','engines','python'))
system('python setup.py install')   不建议!!

7.可以用spider进行编程,这个时候,不同的别名,也就是不同的虚拟环境会各自有一个spider+别名的图标,选择激活使用的版本,然后进行程序调试。

例子:

import matlab.engine

##
##
eng = matlab.engine.start_matlab()   #可以为所欲为的调用matlab内置函数

##注意,这个例子是一个输入,没有输出
##如果有明确的输出个数,一定更要用后面nargout=xxx来明确,不然各种要各自的幺蛾子问题。切记!!!
eng.compute_brc2('mattxt.txt',nargout=0)


#如果有输出,就用如下格式:

a,b,c,d = eng.xxx_function(in1,in2,nargout=xx) 

#切记nargout要与你要输出的参数个数相匹配,不然,有可能   呵呵…………酸爽!






#eng = matlab.engine.start_matlab()   #开始
#eng.quit()                           #关闭
#eng.exit()                           #关闭

8.下面就是尽情的享受吧!

还没有大量测试,但是建议不要频繁打开和关闭eng,这可能会很浪费时间。建议连续批量操作。

9.如果你是输入字符串作为要load进去的文件名,最好在matlab函数里面有以下操作:

%input string name is fname
fin = [fname];
data = load(fin);         

%如果是一个空格隔开的txt文本,下面进行
a = data(:,1);
b = data(:,2);

%下面写代码就可以了

10.注意matlab返回参数的格式,如果是数组,print一下就知道是啥格式,如果操作了。用len函数测试,都是1,所以要根据实际情况查看一下。

2023年2月16日00点15分 武汉

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值