Bonjour,

J'ai un petit soucis pour appeler une variable provenant d'un GUI afin de l'utiliser dans une fonction. Pourtant je ne pense pas avoir fait d'erreur de syntaxe mais d’après ce que j'ai compris il n'est pas toujours évident d'utiliser les variables des GUI.

Mon problème est le suivant : j'utilise un GUI afin de fixer des paramètres qui seront utilisés dans un programme qui lui même appelle une fonction (Coherence). L'une des entrées de cette fonction provient du GUI et quand j’exécute mon programme principal, a hauteur de la fonction, Matlab me dit que l’entrée provenant du GUI n'existe pas.

Or, quand je place un breakpoint au niveau de la ligne de code du programme principal qui appelle ma fonction Coherence la variable d’entrée est bien présente. Je ne comprends pas du tout d'ou vient le probleme...

Voici la ligne qui appelle ma fonction coherence, dans mon programme principal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[coherence,F5,S3,Q2,C]=Coherence(CO,N,f2);
CO est la variable provenant du GUI, c'est un string qui désigne le chemin pour récupérer des fichiers dans un dossier spécifique afin de l'utiliser dans ma fonction Coherence comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
function [coherence,F5,S3,Q2,C]=Coherence(CO,N,f2)
 
 
cd(CO);
 
COFILE=dir;
 
for d=3:length(COFILE);
    F5{d}=load(COFILE(d,1).name);
end
 
% Load all selected files
 
for h=3:length(F5);
 
    Q2{h-2}=F5{h};
 
end
 
% Pick up the fields ----------------------------------
 
for oo=1:length(Q2);
    w2=char(fieldnames(Q2{oo}));
    S3{oo}=getfield(Q2{oo},w2);
end
 
C= cellfun(@(x) x.y_values.values,S3,'uni',0); % Pick values from each cells and make a matrix of it
C= cat(1,C{:});
 
coherence=zeros(N-1,f2);
 
for yy=1:f2;
    for pp=2:N*(N-1)/2;
        for dd=N+1:size(C,1);
 
            coherence(pp-1,yy)=(abs(C(pp,yy))^2/(C(1,yy)*C(dd,yy)));
 
        end
    end
    coherence(1,yy)=(abs(C(2,yy))^2/(C(1,yy)*C(4,yy)));
end
return
quand j'execute le tout, matlab m'annonce :

??? Input argument "CO" is undefined. 

Error in ==> Coherence at 9
cd(CO);
Impossible pour moi de savoir pourquoi, pouvez vous m'indiquer la source du problème svp ?


Merci d'avance pour votre aide