2011-08-24 55 views
3

我有一系列爲MATLAB編寫的實驗,但最近我們試圖通過Octave來運行它們。我意識到它們大部分是兼容的,但我遇到了一些問題,而且我發現的在線常見問題解答或指導都沒有解決這些問題。它有點複雜,因爲有多個.m文件相互作用;不過,現在我要把重點放在主程序上。無論如何,所以當我試圖通過倍頻來運行該文件(MLP.m),我得在終端窗口下面的錯誤:將MATLAB文件轉換爲Octave

error: dir: expecting directory or filename to be a char array 
error: called from: 
error: /Applications/Octave.app/Contents/Resources/share/octave/3.2.3/m/miscellaneous/dir.m at line 128, column 5 
error: /Applications/MATLAB_R2008a/toolbox/psychoacoustics/MLParameters.m at line 86, column 7 
error: /Applications/MATLAB_R2008a/toolbox/psychoacoustics/MLP.m at line 9, column 3 

它引用的線路如下:

1)

d = dir([cd myslash 'Experiments_MLP' myslash '*.m']); 

2)

s = MLParameters; 

什麼這些線是不符合八度?我無法在網上找到任何表示這些不起作用的內容。

之後,終端窗口給了我這個批次的廢話:

dyld: Library not loaded: /usr/X11/lib/libfreetype.6.dylib 
    Referenced from: /usr/X11R6/lib/libfontconfig.1.dylib 
    Reason: Incompatible library version: libfontconfig.1.dylib requires version 13.0.0 or later, but libfreetype.6.dylib provides version 10.0.0 
dyld: Library not loaded: /usr/X11/lib/libfreetype.6.dylib 
    Referenced from: /usr/X11R6/lib/libfontconfig.1.dylib 
    Reason: Incompatible library version: libfontconfig.1.dylib requires version 13.0.0 or later, but libfreetype.6.dylib provides version 10.0.0 
/Applications/Gnuplot.app/Contents/Resources/bin/gnuplot: line 71: 1077 Trace/BPT trap   GNUTERM="${GNUTERM}" GNUPLOT_HOME="${GNUPLOT_HOME}" PATH="${PATH}"  DYLD_LIBRARY_PATH="${DYLD_LIBRARY_PATH}" HOME="${HOME}" GNUHELP="${GNUHELP}" DYLD_FRAMEWORK_PATH="${DYLD_FRAMEWORK_PATH}" GNUPLOT_PS_DIR="${GNUPLOT_PS_DIR}" DISPLAY="${DISPLAY}" GNUPLOT_DRIVER_DIR="${GNUPLOT_DRIVER_DIR}" "${ROOT}/bin/gnuplot-4.2.6" "[email protected]" 
/Applications/Gnuplot.app/Contents/Resources/bin/gnuplot: line 71: 1083 Trace/BPT trap   GNUTERM="${GNUTERM}" GNUPLOT_HOME="${GNUPLOT_HOME}" PATH="${PATH}" DYLD_LIBRARY_PATH="${DYLD_LIBRARY_PATH}" HOME="${HOME}" GNUHELP="${GNUHELP}" DYLD_FRAMEWORK_PATH="${DYLD_FRAMEWORK_PATH}" GNUPLOT_PS_DIR="${GNUPLOT_PS_DIR}" DISPLAY="${DISPLAY}" GNUPLOT_DRIVER_DIR="${GNUPLOT_DRIVER_DIR}" "${ROOT}/bin/gnuplot-4.2.6" "[email protected]" 
error: you must have gnuplot installed to display graphics; if you have gnuplot installed in a non-standard location, see the 'gnuplot_binary' function 

我已經安裝的Gnuplot,我檢查了gnuplot_binary功能,它並沒有給我任何答案。 GNUPlot與Octave本身一起安裝在my/Applications目錄中。爲什麼不應該這樣工作? GNUPlot附帶的自述文件沒有指出它要安裝的特殊目錄。那麼dyld庫沒有加載錯誤呢?這與GNUPlot問題有關嗎?還是其他問題?

無論如何,感謝您的幫助

+1

的內容是什麼這些變量:'cd'和'myslash'?或者它是一個函數調用像MATLAB中的'filesep'? – Amro

+0

cd只是調用目錄的命令。 Myslash只是一個確保程序可以在PC和Mac上運行的變量。它的設置使得在PC上,目錄路徑在Mac上使用'\'和'/'。 – Billy

+0

['cd'](http://octave.sourceforge.net/octave/overview.html#CurrentWorkingDirectory)實際上是一個內置函數(存在於MATLAB和Octave中)來更改當前目錄,並且不返回任何東西。 DIR期望一個字符串作爲它的參數.. – Amro

回答

1

解決您的第一個錯誤,很容易用一個例子來解釋:

dirName = '/some/path';      %# base directory 
filesPath = fullfile(dirName, 'MLP', '*.m'); %# full path string 

d = dir(filesPath);       %# expand/enumerate files 
for i=1:numel(d) 
    disp(d(i).name) 
end 

你也可以有內置使用字符串連接自己的路徑:

%# '/some/path/MLP/*.m' 
filesPath = [dirName filesep 'MLP' filesep '*.m']; 

以上應該適用於MATLAB和Octave