0

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 コードの実行方法を教えてください。

4

1 に答える 1

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

于 2013-06-14T01:21:25.613 に答える