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 :

variable de taille aléatoire


Sujet :

MATLAB

  1. #1
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut variable de taille aléatoire
    Bonjour
    j'ai deux tableau X2 et Y2 qui prend des tailles différents a chaque itération. lorsque j’exécute mon code j'obtiens l'erreur suivante:
    ??? Subscripted assignment dimension mismatch.

    Error in ==> detection at 61
    X2(:,i) = X1;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for i=1:5:imgNum
    [Y1 X1]= detect(avi(i).cdata, 2,  200000, 0.02, 3, 0.02);
     
     
       	X2(:,i) = X1;
     	Y2(:,i) = Y1;
    end
    X1 et y1ne sont pas toujours égale a X2 etY2 comment je peux éviter ce pb?
    help cvp

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    utilise un tableau de cellules.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par magelan Voir le message
    Bonjour,

    utilise un tableau de cellules.
    ok magelan c'est bon pour le tableau de cellule. mais comme ça j'ai eu plein de problème avec le reste de mon code.
    Pour accéder au valeurs de chaque tableau de cellule est ce que la différence unique est l'utilisation de {} au lieu de () ?
    Mes tableau de cellules contient tous des valeur doubles juste la différence d'un tableau a un autre c'est le nombre d’élément de chaque tableau.
    une explication ici peut m'aider bk.
    Par exemple lorsque j'ai changé cette ligne( X est un tableau de cellules) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X1(i,j)=transformation(j,round(X(i,j))).newx
    par cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X1(i,j)=transformation(j,round(X{i,j})).newx ;
    cette erreur m’apparait:
    ??? Cell contents reference from a non-cell array object.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par syki.mail Voir le message
    Pour accéder au valeurs de chaque tableau de cellule est ce que la différence unique est l'utilisation de {} au lieu de () ?
    C'est bien cela : les parenthèses () accèdent aux cellules, et les accolades {} à leur contenu, comme expliqué ici.
    Citation Envoyé par syki.mail Voir le message
    Mes tableau de cellules contient tous des valeur doubles juste la différence d'un tableau a un autre c'est le nombre d’élément de chaque tableau.
    En effet, chaque cellule d'un tableau de cellules peut admettre des tableaux de différentes tailles.

    Citation Envoyé par syki.mail Voir le message
    Par exemple lorsque j'ai changé cette ligne( X est un tableau de cellules) :
    En est-tu sûr ? L'erreur semble dire le contraire...
    Comment l'as tu déclaré et utilisé avant ?

  5. #5
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    les tableau de cellule me complique les choses
    je peux pas utiliser un tableau dans mon cas?
    je dois avoir un tableau c pas grave que le reste reste vide.
    j'explique:
    Mon problème est cette erreur:
    ??? Subscripted assignment dimension mismatch.

    Error in ==> Temp at 59
    X2(:,i) = X1;
    J'ai initialiser X2 et Y2 a 50 puis a chaque iteration de boucle je calcule X1 et Y1, de taille variable d'une iteration a une autre, peut être 0 puis 50 puis 8 puis 1.... Ensuite j'affecte X1 et Y1 au X2 et Y2.
    Voila, Matlab n'accepte pas ceci???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    X2 = zeros(50,imgNum);
    Y2 = zeros(50,imgNum);
     for i=1:ft:imgNum-mod(imgNum,5)
    [Y1 X1] = ST(imgseq(:,:,i),maxPtsNum);
    X2(:,i) = X1;
    Y2(:,i) = Y1;
    aider moi

  6. #6
    Invité
    Invité(e)
    Par défaut
    L'erreur te dit le contraire, c'est comme je t'ai dit :
    Citation Envoyé par Winjerome
    chaque cellule d'un tableau de cellules peut admettre des tableaux de différentes tailles.
    Tu peux revoir le chapitre Concaténation du tutoriel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i=1:ft:imgNum-mod(imgNum,5)
        [Y1 X1] = ST(imgseq(:,:,i),maxPtsNum);
        X2{i} = X1;
        Y2{i} = Y1;
    Ou directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i=1:ft:imgNum-mod(imgNum,5)
        [X2{i} Y2{i}] = ST(imgseq(:,:,i),maxPtsNum);

  7. #7
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    L'erreur te dit le contraire, c'est comme je t'ai dit :

    Tu peux revoir le chapitre Concaténation du tutoriel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i=1:ft:imgNum-mod(imgNum,5)
        [Y1 X1] = ST(imgseq(:,:,i),maxPtsNum);
        X2{i} = X1;
        Y2{i} = Y1;
    Ou directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i=1:ft:imgNum-mod(imgNum,5)
        [X2{i} Y2{i}] = ST(imgseq(:,:,i),maxPtsNum);
    j'ai essayer comme ca et ca fonctionne mais le pb c'est que le reste de code pose bk des probleme.
    je dois avoir un tableau a la sortie.
    Je peux pas utiliser un tableau?


  8. #8
    Invité
    Invité(e)
    Par défaut
    Tu es un peu dur de la feuille.
    Si tu as des vecteurs de dimensions différentes selon les itérations : NON

  9. #9
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Tu es un peu dur de la feuille.
    Si tu as des vecteurs de dimensions différentes selon les itérations : NON
    Puisque j'ai voulu gagné le temps de modification de tout le reste du code. maintenant je dois analyser toutes les lignes, c'est dure quand même.

    Ok puisque pas de solution je dois utiliser les tableaux de cellules.

    Par exemple, pour une matrice je peux récupérer la première ligne de la matrice, maintenant pour un tableau de cellules comment je peux les récupérer?
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C = {[10 2 15];[14 5];[];[7 8 9 10 11]};
    je veux récupérer: 10,14,0,7
    désolé si ça vous gène

  10. #10
    Invité
    Invité(e)
    Par défaut
    Je vois que tu as déjà regardé le topic de la
    Il te faudra créer une fonction retournant le premier indice de chaque vecteur, et 0 si celui-ci est vide ; dont tu feras passer le handle à la fonction cellfun.

  11. #11
    Membre régulier
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    172
    Détails du profil
    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 172
    Points : 73
    Points
    73
    Par défaut

    je peux avoir une idée comment j’implémente cette fonction?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Comme toute autre fonction : avec le mot clé function

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

Discussions similaires

  1. Problème de variable (grande taille)
    Par jack_x4 dans le forum C
    Réponses: 20
    Dernier message: 04/05/2008, 21h14
  2. Perte des variables de session aléatoire
    Par dnkz dans le forum Langage
    Réponses: 1
    Dernier message: 25/04/2008, 16h27
  3. Réponses: 20
    Dernier message: 12/02/2008, 17h25
  4. Taille de variable et taille de code.
    Par proton88 dans le forum C
    Réponses: 8
    Dernier message: 24/04/2007, 11h35
  5. Réponses: 13
    Dernier message: 05/01/2004, 19h00

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