¿Se ejecuta en matlab de 32 o 64 bits?
Pregunta
¿Cómo puedo determinar si estoy ejecutando una versión de matlab de 32 bits o de 64 bits?
Tengo algunos archivos mex precompilados que necesitan diferentes rutas según 32 / 64bit matlab.
Solución 2
Siguiendo las sugerencias de ScottieT812 y dwj, publico mi propia solución para ganar algunos puntos.
La función computer
devuelve la arquitectura en la que estoy corriendo. entonces:
switch computer
case 'GLNX86'
display('32-bit stuff')
case 'GLNXA64'
display('64-bit stuff')
otherwise
display('Not supported')
end
funciona para mí
Otros consejos
La cuestión de 32 contra 64 bits es realmente una pista falsa. Si entiendo correctamente, desea determinar qué conjunto de archivos MEX compilados son necesarios para que pueda establecer la ruta de manera adecuada. Para esto, puede usar la función 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.
¿Esto realmente funciona? ¿Qué versión de matlab estás usando?
Hasta donde yo sé, las plataformas de 64 bits terminan con '' 64 '' no 86. Desde el sitio matlab http://www.mathworks.com/access/helpdesk/ help / techdoc / ref / computer.html No creo que esa computadora regrese GLNXA86 sino GLNXA64 en su lugar.
Entonces, esta pregunta es específica de la versión GNU Linux de 32 bits o 64 bits.
Si está probando cualquier plataforma de 64 bits, probablemente necesite probar los últimos 2 caracteres para encontrar "64". es decir, algo como
if regexp(computer,'..,'match','64'),
% setup 64bit options
else,
% 32bit options
end