我是matlab中Statistical Pattern Recognition Toolbox的新手。 我试图在此工具箱中使用oaasvm函数。在使用之前我需要运行compilemex.m。但是当我运行它时,我得到以下错误
>> compilemex
Compiling MEX files of STPRtool...
mex -O -IC:\Program Files\MATLAB\R2013a\toolbox\stprtool\kernels -outdir C:\Program Files\MATLAB\R2013a\toolbox\stprtool\kernels C:\Program Files\MATLAB\R2013a\toolbox\stprtool\kernels\kernel.c C:\Program Files\MATLAB\R2013a\toolbox\stprtool\kernels\kernel_fun.c
Error using mex (line 206)
The destination directory "C:\Program" cannot be found.
Error in compilemex (line 113)
eval(mexstr);
任何人都可以告诉我如何继续运行oaasvm代码?
答案 0 :(得分:1)
正如Schorsch在评论中所解释的那样,您需要在路径字符串周围添加引号以处理其中的空格。
修复很简单,编辑文件compilemex.m
,查找以下部分(第102行),然后进行以下更改:
% -- Compile functions -----------------------------
for i=1:length(fun),
mexstr = ['mex -O -I''' translate(fun(i).include,root) ...
''' -outdir ''' translate(fun(i).outdir, root) ''' '];
for j=1:length(fun(i).source),
mexstr = [mexstr '''' translate(char(fun(i).source(j)),root) ''' '];
end
fprintf('%s\n',mexstr);
eval(mexstr);
end
基本上我在路径字符串周围添加了单引号(通过单引号转义)。结果是执行的命令将采用以下形式:
mex -O -I'C:\Documents and Settings\Amro\Desktop\stprtool\kernels'
-outdir 'C:\Documents and Settings\Amro\Desktop\stprtool\kernels'
'C:\Documents and Settings\Amro\Desktop\stprtool\kernels\kernel.c'
'C:\Documents and Settings\Amro\Desktop\stprtool\kernels\kernel_fun.c'
请注意,您不必将此软件包放在MATLAB安装中。您可以将解压缩的文件夹放在系统的任何位置,只要将其添加到MATLAB路径addpath