2017-10-14 5 views
0

I a essayé de reconstruire la matrice à partir des arguments logiques comme dans l'exemple ci-dessous:matrice de la réforme d'une matrice logique 2D (sans déformation)

a=rand(2,5) 
b=rand(2,5) 
c=a>b 

a(:,c)=b(:,c) 

Cependant j'obtenir l'erreur Index exceeds matrix dimension. Est-ce que cela peut être fait sans remodeler la matrice à l'avance?

+0

Pour moi, il semble que vous vouliez faire 'a (c) = b (c)'. Si vous fournissez des entrées exactes non aléatoires avec le résultat attendu pour ces entrées, votre question serait plus claire qu'elle ne l'est actuellement –

Répondre

0

Si vous souhaitez copier la moindre valeur entre, a et b en pour chaque essai d'entrée:

a=rand(2,5); 
b=rand(2,5); 


c = find(a>b); % c contains the position of value of the greatest val 
a(c)=b(c) % removes greates value copying a smaller value from b 

Si vous voulez copier la plus grande valeur modifier l'instruction création c variable.

Index exceeds matrix dimensions est provoquée par vous en essayant d'utiliser comme dimensions de matrice une liste : et une matrice c. Find crée une liste de valeurs qui satisfont la relation voulue et peut être utilisée pour rappeler des valeurs spécifiques.