2013-06-13 2 views
0

Я новичок в Statistical Pattern Recognition Toolbox в matlab. Я пытаюсь использовать функцию oaasvm в этой панели инструментов. Прежде чем использовать это, мне нужно запустить compilemex.m. Но когда я запускаю его я получаю следующую ошибкуcompilemex в наборе статистических шаблонов Recognition в Matlab

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

Я отредактировал ваш вопрос, чтобы добавить ссылку на то, что я думаю, это панель инструментов, на которую вы ссылаетесь. Он не является продуктом из MathWorks. – horchler

+0

Последнее обновление этого продукта было два года назад ... Вероятно, вам удастся связаться с ними или отладить его самостоятельно (хотя, я полагаю, есть небольшой шанс, что кто-то здесь использовал это). – horchler

+1

Кажется, что пространство в 'Program Files' не распознается. Следовательно, код ищет «Программу», которую он не может найти. Не уверен, что есть что-то, что вы можете сделать, не устанавливая Matlab где-то в другом месте или не изменяя 'compilemex.m', чтобы обрабатывать пробел в вашем пути. – Schorsch

ответ

1

Как объяснил Шорш в комментариях, вам нужно добавить кавычки вокруг строк пути, чтобы обрабатывать пробелы в них.

Исправления легко отредактировать файл 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

+0

отлично! большое спасибо –