Подтвердить что ты не робот

Как определить, запущен ли MATLAB или Octave?

Мне нужно написать код, который должен работать одинаково хорошо в Octave и на MATLAB. Проблема в том, что ему нужно сделать некоторые файлы GUI, которые MATLAB и Octave обрабатывают совершенно по-другому.

Есть ли способ определить, выполняю ли я MATLAB или Octave, чтобы вызвать правильную функцию?

4b9b3361

Ответ 1

Вы можете использовать следующий тест, чтобы отличить Octave от MATLAB:

isOctave = exist('OCTAVE_VERSION', 'builtin') ~= 0;

Ответ 2

Существует также подсказка в вики на официальном сайте octave.org. Они предлагают следующее:

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

Ответ 3

Я бы использовал, например, команду ver, которая дает:

в MATLAB:


MATLAB Version 7.7.0.471 (R2008b)  Операционная система: Linux 2.6.31-20-generiС# 57-Ubuntu SMP Mon Feb 8 09:05:19 UTC 2010 i686  Java VM Версия: Java 1.6.0_04 с Sun Microsystems Inc. Java HotSpot (TM) Клиентский смешанный режим VM


в октаве:


GNU Octave версии 3.0.5 Лицензия GNU Octave: общая общедоступная лицензия GNU Операционная система: Linux 2.6.31-20-generiС# 57-Ubuntu SMP Mon Feb 8 09:05:19 UTC 2010 i686


Другая возможность - использовать функцию лицензии.

Ответ 4

В Matlab:

>> exist octave_config_info
ans =
     0

В октаве:

octave:3> exist octave_config_info
ans =  5