2014-08-29 130 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