每次都想纯而又纯的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就是你删改你起的别名,
根据不同的系统,进行不同的操作
运行终端窗口 | 命令(以管理员身份运行) |
Windows | cd D:\matlab_Rxxxx\extern\engines\pythonXXX python setup.py install |
Mac或Linux | cd …… 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分 武汉