Игнорировать определенные строки в Octave (но сохранить их для Matlab)

Возможный дубликат:
Как определить, использую ли я MATLAB или Octave?

Мой код был разработан с использованием MATLAB, и я до сих пор его использую. Однако, если я попытаюсь запустить некоторые его части с помощью Octave, я получаю ошибки. Например, код MATLAB использует pause on, чего нет в Octave.

Есть ли способ проверить, какая среда программирования использует код? Например,

if  invoking_env == 'Matlab'
    % do this
else 
    % ok, so do this
end

Я могу использовать getenv('COMPUTERNAME'), но в этом случае имя компьютера такое же! Спасибо.


person Maddy    schedule 20.12.2012    source источник


Ответы (2)


Функция версии есть как в MATLAB, так и в Octave. Они возвращают разные значения, а версия MATLAB имеет некоторые аргументы, отсутствующие в Octave. Надеюсь, это поможет.

person AlexErofeev    schedule 20.12.2012
comment
Спасибо. Я продолжил с A=ver; isequal (A(1,2).Name, 'MATLAB') - person Maddy; 21.12.2012
comment
лучше использовать strcmpi для сравнения строк - person Gunther Struyf; 21.12.2012

Я думаю, что лучший способ - иметь подфункцию, которая проверяет это. Следующий фрагмент, вероятно, требует минимума от системы. А с постоянной переменной ее можно вызывать повторно без сильного снижения производительности.

function r = isoctave ()
  persistent x;
  if (isempty (x))
    x = exist ('OCTAVE_VERSION', 'builtin');
  end
  r = x;
end

Затем вы можете легко использовать его в блоках условий. См. эту запись на вики Octave.

person carandraug    schedule 21.12.2012