2012-12-20 3 views
4

Possible en double:
How do I detect if I’m running MATLAB or Octave?Ignorer certaines lignes Octave (mais les garder pour Matlab)

Mon code a été conçu en utilisant MATLAB et je l'utilise encore. Cependant, si j'essaye d'en exécuter certaines parties en utilisant Octave, j'obtiens des erreurs. Par exemple, le code MATLAB utilise pause on, ce qui n'est pas le cas d'Octave.

Existe-t-il un moyen de vérifier quel environnement de programmation utilise le code? Par exemple,

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

je peux utiliser getenv('COMPUTERNAME') mais dans ce cas, le nom de l'ordinateur est le même! Merci.

Répondre

6

Il existe une fonction de version à la fois dans MATLAB et Octave. Ils renvoient des valeurs différentes et la version de MATLAB a des arguments, absents dans Octave. J'espère que cela pourra aider.

+1

Merci. Je suis allé de l'avant avec 'A = ver; isequal (A (1,2) .Name, 'MATLAB') ' – Maddy

+5

mieux utiliser [strcmpi] (http://www.mathworks.nl/help/matlab/ref/strcmpi.html) pour comparer les chaînes –

0

Je pense que la meilleure méthode consiste à avoir une sous-fonction qui vérifie cela. L'extrait suivant est probablement celui qui requiert le minimum du système. Et avec la variable persistante, il peut être appelé à plusieurs reprises sans un gros coup de performance.

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

Vous pouvez ensuite l'utiliser facilement dans les blocs conditionnels. Voir that entry sur le wiki d'Octave.

Questions connexes