online - ¿Cómo puedo detectar si estoy ejecutando MATLAB u Octave?
octave vs matlab (4)
En Matlab:
>> exist octave_config_info
ans =
0
En Octave:
octave:3> exist octave_config_info
ans = 5
Necesito escribir un código que funcione igual de bien en Octave y en MATLAB. El problema es que necesita hacer algunas cosas de GUI, que MATLAB y Octave manejan de forma completamente diferente.
¿Hay alguna manera de detectar si estoy ejecutando MATLAB u Octave, para llamar a la función correcta?
Puede usar la siguiente prueba para diferenciar Octave de MATLAB:
isOctave = exist(''OCTAVE_VERSION'', ''builtin'') ~= 0;
También hay una hint en la wiki en el sitio web oficial de octave.org. Proponen lo siguiente:
Editar: No todas las versiones de Matlab admiten ''#'' para comentarios, así que cambié el ejemplo para usar ''%''. Funciona en Matlab R2018 (Linux) y Octave 4.2.2
function foo
%% fancy code that works in both
if (is_octave)
%% use octave super_powers
else
%% do it matlab way
end
%% fancy code that works in both
end
%% subfunction that checks if we are in octave
function r = is_octave ()
persistent x;
if (isempty (x))
x = exist (''OCTAVE_VERSION'', ''builtin'');
end
r = x;
end
Utilizaría, por ejemplo, el comando ver, que produce:
en MATLAB:
Sistema operativo MATLAB versión 7.7.0.471 (R2008b): Linux 2.6.31-20-generic # 57-Ubuntu SMP Lun Feb 8 09:05:19 UTC 2010 i686 Java VM Version: Java 1.6.0_04 con Sun Microsystems Inc. Java HotSpot (TM) Cliente VM modo mixto
en Octave:
GNU Octave Version 3.0.5 GNU Octave License: GNU General Public License Sistema operativo: Linux 2.6.31-20-generic # 57-Ubuntu SMP Lun Feb 8 09:05:19 UTC 2010 i686
Otra posibilidad es usar la función de licencia.