IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Petit problème pour un script


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Par défaut Petit problème pour un script
    Tout d'abord bonjour,

    Je dois faire un programme sous matlab pour du rayonnement thermique.

    Le but du programme est de déterminer des températures.

    Mon problème : à chaque boucle j'obtiens un vecteur (1X6) (une colonne de 6 lignes), je souhaiterais stocker ou concaténer chaque vecteur (créés par la boucle) dans une matrice finale.

    Ainsi je verrai apparaître dans chaque colonne (de cette matrice) les températures à chaque boucle.

    Comment faire ? J'ai des soucis d'indexation !!!

    Je sais que ce problème est plutôt fastoche pour vous qui êtes des cracks !!!

    En tout cas je vous remercie par avance de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Montre nous ce que tu as essayé de programmer...

  3. #3
    Membre émérite
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Par défaut
    comme avez dit Mr dutmatlab on doit voir un bout de ton travail, mais en tous cas ce code te permet de crée ta matrice.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    res=[];
    for p=1:7
        for m=1:6
            temp(m)=rand(1) ;%calcul de la température
        end
        res=[res temp(:)];
    end

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Par défaut
    Salut,

    Je ne suis pas d'accord avec le code de soft001 car je ne sais pas ce qu'il y aura dans la première colonne de "res" et que la boucle sur "p" ne sert à rien à part une mini perte de temps puisque la ligne "res=..." pourrait très bien être mise dans la boucle sur "m"...

    Perso je ferais juste ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for m=1:N
        temp(:,m)=calcul_température;
    end
    C'est à dire que tu vas pouvoir faire N fois le "calcul_température" et tu stockes chaque "calcul_température" dans la colonne "m" de "temp".

    A la fin de ton code, tu auras une matrice/tableau "temp"...

    Maintenant, je pense que ça dépend surtout de ton "calcul_température", c'est pourquoi le grand Dut te demande de nous montrer ce que tu as fait...

    A bientôt

    Christophe

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Par défaut
    Un grand merci pour vos contributions !!!!!!!!!!!

    donc voici mon petit programme, je vous ai détaillé les différentes variables.

    C'est un problème de rayonnement thermique : on considère un cube, un flux (Phi=1320 Watts) arrive avec un angle incident (i) sur deux surfaces du cube appelées (S1) et (S2). Ainsi ce flux se décompose comme :
    -sur (S1) : phi*cos(i)
    -sur(S2) : phi*sin(i)

    Ensuite le programme utilise des formules (méthode de Gebhart : "résolution du pb inverse" (utilisés pour les échanges dans le satellite)).

    Bref beaucoup de blabla....

    Une fois que ces calculs sont effectués, j'obtiens pour chaque boucle (c'est à dire pour une variation d'angle d'incidence) une température (sous forme de vecteur).

    Le truc c'est que je souhaiterais mettre chacun de ces vecteurs (dans le programme c'est T1) dans une matrice=CONCATéNER dans une matrice.

    PROGRAMME :

    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
    %Rayonnement sur un satellite
     
    %Rayonnement sur 2 surfaces.
    % les données de problème
     
    for i=0:(pi/8):pi/2
    eps=[0.8 0.8 0.8 0.8 0.8 0.8]; %epsilon : coeeficient d'émissivité.
    rho=1-eps; %rho coefficient de reflexion
    flux=[1320*cos(i) 1320*sin(i) 0 0 0 0]; %flux imposé sur la surface avec un angle i.
    sigma=5.67e-8;
    % matrice de forme
        for i=1:6
            for j=1:6
                if (i==j)
                F(i,j)=0;
                else F(i,j)=0.2;
                end
            end
        end
     
    % calcul Bij
        for i=1:6
            for j=1:6
                if (i==j) 
                a(i,i)=1-rho(i)*F(i,i);
                c(i,i)=eps(i)*F(i,i);
                else a(i,j)=-rho(j)*F(i,j);
                c(i,j)=eps(j)*F(j,i);
                end
            end
        end
    % inversion de la matrice
    B=inv(a)*c;
    % calcul des temperatures 
    %element du veteur E
        for j=1:6
        E(j)=flux(j)/sigma;
        end
    % elements de la matrice D
        for i=1:6
            for j=1:6
                if (i==j) 
                d(i,i)=1+eps(i)-eps(i)*B(i,i);
                else d(i,j)=-eps(j)*B(i,j);
                end
            end
        end
    % calcul de T1
    T=(inv(d)*E');
    Tcube=T.^(1/4) %Vecteur où la ième ligne est la température de (Si)
    end
    %T_finale=
    Voilà, j'espère que vous me comprennez.

    Si un point n'est pas assez clair, n'hésitez pas !!!!!

  6. #6
    Membre émérite
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Je ne suis pas d'accord avec le code de soft001
    tu a raison j’avais la possibilité de pas utiliser les boucles imbriqués et de mieux optimiser mon code, mais concernant la première colonne de res elle doit contenir les températures déjà calculées.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Par défaut
    Salut,

    Alerte ROUGE, tu utilises plusieurs fois "i" comme variable... Ce n'est pas bien du tout... Déjà que si tu fait "help i", tu verras que matlab ne voit pas les choses comme toi...

    Donc évites les "i" pour les boucles et de plus évites d'utiliser une variable dans une boucle sur cette même variable...

    Je pense que tu as juste à faire ce genre de chose (je garde "i" pour que tu comprennes par rapport à ce que tu as proposé au dessus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    u=1;
    for i=0:(pi/8):pi/2
        blablabla
        Tcube(:,u)=T^1/4;
        u=u+1;
    end
    Tfinal=Tcube
    Pour la forme de la matrice, je te propose cette ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F=0.2*ones(6)-0.2*eye(6);
    Pour l'élément du vecteur E, je te propose cette ligne de commande : Voilà, je pense que ça devrait t'aider...

    A bientôt

    Christophe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petit problème pour mon projet
    Par dad72 dans le forum Langage
    Réponses: 8
    Dernier message: 27/05/2008, 17h52
  2. [RegEx] Petit problème avec un script
    Par mathias59 dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2007, 23h00
  3. [MySQL] Divers petits problèmes avec mon script
    Par fourniey dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/12/2007, 16h20
  4. Petit probléme pour faire un message d'erreur
    Par mygwel dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 16/05/2006, 17h32
  5. (Batch et VBS) Petit probléme avec un script batch VBS
    Par Edoxituz dans le forum Windows
    Réponses: 11
    Dernier message: 27/02/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo