2010-11-30 14 views
6

Je suis assez familier avec MATLAB, mais pas tellement avec l'écriture de GUI. Maintenant, mon patron m'a donné un programme MATLAB avec GUI qui a été développé sur une machine Windows et fonctionne sans problème. Je l'ai copié sur mon mac (osx 10.6.5 avec MATLAB R2009b) en utilisant une clé USB et j'ai essayé de travailler sur les fichiers sur mon ordinateur. Lors du démarrage de l'interface graphique, certains rappels sont exécutés, d'autres non. J'ai été capable d'ouvrir le fichier graphique contenant l'interface graphique dans GUIDE, mais il ne peut pas cliquer sur les champs de rappel dans l'inspecteur des propriétés. De plus, certains composants n'apparaissent pas dans le GUIDE qui sont visibles lors de l'exécution de l'interface graphique. J'ai d'abord soupçonné qu'il pourrait être corrompu par des caractères de nouvelle ligne modifiés, mais j'ai appris que les fichiers .fig sont binaires, donc cela ne devrait pas être le cas. J'ai ouvert le fichier .fig binaire avec un éditeur de texte et a trouvé la ligne ASCII suivante suivie par les données binaires:Compatibilité entre Mac et Windows MATLAB Gui

MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Tue Aug 10 17:11:57 2010 

-ce que les interfaces graphiques créées avec Matlab OS spécifique? Ce ne serait pas vraiment stupide?

J'ai de nouveau ouvert les fichiers sur la machine Windows et j'ai essayé de les exporter ou de les sauvegarder en spécifiant que je veux qu'ils soient compatibles avec d'autres systèmes d'exploitation mais ne trouvent pas une telle option.

Bien sûr, j'ai fait des recherches sur google, et je me suis demandé si je n'avais pas vraiment trouvé quelque chose en rapport. Si une incompatibilité existe, je pense que cela aurait été discuté, n'est-ce pas?

Quelqu'un le sait ou a déjà eu le même problème auparavant?

+5

Un peu hors-sujet, mais de toute façon, je recommande d'écrire des GUI Matlab par programmation et de ne pas utiliser GUIDE - - Bien sûr, cela peut être trop de travail pour le porter si c'est une interface graphique compliquée déjà écrite en GUIDE, mais vous (ou votre patron) pourriez vouloir le considérer pour la prochaine fois. Je l'ai appris à la dure quand une GUI (GUIDE) dans laquelle j'aurais mis beaucoup d'effort, est devenue inutile après que le fichier .fig binaire ait été corrompu d'une manière ou d'une autre. –

+1

MATLAB GUI est Java-Swing GUI et en tant que tel, il devrait être indépendant de la plate-forme. Aussi les fichiers .mat (et donc .fig) sont indépendants de la plate-forme. – Mikhail

+0

Y a-t-il des erreurs dans la fenêtre de commande? Dernièrement MATLAB a une nouvelle version, potentiellement non rétrocompatible, tous les 6 mois. Êtes-vous sûr d'utiliser la même version de MATLAB? – Mikhail

Répondre

1

Hmmm, ok. Eh bien, la réponse est assez embarrassante, mais elle a encore un certain potentiel d'apprentissage. Le dossier que mon patron m'a donné contenait un grand nombre de fichiers et des chiffres avec des noms similaires, tels que:

  1. bla1.fig
  2. bla.fig
  3. bla0.fig

le simple problème était, la première fois que j'ai ouvert la figure avec GUIDE j'ai ouvert la figure bla.fig au lieu de bla1.fig. Après cela, j'ai toujours utilisé la fonction rouvrir de GUIDE et je n'ai pas vu que c'était toujours le mauvais fichier. Cela a causé les problèmes.

==> donc il n'y a pas d'incompatibilité entre Mac et PC, bien que je me demande pourquoi la plate-forme est écrit dans le fichier, puis

==> il aurait pu être un problème de compatibilité ascendante comme la figure d'origine a été créé avec MATLAB 5

==> comme l'ont souligné @Adrian et @Mikhail: il serait très très utile d'utiliser un système de contrôle de Version afin d'éviter d'avoir des centaines de fichiers avec des numéros différents où la plupart d'entre eux sont plus aucun usage

+0

En outre, 'explicitFunctionNames' sont tellement mieux lisibles. – Jonas

-1

Il semble y avoir quelques incompatibilités entre différentes plates-formes et aussi entre différentes versions, d'après mon expérience (MATLAB 5, 6 et 7) aussi - j'ai rencontré des situations similaires plusieurs fois. Je ne suis pas exactement sûr quand le GUIDE est devenu disponible avec MATLAB - j'ai d'abord remarqué à ce sujet quand j'utilisais la première version de MATLAB 7. (Auparavant, il était très instable, mais est très utilisable maintenant. Par exemple, je me souviens vaguement d'un problème critique avec la version MATLAB 7. Vous avez dû télécharger un correctif pour que les interfaces graphiques fonctionnent.

Votre patron sait-il comment le fichier * .fig a été créé et dans quelle version de MATLAB? Pouvez-vous ouvrir le * .fig sur l'ancienne version de MATLAB et afficher l'interface graphique correctement?

Certaines fonctions sont peut-être devenues obsolètes depuis la version antérieure de MATLAB qui a été utilisée pour créer la figure, et cela peut causer quelques problèmes mineurs. Si tel est le cas, vous pouvez résoudre le problème en vérifiant tous les messages d'erreur et d'avertissement qui apparaissent dans la fenêtre de commande (ou la console MATLAB.)

De même, vous devriez pouvoir charger les fichiers * .fig sur la console. lieu de travail en utilisant la commande suivante à partir de la fenêtre de commande, en supposant que les fichiers sont dans le chemin de recherche de MATLAB.

charge your_file.fig -Mat

Vous devriez alors voir un ensemble de données de la structure, et de voir toutes les propriétés de figure, etc. dans cette structure.

Vous pouvez utiliser ces informations pour créer une nouvelle figure sans le GUIDE (Environnement/Outil de développement graphique).

Je vous recommande d'écrire votre propre application graphique. Ce n'est pas si difficile, avec/sans le GUIDE.

J'ai récemment ouvert un site avec quelques conseils sur la programmation MATLAB pour les débutants et les utilisateurs intermédiaires, et le mettre à jour dans mon temps libre. Si vous avez des questions spécifiques sur la construction de GUI, je peux (ou ne peux pas) pouvoir y répondre ...