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 :

Itération simple sur une matrice


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2011
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 72
    Par défaut Itération simple sur une matrice
    Bonjour à tous,

    Je tente de faire une itération simple sur une matrice nommée hh.
    J'aimerai pour un point donné de coordonnée h(i,j) de ma matrice lui ajouter la valeur des points voisins (dans mon exemple 2 point à gauche jusqu'à 2 points à droite, idem de haut en bas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for i = 1:size(hh,1)
        for j = 1:size(hh,2)
            for k= -2:2
                for g = -2:2
            hh(i,j)= hh(i,j)+hh(i+k,j+g);
                end
            end
        end 
    end
    J'obtiens l'erreur suivante :
    Subscript indices must either be real positive integers or logicals.

    En gros il aime pas le "i+k" qui donnera une position négative.

    Comment réaliser cette simple itération de ma matrice sur les points voisins ?

    En vous remerciant par avance
    Jonathan

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Bonjour,

    Le moyen bête et méchant, c'est d'utiliser des if...

    Ensuite, je pense que le mieux ça serait de convoluer ta matrice hh avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> A = ones(5);
    >> A(2:end-1,2:end-1) = zeros(3)
    >> A(3,3) = 1;
     
    A =
     
         1     1     1     1     1
         1     0     0     0     1
         1     0     1     0     1
         1     0     0     0     1
         1     1     1     1     1
    Faire un truc de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hh2 = conv2(hh,A,'same');

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2008, 10h42
  2. (debutante ) aide sur une matrice ! svp
    Par sicile dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 07/06/2007, 17h32
  3. Suppression d'une dimension sur une matrice
    Par damleg dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/04/2007, 14h59
  4. Réponses: 4
    Dernier message: 19/02/2006, 18h18
  5. référencement sur une matrice
    Par bni dans le forum C++
    Réponses: 3
    Dernier message: 24/03/2005, 00h06

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