将MATLAB文件转换为Octave
问题描述:
我有一系列为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问题有关吗?还是其他问题?
无论如何,感谢您的帮助
答
解决您的第一个错误,很容易用一个例子来解释:
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
答
我知道你已经解决了你的问题,但如果你再有问题,这里是具有约Matlab和倍频之间的差异基本信息的一些链接:
的内容是什么这些变量:'cd'和'myslash'?或者它是一个函数调用像MATLAB中的'filesep'? – Amro
cd只是调用目录的命令。 Myslash只是一个确保程序可以在PC和Mac上运行的变量。它的设置使得在PC上,目录路径在Mac上使用'\'和'/'。 – Billy
['cd'](http://octave.sourceforge.net/octave/overview.html#CurrentWorkingDirectory)实际上是一个内置函数(存在于MATLAB和Octave中)来更改当前目录,并且不返回任何东西。 DIR期望一个字符串作为它的参数.. – Amro