在Matlab中的统计模式识别工具箱中的compilemex

时间:2013-06-13 15:56:06

标签: matlab svm mex statistics

我是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代码?

1 个答案:

答案 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

即可。