portable online gui matlab portability octave

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.