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 :

Réduction de temps de calcul


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 195
    Points : 101
    Points
    101
    Par défaut Réduction de temps de calcul
    Bonjour,
    En effet, j'ai un petit code qui consiste à:

    données d'entrée: un vecteur r et un vecteur T, en effet, pour chaque élément r(i) on associe un élément T(i)
    on a une matrice A,
    L'objectif consiste à chercher la valeur proche de r pour chaque élément de A, A(i,j), et à calculer la valeur correspond de vecteur T.
    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
    clear all; clc;
     
    A=[20 4 5 5 7
       2 5 0 6 8
       1 15 5 4 10];
     
    r=[1 2 3 4 5 6 7 8];
    T=[5 4 8 7 1 2 4 5];
    %%
    i=1;
    while i<size(A,1)+1
            j=1;
            while j<size(A,2)+1
                X=A(i,j);
                 [pasbesoin,idx]=min(abs(r(1,:)-X));            
                 B(i,j)=T(1,idx); 
                 j=j+1;
            end
            i=i+1;
    end
    Avez vous une idée pour éviter les deux boucles While.
    Merciiiii

  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 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    A = [20 4 5 5 7
        2 5 0 6 8
        1 15 5 4 10];
     
    r = [1 2 3 4 5 6 7 8];
    T = [5 4 8 7 1 2 4 5];
     
    B = interp1(r, T, A, 'nearest', 'extrap');
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 195
    Points : 101
    Points
    101
    Par défaut Réduction de temps de calcul
    Merci
    Exactement ça

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 195
    Points : 101
    Points
    101
    Par défaut Réduction de temps de calcul
    Bonjour,

    En effet, je veux modifier un peu mon code, maintenant, j'ai une matrice A en trois dimensions A(:,:,m) et T une matrice de T(m,..).
    De la même façon, l'objectif consiste à chercher la valeur proche de r pour chaque élément de A(:,:,1,m), et à calculer la valeur correspond de vecteur T(1:m,..) .
    J'ai essayé avec le code suivant mais il n'est pas marché.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    A=zeros(3,5,2)
    A(:,:,1) = [20 4 5 5 7
        2 5 0 6 8
        1 15 5 4 10];
    A(:,:,2) = [20 4 3 5 3
        2 5 0 7 8
        1 15 5 4 5];
     
    r = [1 2 3 4 5 6 7 8];
    T = [5 4 8 7 1 2 4 5
           4 5 7 8 4 6 1 4];
     
    B(:,:,1:m)= interp1(r, T(1:m,:), A(:,:,1:m), 'nearest', 'extrap');
    il donne comme erreur:

    Error using griddedInterpolant
    The grid vectors do not define a grid of points that match the given values.

    Error in interp1 (line 158)
    F = griddedInterpolant(Xext,V,method);

    Merci pour votre aide

Discussions similaires

  1. Réduction temps de calcul
    Par qwilldune dans le forum MATLAB
    Réponses: 11
    Dernier message: 22/11/2007, 00h43
  2. Temps de calcul d'un algo
    Par Rémiz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/12/2005, 13h52
  3. temps de calcul sius VC++ !!
    Par Axiome dans le forum MFC
    Réponses: 16
    Dernier message: 13/12/2005, 09h57
  4. Temps de calcul avec deux écrans
    Par Shaga dans le forum OpenGL
    Réponses: 2
    Dernier message: 14/11/2005, 09h24
  5. temps de calculs extremement long !!
    Par salseropom dans le forum C++
    Réponses: 9
    Dernier message: 19/01/2005, 20h12

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