7

如何确定我是在 32 位还是 64 位版本的 matlab 上运行?

我有一些预编译的 mex 文件,它们需要不同的路径,具体取决于 32/64 位 matlab。

4

3 回答 3

6

32 位与 64 位的问题确实是一个红鲱鱼。如果我理解正确,您想确定需要哪组已编译的 MEX 文件,以便您可以适当地设置路径。为此,您可以使用以下功能mexext

>> help mexext
 MEXEXT MEX filename extension for this platform, or all platforms. 
    EXT = MEXEXT returns the MEX-file name extension for the current
    platform. 

    ALLEXT = MEXEXT('all') returns a struct with fields 'arch' and 'ext' 
    describing MEX-file name extensions for all platforms.

    There is a script named mexext.bat on Windows and mexext.sh on UNIX
    that is intended to be used outside MATLAB in makefiles or scripts. Use
    that script instead of explicitly specifying the MEX-file extension in
    a makefile or script. The script is located in $MATLAB\bin.

    See also MEX, MEXDEBUG.
于 2008-10-16T13:36:08.193 回答
5

接受 ScottieT812 和 dwj 的建议,我发布了自己的解决方案来获得一些积分。

该函数computer返回我正在运行的架构。所以:

switch computer
    case 'GLNX86'
        display('32-bit stuff')
    case 'GLNXA64'
        display('64-bit stuff')
    otherwise
        display('Not supported')
end

为我工作

于 2008-12-18T11:53:10.120 回答
3

这真的有效吗?你用的是哪个版本的matlab?

据我所知,64 位平台以“64”而不是 86 结尾。从 matlab 网站 http://www.mathworks.com/access/helpdesk/help/techdoc/ref/computer.html我不知道认为计算机将永远返回 GLNXA86 但 GLNXA64 。

所以这个问题特定于 GNU Linux 32 位或 64 位版本。

如果您正在测试任何 64 位平台,那么您可能需要测试最后 2 个字符以找到“64”,即类似

if regexp(computer,'..$','match','64'),
   % setup 64bit options
else,
   % 32bit options
end
于 2008-10-15T23:44:31.523 回答