首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为自定义MATLAB工具箱执行编译器脚本时出错

为自定义MATLAB工具箱执行编译器脚本时出错
EN

Stack Overflow用户
提问于 2013-10-18 15:55:51
回答 3查看 970关注 0票数 0

我想一步一步地解决我遇到的问题。我想使用在http://www.cs.man.ac.uk/~gbrown/fstoolbox/找到的工具箱进行各种用途,我的研究是在Matlab中进行的,R2012a 32位。下面是我在Matlab中看到的错误,在使用'CompileFeat.m‘脚本时,必须调用该脚本来编译C中设计的主工具箱函数。当然,我将解压缩文件夹复制到当前工作路径中,并将所有文件夹添加到当前工作路径。

代码语言:javascript
复制
>> CompileFEAST

  C:\PROGRA~2\MATLAB\R2012A\BIN\MEX.PL: Error: 'FSToolboxMex.c' not found. 

Error using mex (line 206)
Unable to complete successfully.

Error in CompileFEAST (line 3)
mex -I../MIToolbox FSToolboxMex.c BetaGamma.c CMIM.c CondMI.c DISR.c ICAP.c JMI.c
mRMR_D.c ../MIToolbox/MutualInformation.c ../MIToolbox/Entropy.c
../MIToolbox/CalculateProbability.c ../MIToolbox/Arr 

因此,在对Google进行了深入研究之后,我看到了许多建议,要求我检查是否安装了编译器。请参阅下面的代码:

代码语言:javascript
复制
>> mex -setup

Welcome to mex -setup.  This utility will help you set up  
a default compiler.  For a list of supported compilers, see  
http://www.mathworks.com/support/compilers/R2012a/win32.html 

Please choose your compiler for building MEX-files: 

Would you like mex to locate installed compilers [y]/n? y

Select a compiler: 
[1] Lcc-win32 C 2.4.1 in C:\PROGRA~2\MATLAB\R2012a\sys\lcc 
[2] Microsoft Software Development Kit (SDK) 7.1 in C:\Program Files (x86)\Microsoft Visual Studio 10.0 

[0] None 

Compiler: 2

Please verify your choices: 

Compiler: Microsoft Software Development Kit (SDK) 7.1 
Location: C:\Program Files (x86)\Microsoft Visual Studio 10.0 

Are these correct [y]/n? y

*************************************************************************** 
  Warning: MEX-files generated using Microsoft Windows Software Development  
           Kit (SDK) require that Microsoft Visual Studio 2010 run-time  
           libraries be available on the computer they are run on. 
           If you plan to redistribute your MEX-files to other MATLAB 
           users, be sure that they have the run-time libraries. 
*************************************************************************** 


Trying to update options file: C:\Users\JQ\AppData\Roaming\MathWorks\MATLAB\R2012a\mexopts.bat 
From template:              C:\PROGRA~2\MATLAB\R2012a\bin\win32\mexopts\mssdk71opts.bat 

Done . . . 

************************************************************************** 
  Warning: The MATLAB C and Fortran API has changed to support MATLAB 
           variables with more than 2^32-1 elements.  In the near future 
           you will be required to update your code to utilize the new 
           API. You can find more information about this at: 
           http://www.mathworks.com/help/techdoc/matlab_external/bsflnue-1.html 
           Building with the -largeArrayDims option enables the new API. 

在完成这个步骤之后,我会神奇地希望我下一个调用'CompileFeast.m‘会成功。相反,我得到了:

代码语言:javascript
复制
>> CompileFEAST

  C:\PROGRA~2\MATLAB\R2012A\BIN\MEX.PL: Error: 'FSToolboxMex.c' not found. 

Error using mex (line 206)
Unable to complete successfully.

Error in CompileFEAST (line 3)
mex -I../MIToolbox FSToolboxMex.c BetaGamma.c CMIM.c CondMI.c DISR.c ICAP.c JMI.c
mRMR_D.c ../MIToolbox/MutualInformation.c ../MIToolbox/Entropy.c
../MIToolbox/CalculateProbability.c ../MIToolbox/Arr 

又是同样的问题!在进一步研究这个问题之后,有人建议使用dir函数来查看文件是否位于目录中(它不是),请参见下面的内容:

代码语言:javascript
复制
>> dir 'CompileFEAST.m'
CompileFEAST.m not found.

为了确保我可以在Matlab路径中看到其他文件,我检查了另一个函数,看看它是否在目录中:

代码语言:javascript
复制
>> dir 'hurst.m'

hurst.m

如您所见,这个文件可以在目录中找到。我只是提供了与将上述工具箱添加到我的Matlab工作路径相同的过程,我所做的就是将文件复制到工作路径中,并将文件或子文件夹添加到路径中。

有人注意到我哪里出错了吗?我不太喜欢解决这样的问题,我或多或少地用Matlab作为一个正在进行的建模平台来理解算法。

我期待着任何评论。

干杯,J

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-18 17:03:47

我认为您当前的目录(pwd)是错误的。

尝试:

代码语言:javascript
复制
cd('E:\School\hidethis\hidethis\MATLAB work\FEAST\FEAST\FSToolbox')
CompileFEAST
票数 2
EN

Stack Overflow用户

发布于 2013-10-18 16:04:37

即使您可能认为FSToolboxMex.c在您的MATLAB路径中,但它似乎不是。

  • FSToolboxMex.c在哪个目录?
  • 您当前的目录(运行CompileFEAST的目录)是什么?
  • 您的MATLAB路径是什么(使用path命令)?
  • which -all FSToolboxMex.c返回什么?
  • CompileFEAST的代码是什么样子的?
票数 2
EN

Stack Overflow用户

发布于 2013-10-18 17:18:34

使用'pwd‘命令告诉我,我与CompileFEAST.m的路径不同。这是一个简单的双击和重新运行脚本。这可能会让我尴尬,但至少我已经学会了我的错误!感谢大家的快速回复,非常感谢!

最佳,J

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19453917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档