Bonjour à tous

J'ai plusieurs fichiers '.mat' qui correspondent à une date fixe avec à l'intérieur des tableaux possédant une 1ere colonne X et une 2ème colonne Y.
Mon but final est d'obtenir pour un Y fixé un tableau avec en première colonne la date et le X correspondant à ce Y.

J'ai écrit un script sous Matlab pour parcourir ces tableaux, trouver la ligne correspond au Y (par exemple Y=2000). Et si il trouve un X correspondant à ce Y=2000 alors qu'il me l'imprime dans un nouveau fichier avec la date correspondante, sinon qu'il m'imprime la date et NaN dans la colonne X.

Mon soucis est dans le sinon car il ne me retourne pas de message d'erreur mais par contre il m'imprime des NaN partout dans la colonne X de mon fichier même quand il ne devrait pas...

C'est à ce niveau, ou je ne comprend pas mon erreur, et me tourne vers vous pour savoir si quelqu'un aurait un peu de temps pour m'aider à me débloquer. :S

Merci beaucoup d'avance en espérant avoir était le plus clair possible.

alciade

Je vous met mon script ci-dessous pour aider à comprendre:

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
clear all
 
%Ouverture du dossier où se trouve les .mat
rep = uigetdir( 'Select directory with waterline .mat')
cd (rep)
[filename,pathname]=uigetfile( '*.mat','MultiSelect','on'); %récupération d'une liste filename avec tous les fichiers mat 
 
%condition pour que le prog marche
if(numel(filename)==0);
    disp('pas de fichier .mat dans le dossier sélectionner');
    return
end
 
%Paramètre d'entrée
Y=input('Donnez la valeur de Y qui est constante \n') 
 
%Ouvrir nouveau fichier
filename_new = ['Yconstant',num2str(Y),'.txt']
fid=fopen(filename_new,'w');
 
%lecture du fichier .mat
for k=numel(filename):-1:1;
 
    clear fname
    clear allWL
    clear date
 
    fname=char([filename(k)]);
    load(fname,'-mat');           %lecture du .mat
 
    %Récupération de la date
    date1 = char([allWL.name]);    %lecture de la date du fichier
    Mois=date1(16:18);
    Jour=date1(20:21);
    Annee=date1(36:39);
    date=[Jour,'/', Mois,'/',Annee];  %Récupère le jour, le mois l'année du fichier
    datejulien = datenum(date);  % transforme la date gregorienne en date julienne
 
   %création de la matrice contenant les waterlines 
    for p=1:1:length(allWL) % boucle sur le nombre de partie de la WL
                            % (utile lorsque l'on fait un WL manuellement
                            % en plusieurs fois (zoom dézoom).
 
 
           % Récupèration des x pour un y constant
            mat = floor(allWL(1,p).xyz);    % arrondi les composantes x y z de la matrice pour obtenir un y sous la forme 10^3
 
            %tableau_final=[];
 
            for j=1:1:length(mat(:,2)); % Pour ts les i parcourant la colonne y
 
                if mat(j,2) == Y  % Si y=2000
                    fprintf(fid,'%s %i\n',date,mat(j,1)); % imprime un tableau avec les dates en 1er colonne et le X en 2nd
                break                              % et tu t'arrete la
 
 
               else 
                   fprintf(fid, '%s %s\n',date,'NAN'); % Sinon imprime NaN au niveau des X     ////!!!\\\\\ PROBLEME
                   break
                end
 
            end
        end
 
end
 
 
fclose(fid);
 
disp('affiche les résultats ds le fichier')