Bonjour à tous,

Je viens vers vous pour avoir quelques renseignements/précisions quant aux compatibilités entre Octave et MATLAB.

J'ai pris connaissance du wiki disponible sur le site d'Octave soulignant les principales différences entre ces deux environnements numériques.

J'ai ensuite essayé l'activation des vérifications automatiques d'Octave (check de la compatibilité vers MATLAB):
• J'ai bien activé le mode "--traditional" comme indiqué (activation depuis le fichier octave.vbs)
• J'ai également manipulé le fichier octaverc afin d'obtenir la fonctionnalité similaire à "--traditional", en activant manuellement les options:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
PS1                             = ">> ";
PS2                             = "";
beep_on_error                   = true;
confirm_recursive_rmdir         = false;
crash_dumps_octave_core         = false;
disable_diagonal_matrix         = true;
disable_permutation_matrix      = true;
disable_range                   = true;
fixed_point_format              = true;
history_timestamp_format_string = "%%-- %D %I:%M %p --%%";
print_empty_dimensions          = false;
save_default_options            = "-mat-binary";
struct_levels_to_print          = 0;
• J'ai ensuite suivi les conseils d'autres sources en activant/désactivant les warnings suivant (toujours dans le fichier octaverc):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
warning('off', 'Octave:abbreviated-property-match');
warning('off', 'Octave:fopen-file-in-path');
warning('off', 'Octave:function-name-clash');
warning('off', 'Octave:load-file-in-path');
warning('off', 'Octave:possible-matlab-short-circuit-operator');
warning("on", "Octave:language-extension");

Voilà où j'en suis arrivé aujourd'hui. Mes configurations fonctionnent (après vérification des variables citées précédemment, utilisation de la fonction argv, etc..).
Mais je ne vous cache pas une certaine déception...

Tout d'abord, l'activation du warning "Octave:language-extension" me retourne beaucoup trop d'information; Il semble que le check s'effectue également au sein même des fonctions propres à Octave (impossible de trouver si mon code contient donc une incompatibilité dans cet amas d'information).
Deuxièmement, après un test rapide du code ci-dessous, je m'attendais à obtenir un warning sur 3 éléments:
(1) != → interdit par MATLAB
(2) printf → MATLAB utilise fprintf
(3) "po" → MATLAB force l'utilisation du guillement simple '

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
clear all;
close all;
if (2 != 3)
  printf('ok');
  disp("po");
endif
Seulement le point (1) m'a été signalé. Mais j'ai également reçu un warning concernant l'utilisation de "close all" (indiquant une incompatibilité MATLAB dû au code de cette fonction interne à Octave).


Mon bilan actuel si l'on veut valider la compatibilité MATLAB/Octave, est qu'il faut établir des règles de codages. Les modules de vérifications automatiques ne sont clairement pas au point.
Je viens vers vous pour savoir si j'ai essayé (et correctement) toutes les possibilités à ce jour pour vérifier automatiquement la compatibilité entre Octave et MATLAB?

Merci pour vos retours,
Nadreoh