Je souhaite supprimer efficacement un grand nombre de données au début d'une matrice de dimension 2 * n. La matrice ressemble à ceci:Suppression efficace des éléments de la matrice
x1 x2
x3 x4
...
...
Je veux supprimer toutes les lignes qui ont le premier élément d'une ligne qui est plus petit que certains nombre et arrêter quand une ligne n'est pas plus petit (les éléments sont dans l'ordre numérique)
ce que je fais en ce moment est lent:
while 1
if list{i}(1) <= someNumber
list{i}(1,:) = []
else
break;
end
end
Il doit y avoir une belle façon de le faire rapidement Matlab?
Merci.
Impressionnant Jonas, qui est tout ce que je avais besoin. Je savais qu'il devait y avoir un bon moyen pour que MatLab le fasse mais ce n'est pas une de mes langues :). Acceptera quand le temps minimum est passé. Merci .. ce rasage de beaucoup de temps. – ale
@ vivid-colours: btw, si vous avez besoin de faire ceci pour toutes les cellules de la liste, vous pouvez utiliser 'cellfun' pour un one-liner:' list = cellfun (@ (x) x (x (:, 1) > someNumber, :), list, 'uniformOutput', false) '. Ceci conserve, pour chaque tableau dans 'list', les lignes où la première valeur est plus grande que' someNumber'. – Jonas
Merci pour l'aide .. m'a vraiment aidé. Je viens de poster un problème similaire qui pourrait vous intéresser. J'ai besoin d'apprendre à faire ce genre de choses mieux dans MATLAB. – ale