Работает на 32 или 64-битном Matlab? - PullRequest
7 голосов
/ 13 октября 2008

Как я могу определить, использую ли я 32-битную или 64-битную версию Matlab?

У меня есть несколько предварительно скомпилированных mex-файлов, которые требуют разных путей в зависимости от 32/64-битного matlab.

Ответы [ 3 ]

6 голосов
/ 16 октября 2008

Вопрос 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.
5 голосов
/ 18 декабря 2008

Рассматривая предложения ScottieT812 и dwj, я выкладываю свое собственное решение, чтобы заработать несколько очков.

Функция computer возвращает архитектуру, на которой я работаю. так:

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

у меня работает

3 голосов
/ 16 октября 2008

Это действительно работает? Какую версию Matlab вы используете?

Насколько мне известно, 64-битные платформы заканчиваются на "64", а не на 86. С сайта matlab http://www.mathworks.com/access/helpdesk/help/techdoc/ref/computer.html Не думаю, что компьютер когда-либо вернет GLNXA86, но вместо этого GLNXA64.

Так что этот вопрос относится только к 32-битной или 64-битной версии GNU Linux.

Если вы тестируете на любой 64-битной платформе, вам, вероятно, нужно протестировать последние 2 символа, чтобы найти «64», то есть что-то вроде

if regexp(computer,'..$','match','64'),
   % setup 64bit options
else,
   % 32bit options
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...