Bonjour,
Une manière basique de faire serait de faire une boucle for "chaque ligne de M", et de mettre une condition dans cette boucle, pour vérifier si la ligne doit être retirée ou non. La condition serait, par exemple de la forme :
flag = M(k,1)>2 && M(k,2)>20 && M(k,3)>15.5 ; % flag ==1 if the k^th line must be deletted
dont l'écriture peut être simplifiée :
flag = prod(M(k,:)>[2,20,15.5]) ; % flag ==1 if the k^th line must be deletted
et, dans le cas où la condition serait valide, il faudrait supprimer la ligne associée avec la commande :
M(k,:)=[] ; % delete the k^th line
Pour que ce code fonctionne, il faut commencer par étudier la dernière ligne puis remonter vers la première. Sans cela, certaines lignes ne seront pas étudiées et le programme plantera : après avoir, par exemple, supprimé la 5e ligne, la ligne à étudier ensuite n'est pas la 6e ligne de M, mais sa 5e ligne à nouveau.
Une autre manière de faire consiste à ne pas directement supprimer les lignes "mauvaises" de M dans la boucle for, mais de remplir un vecteur dont le kième élément indique si la kième ligne de M doit être supprimée.
Partager