2016-07-25 2 views
2

I ont une matriceComment accéder à la matrice n-D avec n vecteurs d'index?

A = repmat(1:7,7,1); 

Je vecteurs d'indices

idx1 = [1 3 5]; 
idx2 = [1 3 5]; 

Je souhaite accéder à une au point de coordonnées 2D indiquées par IDX1 (i), idx2 (i).

Quand je

A(idx1,idx2) = 0; 

je reçois pour chaque élément dans IDX 1, tous les éléments idx2 ainsi. Je souhaite que seuls les éléments correspondants reçoivent la valeur zéro.

Encore une fois: je reçois

A = 
0 2 0 4 0 6 7 
1 2 3 4 5 6 7 
0 2 0 4 0 6 7 
1 2 3 4 5 6 7 
0 2 0 4 0 6 7 
1 2 3 4 5 6 7 
1 2 3 4 5 6 7 

mais je veux

A = 
0 2 3 4 5 6 7 
1 2 3 4 5 6 7 
1 2 0 4 5 6 7 
1 2 3 4 5 6 7 
1 2 3 4 0 6 7 
1 2 3 4 5 6 7 
1 2 3 4 5 6 7 

Comment y parvenir?

Merci

+1

Pour plus de précisions, si la première ligne de votre sortie désirée soit '0 2 1 4 1 6 7' ou '0 2 3 4 5 6 7'? – thewaywewalk

+0

désolé. édité maintenant. – Gulzar

+0

@thewaywewalk Merci d'avoir demandé à OP de clarifier. Je suppose que je peux annuler ma réponse maintenant. – edwinksl

Répondre

4

La façon la plus simple est probablement d'utiliser sub2ind pour générer les indices linéaires nécessaires à l'index en A:

linear_ind = sub2ind(size(A),idx1,idx2); 
A(linear_ind) = 0;