如何在MATLAB外部运行的脚本找出MATLAB的prefdir()
返回的值(默认情况下)?我对在Windows和Unix类型操作系统下都能做到这一点的方式很感兴趣。
更新: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 :(得分:0)
我认为Windows上最大的问题是,当您启动裸MatLab命令窗口(使用所有切换)时,它会将所有内容打印到自身,并且您无法拦截此输出(至少没有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删除它?
如果这不是程序员的机器,那么很少在Windows机器上找到Perl:)