Matlab: besoin d'un regard exterieur
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Matlab: besoin d'un regard exterieur



  1. #1
    invite3e10b0eb

    Post Matlab: besoin d'un regard exterieur


    ------

    Bonjour,
    je vous ecris car étant tout nouveau utilisateur de matalb, je desespere et j'ai besoin d'un regard exterieur sur une fonction que je programme. L'idée étant, j'ai des données (1 000 000), et j'ai besoin en tapant pour une tranche d'année (ex de 1990 à 1995), une superposition de toutes les trajectoires des bouées qui ont fait les relevés. Alors, là où je ne comprend pas c'est que ca tourne nickel sauf quand je mets le tout en fonction. Voila ce que j'ai ecrit:

    function[ ]=choiceyear()
    n=50000; (nbre de données)
    for l=1990:1:1998 (tranche d'année)
    A=rand(n,12); (matrice dans laquelle je vais stocker tous les
    identificatifs de lignes i, i est la seule façon
    d'ordonner ttes mes données)
    for h=1:1:12 (nbre de mois)
    nb=1;
    for i=1:1:n
    if month(i)==h && year(i)==l
    A(nb,j)=i;
    nb=nb+1;
    end
    end (mon probleme surgit ici, il semblerait apres
    quelques tests, b reste tjs a 1, a croire qu'il ne
    rentre pas dans la boucle if, alors que tester
    hors fonction, ça passe)
    if b==1 (ainsi il reste que dans cette boucle)
    load hawaii_coastline.mat
    longcoast=coastline(:,1)-360;
    figure
    plot(longcoast(),coastline(:,2 ),'k-','LineWidth',1)
    axis([long,lond,latb,lath])
    grid
    xlabel('Longitude')
    ylabel('Latitude')
    title(['Drifting Buoys in ',num2str(l), 'month number ',num2str(h)]) (ici j'ai opéré le changement, voir fin du
    message pour comprendre)
    else
    latb=[ ];
    lonb=[ ];
    for k=1:1:nb-1
    latb=[latb;lat(A(k,h))];
    lonb=[lonb;lon(A(k,h))];
    end
    load hawaii_coastline.mat
    lon3=coastline(:,1)-360;
    figure
    plot(lon3(),coastline(:,2),'k-','LineWidth',1)
    axis([-170,-150,16,26])
    hold on;
    plot(lonb,latb,'b+')
    grid
    xlabel('Longitude')
    ylabel('Latitude')
    title(['Drifting Buoys in ',num2str(l), 'month number ',num2str(h)])
    end
    end
    end

    Donc en gros, il m'affiche chaque figure de tous les mois mais sans un seul point dedans, mais je suis sur qu'il reste dans la boucle b==1 pour la simple raison que j'ai testé en changeant le titre de la figure uniquement dans cette boucle "drifting buoys blabla". Merci pour un regard exterieur et pour le temps que je vous y passerai.

    -----

  2. #2
    inviteae4072e1

    Re : Matlab: besoin d'un regard exterieur

    ta variable b n'est pas déclarrée, de plus i correspond à ?
    Enfin hawaii_coastline.mat est ordonné comment ?

  3. #3
    invite3e10b0eb

    Re : Matlab: besoin d'un regard exterieur

    Merci Hal pour ta réponse. A force de manipuler cette fonction, et de la tester, j'ai fait des erreurs de réécriture: il faut comprendre que b correspond à nb.

    i correspond à l'indice de ligne pour un relevé de bouée, grace a lui,
    dans hawai_costline.mat, a la i-eme ligne, j'ai une correspondance du relevé entre le "month.mat","year.mat",id.mat" (identificatif de la bouée, genre le code barre),"lat.mat"(latitude),"lo n.mat"(longitude) et la température relevée.

  4. #4
    inviteae4072e1

    Smile Re : Matlab: besoin d'un regard exterieur

    ici dans ta boucle :

    Code:
    for h = 1 : 12
    nb = 1;
    for i = 1 : n
    if month(i) == h && year(i) == l
    A(nb, j) = i;
    nb = nb+1;
    end
    end
    
    ...
    
    end
    nb = 1 tjrs, c'est bien cela ? Alors soit year(1:n) et month(1:n) ne sont jamais égaux à h et i respectivement en même temps (&&) soit l'un d'eux n'est jamais vérifié.

    Fait du Pas-à-pas dans ton M.file, (tu cliques sur la gauche de ta ligne (dans la marge grise ou figure les numéro de ligne) puis tu appelles ta fonction dans le command window de Matlab, et puis une fois sur ta ligne, tu fais du step-à-step (icone en haut qui représente une feuille avec une flèche qui pointe vers le dessous)).

  5. A voir en vidéo sur Futura
  6. #5
    invite3e10b0eb

    Question Re : Matlab: besoin d'un regard exterieur

    J'ai testé la méthode et je t'avoue que je suis un peu largué, même en ayant regardé dans l'help ou sur des forums.

    J'ai restreint mon probleme à ce qui suit:

    je possède deux fichiers . mat avec mes données, du type:

    month.mat
    1 3 (correspondant au mois mars)
    2 3
    .....
    i 12 (decembre)
    ...
    n 5 (ou n est le nombre total de mes données)

    year.mat
    1 1988
    2 1988
    ...
    i 2003
    ...
    n 2008 (par exemple)

    Si je réduis mon problème à:

    function[nb]=choiceyear() (ici, je retourne nb en sortie)
    load 'year.mat'
    load 'month.mat'
    for h=1:12 (pour ballayer l'ens. des mois de l'année)
    nb=1; (initialisation/réinitialisation à chaque boucle)
    for i=1:n
    if month(i)==h && year(i)==1989
    nb=nb+1 (j'incrémente pour connaitre le nombre d'él.
    qui répond aux conditions ci dessus)
    end
    end
    end
    end

    Mon but étant de connaitre pour chaque mois d'une année, le nombre d'élément (cad le nbre de relevés collectés). Hors lorsque j'execute les memes intructions en enlevant "function....", je trouve un nb=1174 (ce qui est juste et quasi immédiat ). Mais lorsque j'appelle la fonction, je trouve nb=1 (). Et je ne comprend pas pourquoi, je n'ai aucun message d'erreur, et matlab se rend 'busy' pendant 1 min, à croire qu'il calcule ou cherche quelque chose ().

    En tout cas, je te remercie d'avoir répondu à mon post Hal.

  7. #6
    invite3e10b0eb

    Re : Matlab: besoin d'un regard exterieur

    Petit oubli, avant les 2 end de fin, je place un nb afin de connaitre les valeurs nb pour chaque mois.

  8. #7
    invite3e10b0eb

    Re : Matlab: besoin d'un regard exterieur

    Re,

    Une personne a trouvé l'origine de mon problème entre ma command wind et ma fonction, c'est tout bête mais il me fallait initialisé les vecteurs month(i) et year(i). Deux petites lignes qui m'en ont fait voir de toutes les couleurs (ou les années et les mois^^).
    En tout cas, une nouvelle fois merci à toi, Hal, pour m'avoir aidé.

    A plus, pour un nouveau problème

  9. #8
    inviteae4072e1

    Re : Matlab: besoin d'un regard exterieur

    La prochaine fois, post ici (tu auras plus de réponse à tes questions) :
    http://www.developpez.net/forums/f14...pement/matlab/

Discussions similaires

  1. [matlab] programmation : peut-on générer un arbre des fonctions d'un code Matlab ?
    Par inviteafe1cd13 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2015, 11h12
  2. PDM arrivée d'air extérieur ! besoin d'aide !!
    Par invitefc307a84 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 5
    Dernier message: 11/07/2010, 02h17
  3. De G a B, besoin d'aide pour une isolation exterieur
    Par invite4e1a34e3 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 18
    Dernier message: 21/04/2010, 12h25
  4. Isolation exterieur - Besoin d'avis épaisseur
    Par invited2dd2b64 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 4
    Dernier message: 07/09/2009, 10h38
  5. help. besoin d'un pro sur matlab
    Par invite315f006f dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 29/07/2004, 11h12