2012-09-07 2 views
3

Je ne sais pas si cela est possible sans itération de la matrice, mais voilà la question. Pour une matrice carrée donnée, dites «M», et une valeur particulière dit «clé».Chaque opération de cellule basée sur la condition dans matlab

Je veux calculer une nouvelle matrice (dire « NM ») de telle sorte que,

if M(i,j) < key; compute NM(i,j) using formula 1, 
if M(i,j) = key; compute NM(i,j) using formula 2, and 
if M(i,j) > key; compute NM(i,j) using formula 3 

La sortie de l'opération doit être nouvelle matrice carrée de même dimension que celle de M. Espoir le problème est clair .

Merci à l'avance

Répondre

2

Il semble que vous voulez que ce pour une solution pure de la matrice, donc je vais y répondre de cette façon. (Vous avez utilisé le mot cell dans votre titre qui a une signification spécifique dans Matlab)

D'abord vous devez définir la matrice NM pour avoir la même taille que M, assez facile en utilisant simplement un pour définir l'autre. Utilisez ensuite l'indexation logique pour appliquer uniquement les valeurs aux éléments de matrice souhaités.

NM=M; 
NM(M < key) = formula1(NM(M < key)); 
NM(M == key) = formula2(NM(M == key)); 
NM(M >= key) = formula3(NM(M > key)); 

Voici un exemple illustratif qui applique une formule unique NM=M+1 pour les éléments de matrice qui sont inférieures à 0,5.

>> M=rand(3) 

M = 

0.0623 0.7783 0.0097 
0.7011 0.2843 0.7337 
0.1984 0.2123 0.9778 

>> NM=M; 
>> NM(M<.5)=M(M<.5)+1 

NM = 

1.0623 0.7783 1.0097 
0.7011 1.2843 0.7337 
1.1984 1.2123 0.9778 
1

Je pense que vous voulez juste faire quelque chose comme

NM(M < key) = formula1; 
NM(M == key) = formula2; 
NM(M > key) = formula3; 

En fonction de votre formule, vous devrez peut-être passer les valeurs de M à la fonction, à savoir

NM(M < key) = formula1(M(M < key)); 
Questions connexes