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 :

complément d'info...


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut complément d'info...
    Citation Envoyé par Dut Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X = [sum(M(:,1:4),2) sum(M(:,5:8),2) sum(M(:,9:end),2)]
    Je te conseille de prendre le temps de lire (et de comprendre ) ceci : Introduction à la gestion des matrices
    Bonjour! j'ai bien compris cette méthode, seulement j'ai deux questions:

    1ère question:
    A quoi sert le ",2" à chaque fois que l'on fait une somme?

    2ème question
    Est-il possible de généraliser la fonction afin de pouvoir la coder et réaliser la fonction sur des matrices de grandeur variables? je dois réaliser cette foncion sur des matrices d'image pouvant avoir des tailles variables

    En éspérant que j'ai été claire je vous remercie d'avance.

  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 : 52 884
    Points
    52 884
    Par défaut
    Citation Envoyé par kicao Voir le message
    A quoi sert le ",2" à chaque fois que l'on fait une somme?
    Citation Envoyé par documentation de SUM
    B = sum(A,dim) sums along the dimension of A specified by scalar dim. The dim input is an integer value from 1 to N, where N is the number of dimensions in A. Set dim to 1 to compute the sum of each column, 2 to sum rows, etc.
    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
    >> M = [1 1 1
        2 2 2
        3 3 3]
     
    M =
     
         1     1     1
         2     2     2
         3     3     3
     
    >> sum(M,1)
     
    ans =
     
         6     6     6
     
    >> sum(M,2)
     
    ans =
     
         3
         6
         9
    Citation Envoyé par kicao Voir le message
    Est-il possible de généraliser la fonction afin de pouvoir la coder et réaliser la fonction sur des matrices de grandeur variables?
    Une simple boucle FOR-END fera l'affaire ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    M = repmat(1:12,9,1)
     
    X = [sum(M(:,1:4),2) sum(M(:,5:8),2) sum(M(:,9:end),2)]
     
    for n=1:3
        XX(:,n) = sum(M(:,4*(n-1)+1:4*n),2);
    end
     
    XX
    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 à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup pour ta réponse! je testé ta formule avec succès. Cepandant cela ne fonctionne que pour les matrices dont le nombre de colonne est un multiple du nombre de colonne que l'on veut à la fin... juste?

    je t'explique mon problème: je veux créer un mini programme qui rééchantillonne des images mais pas avec les méthodes conventionnelles (nearest, bilinear, bicubic).

    Le but étant de faire une moyenne des pixels et de décider ensuite si le pixel sera noir ou blanc. il s'agit donc d'un ré-échantillonnage et d'un seuillage en même temps.

    Les dimensions des images à transformer ne seront donc pas forcément un multiple du facteur de ré-échantillonnage, ce qui a l'air de poser problème...

    voici une ébauche de mon code:

    % Récupération du facteur de ré-échantillonnage
    k=str2double(get(handles.facteur,'string'));

    ili=ceil(l/k); % nombre d'itéaration sur les lignes
    ico=ceil(c/k); % nombre d'itéaration sur les colonnes

    for n=1:ico
    X(:,n) = sum(ortho(:,k*(n-1)+1:k*n),2);
    end

    for m=1:ili
    XX(m,: ) = sum(X(k*(m-1)+1:k*m,: ),1);
    end

    ortho_fin= XX/(k*k);
    ortho_fin=(ortho_fin>255/2)*255;
    as-tu une idée? ou est-ce que ce message était complétement incompréhensible...

    merci d'avance!

  4. #4
    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 : 52 884
    Points
    52 884
    Par défaut
    Tu n'a que deux solutions.

    Soit tu tronques l'images avec un multiple entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = mod(size(M,2),4);
    M(:,end-x+1:end) = [];
    Soit tu complètes l'image avec une valeur de remplissage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x = 4-mod(size(M,2)+4,4);
    if x~=4
        M(:,end+1:end+x) = 0;
    end
    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)

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    C'est bien la réponse que je craignais! Mais merci beaucoup!

  6. #6
    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 : 52 884
    Points
    52 884
    Par défaut
    Juste au passage... l'autre possibilité consiste à redimensionner l'image initiale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    x = mod(size(M,2),4);
     
    [r,c] = size(M);
    [ci,ri] = meshgrid(linspace(1,c,c-x),1:r);
    Mi = interp2(M,ci,ri,'cubic');
    => Comment redimensionner une image ?

    Mais j'ai cru comprendre que tu ne voulais pas faire comme ceci
    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)

  7. #7
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Je te remercie je vais voir ce que je peux en faire et si je trouve qqch je t'en fais part!

    A+

Discussions similaires

  1. Complément d'info Silverlight + Apache + Mysql voire Linq
    Par debug dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 17/10/2008, 11h03
  2. Complément d'Infos sur les .ini
    Par Fred2209 dans le forum Visual C++
    Réponses: 4
    Dernier message: 27/12/2006, 09h59
  3. recherche complément d'info sur instanceof
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 23/11/2006, 09h55
  4. Complément d'info sur l'utilisation de settimeout
    Par WhyMee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/08/2006, 13h08
  5. [TrayIcon] Complément d'info...
    Par SteelBox dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/04/2004, 17h25

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