2014-08-29 125 views
1

如何运行MATLAB以外的脚本找出MATLAB prefdir()返回的值(默认)?我感兴趣的是在Windows和Unix类型的操作系统下这样做的方法。如何从操作系统的命令行获取MATLAB的prefdir?


更新:FWIW,通过试错,我发现这个怪物的达尔文:

% /Applications/MATLAB_R2014a.app/bin/matlab \ 
    -nojvm -nodesktop -nodisplay -nosplash \ 
    -r "fprintf('OUTPUT: %s\n', prefdir); quit;" 2>&1 | \ 
    perl -ne 'print if s/^OUTPUT: //' 
/Users/yourstruly/.matlab/R2014a 

(这是当然的,一个尴尬我真诚地希望有更好的东西。)

回答

0

我想在Windows上最大的问题是,当你启动裸露的MatLab Command窗口(使用所有的开关)时,它会将所有内容打印到自身,并且不能截取此输出(至少没有WinAPI)。
考虑编写prefdir到临时文件:

matlab^
-nojvm^
-nodesktop^
-nodisplay^
-nosplash^
-r "f=fopen('prefdir.txt','w');fprintf(f,'%s\n',prefdir);fclose(f);quit;"^
2>&1 

这里^做同样的事情,反斜杠在你的榜样(这应该是最后一个字符在该行工作)。
如果您将此代码作为单行写入,它可能适用于所有机器,前提是matlab/bin文件夹已添加到路径环境变量中。顺便说一下,为什么你打印“OUTPUT:”,然后用Perl删除它?
如果这不是程序员的机器,Perl很少在Windows机器上找到:)

+0

如果你有MATLAB,你会自动获得Perl,因为它包含在MATLAB安装中。 – 2014-09-01 10:29:59

+0

@SamRoberts,是的,我知道。但是我在Win7-64上安装了“MatLab R2013a 64bit”,它在系统PATH变量中只添加了'C:\ MATLAB \ R2013a \ runtime \ win64'和'C:\ MATLAB \ R2013a \ bin',而Perl二进制文件在'C :\ MATLAB \ R2013a \ SYS \ Perl的\ WIN32 \ bin'。这很奇怪,因为64位版本的MatLab可能还包含64位版本的Perl。 – anandr 2014-09-01 20:08:04