Aide sous matlab
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 60

Aide sous matlab



  1. #1
    invitea448e9bc

    Exclamation Aide sous matlab


    ------

    Bonjour tout le monde!!!
    Je travaille en ce moment sous matlab , mais malheureusement je n'y connais pas grand chose. J'ai plusieurs problèmes, si vous pouviez m'aider à trouver les solutions ca serait sympa:

    n°1
    je dois tracer un certain nombre de courbes mais à chaque fois matlab choisi tout seul l'échelle des y, c'est à dire que si je n'ai pas de points avant 3 il commence son graphe à 3 alors que moi j'aimerais qu'il trace depuis zéro pour pouvoir comparer avec les autres courbes?

    n°2
    J'ai aussi généré une matrice qui fait 365*301 et j'aimerais travailler dessus mais matlab me dit que passé plus de 10000 éléments je ne peux pas ouvrir la matrice, que faire? j'ai également essayé sous excel mais lui non plus ne veut pas ouvrir tout le tableau il trouve qu'il y a trop de nombres, il n'en ouvre qu'une partie!!!

    n°3 (et le plus important)
    j'ai environ 80 000 valeurs de m comprises entre 1 et 8 que j'aimerais classer dans des intervalles, ces valeurs sont déjà dans la matrice, mais bon j'aimerais les classer par ex
    pour 1.0<m<1.2 mettre le nombre de valeurs comprises dans cet intervalle, pour pouvoir faire, plus tard, une distribution de ces fameuses valeurs de m. Quelqu un aurait il une solution à me proposer????

    -----

  2. #2
    olle

    Re : Aide sous matlab

    1) "axis([xmin xmax ymin ymax])"
    voir "help axis", tu peux aussi changer les axes à la main.


    2) ça ne devrais pas poser de problème pourtant... c'est quoi "ouvrir la matrice" ?


    3) plusieures solutions... déjà faire ça manuellement, une boucle for, un compteur qui augmente à chaque fois...

    mieux : tappe "help histc" et essaye de comprendre
    Dernière modification par olle ; 21/04/2005 à 11h26.

  3. #3
    invitea448e9bc

    Exclamation Re : Aide sous matlab

    coucou !!!
    merci beaucoup pour ta réponse ca va m'aider!!
    par ouvrir la matrice je veux dire avoir accès a toutes les données ce qui n'est pas le cas actuellement car la matrice est 365*300 soit plus de 80.000 variables et matlab me dit que je ne peux pas avoi accès aux matrices de plus de 10.000 valeurs... peut être as tu une solution pour accéder à cette matrice?
    pour le 3) en fait le probleme est que je ne connais vraiment pas matlab alors peut être as tu un exmeple où je pourrais un peu mieux comprendre? parce que bon, une boucle for d accord, mais ou la mettre dans le programme, sur quelle valeur etc etc etc hihi tu devines mon désarroi je suis vraiment trop faible en matlab. en tous cas merci pour ton aide

  4. #4
    olle

    Re : Aide sous matlab

    pour le 2), Matlab travaille sans problème avec des matrices de cette taille. donc je ne comprends pas ton problème

    pour le 3), si A est la matrice, nbLignes et nbColonnes les nombres de lignes et de colonnes :

    Code:
    compteur = 0;
    for i = 1:nbLignes,
       for j = 1:nbColonnes,
          if (A(i,j)>=1 && A(i,j)<1.2)
             compteur = compteur+1;
          end
       end
    end
    compteur
    je peux pas t'aider plus... les aides de matlab sont très bien fournies et il suffit de taper 'help' puis le nom d'une commade pour avoir des explications.

    ex : 'help for'

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

    Re : Aide sous matlab

    2) c'est peut-être parceque Yélie a une version étudiante, plus restreinte au niveau de la taille mémoire possible...

    3) "help find"

    Yélie: tu devrais poster en informatique plutôt qu'en math, il y a quelques cadors matlab (Martini_bird, pourrais-tu déplacer la discussion?)

  7. #6
    martini_bird

    Re : Aide sous matlab

    Citation Envoyé par Gamma
    Yélie: tu devrais poster en informatique plutôt qu'en math, il y a quelques cadors matlab (Martini_bird, pourrais-tu déplacer la discussion?)
    Voili, c'est fait.

  8. #7
    invite24357dd0

    Post Re : Aide sous matlab

    Citation Envoyé par yélie
    par ouvrir la matrice je veux dire avoir accès a toutes les données ce qui n'est pas le cas actuellement car la matrice est 365*300 soit plus de 80.000 variables et matlab me dit que je ne peux pas avoi accès aux matrices de plus de 10.000 valeurs... peut être as tu une solution pour accéder à cette matrice?
    Salut,

    Par "ouvrir la matrice", tu veux peut-être dire "afficher toutes les valeurs dans un tableau genre Exel" ? (clic droit sur la variable dans le workspace puis "Open") Il est tout à fait possible que Matlab ne sache pas ouvrir une variable pour l'afficher comme dans un tableur (raison la plus probable : la taille de ta mémoire vive). De toutes façons, cet affichage rudimentaire ne permet pas grand chose d'autre que de voir les valeurs ; ce n'est pas très intéressant. Par contre, que Matlab sache ou non afficher les valeurs comme un tableur, il peut toujours y accéder, les manipuler, etc. Si ta matrice est dans le workspace, tu peux accéder à tous les éléments, un par un, avec la ligne : matrice(300, 300); par exemple. Donc, maintenant, tu peux jouer avec !

  9. #8
    invite73192618

    Re : Aide sous matlab

    Citation Envoyé par jepoirrier
    Par "ouvrir la matrice", tu veux peut-être dire "afficher toutes les valeurs dans un tableau genre Exel" ?
    En fait, je me demande si son problème n'est pas de "loader" sa matrice, par suite d'une mémoire vive insuffisante. A ce moment là, je crois qu'on peut se débrouiller quand même en passant par un "fopen", mais je ne sais pas m'en servir...

  10. #9
    invite24357dd0

    Re : Aide sous matlab

    Bonjour,

    Pour afficher les valeurs avec clic droit -> Open, la limite est (chez moi) de 65536 éléments. Je pense que cette limite est due au programme et pas à la mémoire (j'ai "seulement" 128 Mo de RAM).



    Par contre, voici une séquence pour créer une telle matrice, la sauver et la récupérer. Sur mon PC, çà ne prend que quelques secondes pour l'exécuter ...
    Code:
    >> matrice = rand(365, 300);
    >> save monfichier.mat matrice
    >> clear;
    >> open monfichier.mat
    
    ans = 
    
        matrice: [365x300 double]
    
    >> ans
    
    ans = 
    
        matrice: [365x300 double]
    
    >> matrice = ans.matrice;
    Si les données sont dans un fichier texte, la solution la plus simple (mais pas la plus rapide, surtout s'il faut importer plusieurs matrices de même type sur une machine peu puissante) est d'utiliser l'option "Import Data" du menu "File".

  11. #10
    invitea448e9bc

    Exclamation Re : Aide sous matlab

    Coucou a tout le monde!!
    Merci pour toute votre aide, j'ai réussi à faire ce que je voulais faire grâce à cela . j ai maintenant un aurte problème, mais bon d'abord je voulais dire qu'en fait je crois que c'est bien parce que j'ai une version étudiante que matlab n'ouvre pas la matrice, parce que j'ai travaillé sous une autre version qui elle l'ouvre.
    par contre au niveau d'excel lui non plus n'ouvre pas la matrice, il n'en ouvre qu'une partie, apparemment les quelques 100 000 valeurs, c'est vraiment trop pour lui, il est vraiment limité. Si quelqu'un a une solution ....
    Et aussi, merci d avoir transféré mon message, en fait je ne sais pas pourquoi il a attéri en mathématiques alors qu'au début je voulais qu'il aille en physique :d

    Alors par contre maintenant j'ai deux nouveaux problèmes:

    1°)Je dois travailler avec des données que quelqu'un m'a transmis, cette personne m'a donné les données sous forme de fichier importable sous matlab et sous excel. Bon comme j'ai besoin de travailelr sous matlab, je l'ai importé mais c'était une matrice 27000*10 et je n'avais besoin que d'une colonne, donc je me suis débrouillée pour ne sauvegarder que cette colonne. par contre ces données que l on va appeler Ig dépendent de l'heure et du jour qui sont dans deux autres colonnes différentes.
    Bon alors maintenant mon problème est le suivant:
    Je veux pouvoir diviser Ig par une valeur Io comment faire pour avoir les valeurs du Ig une par une , je suppose qu'il faut indicer Ig mais je ne sais pas trop comment faire??

    2°) Alors celui la est plus simple je pense, en fait j'ai un ensemble de données , elles sont dans un vecteur colonne , que je voudrais que matlab traite pour qu'il sauve dans un endroit celles comprises entre 1 et 1.2 puis dans un autre endroit celles comprises entre 1.2 et 1.4 etc quelqu'un aurait il une solution à proposer??

  12. #11
    invite8cc9db4e

    Re : Aide sous matlab

    Citation Envoyé par yélie
    Je veux pouvoir diviser Ig par une valeur Io comment faire pour avoir les valeurs du Ig une par une , je suppose qu'il faut indicer Ig mais je ne sais pas trop comment faire??
    Salut.
    Je ne sais pas ce qu'est ton Io. En supposant que ce soit un scalaire, tu peux de suite écrire Ig=Ig/Io.
    Tous les éléments de Ig seront divisés par Io.

    Si Io est aussi un vecteur DE MEME TAILLE, l'opération suivante : Ig=Ig./Io
    permet de diviser chaque élément de Ig par l'élément de Io correspondant. Cette opération est rendue possible par le "."
    Le code correspondant qui est condensé par cette expression serait qqch du genre :
    for i=1:length(Ig),
    Ig(i)=Ig(i)/Io(i)
    end

    1 et 1.2 puis dans un autre endroit celles comprises entre 1.2 et 1.4 etc quelqu'un aurait il une solution à proposer??
    Le plus simple, selon moi, est d'utiliser la fonction find comme il l'a été dit avant.
    Ex. (cf. help matlab) : find(Ig>100) renverra toutes les valeurs > 100 dans Ig.
    Si tu préfères obtenir les indices lignes-colonnes, tu peux utiliser :
    [I J]=find(Ig>100)
    qui renvoie l'ensemble des couples I,J (successivement indice ligne puis colonne) tels que Ig(I,J) > 100

  13. #12
    invitea448e9bc

    Exclamation Re : Aide sous matlab

    Coucou
    en fait le Io en question n'est pas un scalaire, c'est une variable qui dépend de n et qui est dans une boucle for n=1:365 , ce que tu m'as proposé marche malgré tout? enfin je vais essayer tu me diras et je verrais bien. merci !!!! au fait !!! !!

  14. #13
    invite73192618

    Re : Aide sous matlab

    Citation Envoyé par yélie
    par contre au niveau d'excel lui non plus n'ouvre pas la matrice, il n'en ouvre qu'une partie, apparemment les quelques 100 000 valeurs, c'est vraiment trop pour lui, il est vraiment limité. Si quelqu'un a une solution ....
    Excel peut ouvrir bien plus gros, mais il est limité au niveau du nombre de colonne (256). Tu peux t'en sortir en faisant deux fichiers sous matlab:

    Fichier1(1:365,1:150)=matrice( 1:365, 1:150);
    Fichier2(1:365,1:150)=matrice( 1:365, 151:300);
    save matrice1.txt Fichier1 -ASCII
    save matrice2.txt Fichier2 -ASCII

    Ensuite tu ouvres les .txt avec Excel, que tu peux alors mettre ensemble dans un même fichier .xls à condition d'avoir deux pages différentes.

    Citation Envoyé par yélie
    le Io en question n'est pas un scalaire, c'est une variable qui dépend de n
    Un scalaire est un nombre (qui peut être variable).

    Complément à la réponse de Topov pour le 2): length s'écrit en fait size(Ig, 1) pour avoir le nombre de lignes, size(Ig, 2) pour le nombre de colonnes. Pour ton travail, une solution est de faire une matrice indiquant tes différentes bornes:
    borne(1)=1; borne(2)=1,2; borne(3)=1,4; etc.

    Après avec le find ça serait
    for i=1:nb_critere-1
    compteur(i)=size(find(matrice< borne(i+1)),1)-size(find(matrice<borne(i+1)), 1);
    end;

    Et le compteur(i) contient alors le nombre d'éléments de ta matrice qui sont compris entre borne(i) et borne(i+1)

  15. #14
    invitea448e9bc

    Question Re : Aide sous matlab

    coucou a tous merci pour votre aide encore une fois !!!!

    par contre la je rencontre encore un nouveau probleme, j'ai un vecteur (19530*1) et je voudrais sortir les valeurs numéro 420 à 72O et ce toutes les 1440 valeurs jai essayé le mini programme suivant qui ne marche pas quelqu'un saurait il pourquoi?

    Ig étant mon vecteur de départ

    for i=0:23
    Ig(i)=(420+1440*i:720+1440*i);
    end

  16. #15
    invite24357dd0

    Re : Aide sous matlab

    Je ne suis pas devant Matlab pour le moment mais essaie un peu ceci :
    Code:
    for i=0:23
    Ig(:,i)=(420+1440*i:720+1440*i);
    end
    ?

  17. #16
    invitea448e9bc

    Re : Aide sous matlab

    Aïe!! !!!! ca ne marche pas non plus !!! !!!! !!! tu n'aurais pas une autre idée à proposer par hasard??

  18. #17
    invite8cc9db4e

    Re : Aide sous matlab

    Citation Envoyé par yélie
    Aïe!! !!!! ca ne marche pas non plus !!! !!!! !!! tu n'aurais pas une autre idée à proposer par hasard??
    salut.
    si c'est Ig que tu souhaites traiter, il ne faut pas l'écraser au fur et à mesure. Utilise une variable résultat.
    Si ton code de départ est correct dans l'esprit, modifie le de la manière suivante :

    Temporaire=[];
    for i=0:23
    Temporaire = [Temporaire ; Ig(420+1440*i:720+1440*i )];
    end

    bonne soirée

    [edit] Le résultat sera dans temporaire, sic [/edit]

  19. #18
    invitea448e9bc

    Re : Aide sous matlab

    coucou merci pour ta réponse mais cela ne ùmarche pas, je n'y comprends rien .. .. ... ... pourtant quand je vais dans le workspace la variable temporaire y est mais il me dit :
    Error in ==> C:\MATLAB6p1\work\Stage9.m
    On line 5 ==> Temporaire = [Temporaire ; Ig(420+1440*i:720+1440*i )];

    Donc bon je ne sais pas trop quoi faire, j'ai pourtant recopier ton programme exactement comme tu me l'as donné?!!

  20. #19
    olle

    Re : Aide sous matlab

    t'as pas bien recopié le message d'erreur de matlab, il manque justement la raison de l'erreur ce qui pourrait nous aider.

  21. #20
    invitea448e9bc

    Re : Aide sous matlab

    Oups
    je vous donne de nouveau le message d'erreur et puis ensuite le programme que j'ai tapé peut être que vous pourrez m'en dire plus?

    ??? Index exceeds matrix dimensions.

    Error in ==> C:\MATLAB6p1\work\Stage9.m
    On line 4 ==> Temporaire=[Temporaire;Ig(420+i:720+i)];


    Le programme que j'ai exécuté est :

    Ig=Feuil1(:,5);
    Temporaire=[];
    for i=0:1440:28800
    Temporaire=[Temporaire;Ig(420+i:720+i)];
    end


    en considérant que Feuil1 est le fichier de départ, Ig le vecteur que j'utilise. Ig est 27498*1 mais je veux retirer de Ig seulement certaines variables (de la ligne 420 à 720 puis pareil toutes les 1440 valeurs )

    Bon ben si vous avez une solution ..... merci pour tout

  22. #21
    invite73192618

    Re : Aide sous matlab

    Citation Envoyé par yélie
    ??? Index exceeds matrix dimensions.
    C'est parceque la valeur de i dépasse le nombre de ligne que Ig contient. Remplace 28800 par 25920 (18*1440=25920, 19 est trop grand car 19*1440+720=28080) et ça devrait être correct. Cela dit tu dis que Ig contient 27498 lignes, mais avant tu disais 19530??

  23. #22
    invitea448e9bc

    Re : Aide sous matlab

    coucou
    Ben en fait tu as raison, je viens de regarder et j'ai deux fichiers, un qui contient 19530 lignes et l'autre 27498, et je m'etais trompée au début j'avais pris le plus petit fichier.
    Merci pour ta solutio, ca marche, mais je suis bien embêtée parce que pour le moment je travaille avec 20 jours de données, minute par minute ce qui me donne toutes ces lignes, mais normalement il faudra que je travaille sur une année de données, donc le système de mettre un chiffre inférieur ne pourra pas fonctionner quand j'aurais toutes mes données, alors si jamais il y a une autre solution ????

  24. #23
    invite24357dd0

    Post Re : Aide sous matlab

    Citation Envoyé par yélie
    je suis bien embêtée parce que pour le moment je travaille avec 20 jours de données, minute par minute ce qui me donne toutes ces lignes, mais normalement il faudra que je travaille sur une année de données, donc le système de mettre un chiffre inférieur ne pourra pas fonctionner quand j'aurais toutes mes données, alors si jamais il y a une autre solution ????
    Salut,
    Essaie de spécifier la taille de ta matrice avec la fonction size. Exemple :
    Code:
    >> matrice1 = rand(19530,1);
    >> matrice2 = rand(27498,1);
    >> taille1 = size(matrice1);
    >> taille2 = size(matrice2);
    >> taille1(:,1)
    
    ans =
    
           19530
    
    >> taille2(:,1)
    
    ans =
    
           27498
    
    >>
    Tu pourras ainsi l'utiliser dans ton programme comme ceci, par exemple :
    Code:
    for i=0:1440:taille2(:,1)

  25. #24
    invite73192618

    Re : Aide sous matlab

    for i=0:1440:taille2(:,1)-720

  26. #25
    invitea448e9bc

    Re : Aide sous matlab

    coucou merci !! !! !!!! mais j'ai une question pourquoi tu fais -720 à la fin de la commande??

  27. #26
    invitea448e9bc

    Re : Aide sous matlab

    ahhhh je viens de te relire Gamm (excuse moi mais je connais pas ton prénom ) , et j'ai compris ce que tu veux dire en fait Ig a 27498 lignes donc i ne peut aller jusqu'à 28800 lignes!!! ohhh je n'avais pas compris ce que tu voulais dire en fait. Donc en fait il faut que je m'adapte au nombre de lignes de Ig, merci !!!!!!!

  28. #27
    invite73192618

    Re : Aide sous matlab

    Citation Envoyé par yélie
    en fait il faut que je m'adapte au nombre de lignes de Ig
    c'est ça

  29. #28
    invitea448e9bc

    Question Re : Aide sous matlab

    Coucou eh ben oui c'est encore moi cette fois ci après vous avoir demandé de l'aide pour tous les mini programmes que j'ai fait j'essaie d'en faire un moyen et j'ai besoin de votre aide !!!!!! ! le programe est le suivant:

    lat=(16.43*pi)/180;

    Ig=Feuil1(:,5);

    Temporaire=[];

    for i=0:1440:18000
    Temporaire=[Temporaire;Ig(420+i:720+i)];
    end


    %n le numéro du jour ds une année jour 23 au jour 36
    for n=23:36

    j(n)=n;

    % d équivaut à delta la déclinaison qui dépend du jour de l'année
    d=((23.45*pi)/180)*sin((((360*(284+n))/365)*pi)/180);

    %tsv temps solaire vrai, calculé entre 7h et 12h, symétrique après midi
    for tsv=420:720

    %w angle en minute
    w=((0.25*(tsv-720))*pi)/180;

    %h équivaut à sin(h)
    h=sin(d)*sin(lat)+cos(d)*cos(l at)*cos(w);

    Io(tsv-419)=1367*(1+0.033*cos((((360* 23)/365)*pi)/180))*h;

    kt=Ig23/Io(tsv-419);

    %m masse d'air optique , m=1/sin(h)
    m(n,tsv-419)=1/h;

    end

    end


    En fait il s'agit d'un programme qu ej avais deja utilisé pour calculer le m , il n'y avait pas encore les variables kt,Ig,Io ni Temporaire dedans. Maintenant mon but est de calculer kt, quelqu un peut il m'aider??
    je crois qu'il y a un problème soit au niveau du positionnement de la premiere boucle for, soit quand je divise Ig par Io . ............

  30. #29
    invitea448e9bc

    Question Re : Aide sous matlab

    Petite modification sur le programme il devient:


    Ig=Feuil1(:,5);

    Temporaire=[];

    for i=0:1440:18000
    Temporaire=[Temporaire;Ig(420+i:720+i)];
    end


    %n le numéro du jour ds une année jour 23 au jour 36
    for n=23:36

    j(n)=n;

    % d équivaut à delta la déclinaison qui dépend du jour de l'année
    d=((23.45*pi)/180)*sin((((360*(284+n))/365)*pi)/180);

    %tsv temps solaire vrai, calculé entre 7h et 12h, symétrique après midi
    for tsv=420:720

    %w angle en minute
    w=((0.25*(tsv-720))*pi)/180;

    %h équivaut à sin(h)
    h=sin(d)*sin(lat)+cos(d)*cos(l at)*cos(w);

    Io(n-22,tsv-419)=1367*(1+0.033*cos((((360* n)/365)*pi)/180))*h;

    kt(n-22,tsv-419)=Temporaire/Io(n-22,tsv-419);

    %m masse d'air optique , m=1/sin(h)
    m(n,tsv-419)=1/h;

    end

    end


    Mais ca ne marche pas !!! le message d'erreur est :

    ??? In an assignment A(matrix,matrix) = B, the number of rows in B
    and the number of elements in the A row index matrix must be the same.

    Error in ==> C:\aure\stage9fourth.m
    On line 33 ==> kt(n-22,tsv-419)=Temporaire/Io(n-22,tsv-419);


    Vous y comprenez quelque chose Vous???? ??? ???

  31. #30
    invite73192618

    Re : Aide sous matlab

    Ouais: Temporaire est une matrice, et là tu tentes de rentrer cette matrice dans une case unique qui s'appelle kt(n-22,tsv-419). Il faut que tu changes en remplaçant Temporaire par Temporaire(index).

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. FFT sous Matlab
    Par invite4a64a65d dans le forum Électronique
    Réponses: 2
    Dernier message: 30/08/2007, 23h19
  2. Exécutable sous Matlab
    Par invitedd1e6316 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 08/06/2007, 09h42
  3. Aide sous Matlab
    Par invite75c0a8c5 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 22/12/2005, 11h28
  4. Regression sous MatLab
    Par invite1264dbec dans le forum Mathématiques du supérieur
    Réponses: 10
    Dernier message: 15/12/2004, 21h03
  5. précision sous matlab
    Par invitef9a325ee dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 15/09/2004, 17h11
Découvrez nos comparatifs produits sur l'informatique et les technologies.