How do I detect if I'm running MATLAB or Octave?

后端 未结 4 1126
再見小時候
再見小時候 2020-11-30 08:16

I need to write code that should run equally well in Octave and on MATLAB. Problem is that it needs to do some GUI stuff, which MATLAB and Octave handle completely different

相关标签:
4条回答
  • 2020-11-30 08:48

    In Matlab:

    >> exist octave_config_info
    ans =
         0
    

    In Octave:

    octave:3> exist octave_config_info
    ans =  5
    
    0 讨论(0)
  • 2020-11-30 09:03

    There is also a hint in the wiki on the official octave.org website. They propose the following:

    Edit: Not all versions of Matlab support '#' for comments so I changed the example to use '%' instead. It works in Matlab R2018 (Linux) and 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
    
    0 讨论(0)
  • 2020-11-30 09:11

    I would use, for example, the ver command, which yields:

    in MATLAB:


    MATLAB Version 7.7.0.471 (R2008b) Operating System: Linux 2.6.31-20-generic #57-Ubuntu SMP Mon Feb 8 09:05:19 UTC 2010 i686 Java VM Version: Java 1.6.0_04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode


    in Octave:


    GNU Octave Version 3.0.5 GNU Octave License: GNU General Public License Operating System: Linux 2.6.31-20-generic #57-Ubuntu SMP Mon Feb 8 09:05:19 UTC 2010 i686


    Another possibility is to use the license function.

    0 讨论(0)
  • 2020-11-30 09:12

    You could use the following test to differentiate Octave from MATLAB:

    isOctave = exist('OCTAVE_VERSION', 'builtin') ~= 0;
    
    0 讨论(0)
提交回复
热议问题