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 :

Mettre des tableaux dans un tableau


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2012
    Messages : 45
    Points : 28
    Points
    28
    Par défaut Mettre des tableaux dans un tableau
    Bonjour,

    voici mon 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
    clear all;
    clc,close all;
     
    c = 3E8;
    h = 6.63E-34;
    kb = 1.38E-23;
    a = 10;
    b = 3;
    w = 0.22;
    tmid = 3700;
    t0 = 8350;
    twall = 1230;
     
    format long e;
     
    R = [0:5:1000];
     
    t = tmid - (tmid - twall).*(R./1000).^a + (t0 - tmid).*exp(-(((R./1000).^b)/(w^b)));
     
    for la=5400:1:5600
        B = ((2*h*c^2)/((la/10)^5))*(1./(exp((h*c)./((la/10)*kb.*t))-1));
        mlaB(:,:)= [la B];
        LA((la-5399))=[mlaB(:,2)];
        for k=1:201
            mLA{1,k} = [LA];
        end
    end
    Ma variable B me génère en sortie 201 tableaux avec 201 variables dans chaque tableau.
    Ensuite je créé 201 tableaux avec mlaB(:,: ) avec dans chaque colonne les valeurs de B. (car si je mets directement ça ne fonctionne pas...
    Et c'est que je voudrais que ma variable mLA créé en sortie un tableau de 1x201 avec dans chaque cellule un tableau 201x1 correspondant aux valeurs de B. C'est actuellement ce que fait mon programme, le problème c'est que toutes les colonnes ont la même valeur car ma seconde boucle ne prend en compte que la=5600, alors que moi je voudrais dans la première colonne un tableau avec les 201 valeurs correspondant à la=5400, dans la seconde colonne un tableau avec les 201 valeurs correspondant à la=5401, etc...

    Si quelqu'un pouvait m'aider.
    Et désolé si mon explication n'est pas très claire...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    La taille de ta variable B ne variant pas, tu n'es pas obligée d'utiliser un tableau de cellules : un simple tableau 2D de taille 201x201 suffit ici.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mLA = zeros(201,201); % <a href="http://matlab.developpez.com/faq/?page=programmation#programmation_preallocation_comment" target="_blank">Pre allocation
    </a>for la=5400:1:5600
        mLA(la-5399,:) = ((2*h*c^2)/((la/10)^5))*(1./(exp((h*c)./((la/10)*kb.*t))-1));
    end
    Tes B sont ainsi contenus dans les lignes de mLA.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2012
    Messages : 45
    Points : 28
    Points
    28
    Par défaut
    A oui tout simplement...
    Merci

    Et j'ai une autre question.
    Je voudrais maintenant multiplier une matrice 2x2 par une matrice 2x1.
    Et je veux en sortie en tableau 2x2, donc en fait ma matrice 2x1 serait une sorte de scalaire.
    En gros je voudrais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     A=[1 2
        3 4]   
     C=[5
        6]
     
     D=A*C= [5 10
             18 24]
    Est-ce que c'est possible?

    Merci

  4. #4
    Membre habitué
    Homme Profil pro
    étudiant ingénieur traitement images médicales
    Inscrit en
    Juin 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant ingénieur traitement images médicales
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 74
    Points : 131
    Points
    131
    Par défaut
    Absolument pas optimisé, mais sans chercher, et juste avant la pause déjeuner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    D(1,:)=A(1,:)*C(1)
    D(2,:)=A(2,:)*C(2)
    Du coup avec une simple boucle sur ton nombre de ligne tu obtiens ce que tu veux.

    Par contre, je ne sais pas du tout si une fonction MATLAB fait cela.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Au moins deux façons de faire :

    À lire

Discussions similaires

  1. Mettre des données dans un tableau
    Par eve.legrand dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/01/2011, 19h30
  2. Réponses: 9
    Dernier message: 16/11/2010, 17h28
  3. [PHP 5.0] mettre des données dans un tableau
    Par schats dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2009, 18h13
  4. [PHP 5.2] Mettre des données dans un tableau
    Par beegees dans le forum Langage
    Réponses: 1
    Dernier message: 06/02/2009, 13h09
  5. Réponses: 3
    Dernier message: 05/12/2005, 02h30

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