2012-04-01 6 views
1

J'ai un problème lors de l'exécution de ma fonction principale dans MATLAB (le programme principal et appelle d'autres fonctions). Essayer de l'exécuter me donne l'erreur "??? Undefined fonction ou variable 'max_x_address'". Mais, comme vous pouvez le voir ci-dessous, il a été déclaré comme global. Cela me dérange vraiment, donc toute aide serait appréciée. (Dois-je modifier mon fichier pathdef.m C'est ce que le dépannage Matlab dit, mais j'ai suivi quelques-unes des étapes et il n'a pas aidé?).
Voici un squelette du programme:Fonction non définie ou variable dans MATLAB

function Adaptive_Information 
global HUBS, max_x_address, max_y_address; 
. 
. 
max_x_address = 10; 
. 
. 
end 

Répondre

4

Vous devez le déclarer global dans tous les contextes qui l'utiliseront. Autrement dit, ajouter:

global max_x_address 

Au début de chaque fonction qui utilisera max_x_address, plus l'espace de travail de base (si nécessaire).

+1

Merci, bien que j'ai pu corriger. La solution s'est avérée être d'éviter de déclarer plusieurs variables sur la même ligne. (Comportement étrange de MATLAB) – Joebevo

2

En fait, la ligne

global HUBS, max_x_address, max_y_address; 

ne déclare pas trois variables globales. La virgule est un délimiteur d'expression ou d'expression dans Matlab, tout comme l'EOL ou le point-virgule. Donc Matlab lit ce qui précède que

global HUBS 
max_x_address 
max_y_address; 

Alors qu'est-ce qu'il fait est de déclarer HUBS comme mondial. Ensuite, il essaie de récupérer la valeur de max_x_address et l'imprimer. Enfin, il récupère la valeur de max_y_address et le jeter.

La syntaxe correcte de déclarer plus d'une variable globale est de les délimiter par des espaces (voir aussi la documentation):

de max_y_address de

MOYEUX mondiale

Questions connexes