J'ai le problème suivant. Dire que j'ai un vecteur:Recherche de vecteurs Algorithme
v = [1,2,3,4,5,1,2,3,4,...]
Je veux séquentiellement les points d'échantillonnage à partir du vecteur, qui ont une différence de maginute absolue supérieure à un seuil d'un point déjà échantillonné. Donc disons que mon seuil est 2.
Je commence à l'index 1, et échantillonne le premier point 1. Alors ma condition est rencontrée à v [3], et j'échantillon 3 (depuis 3-1> = 2). Puis 3, le nouveau point échantillonné devient la référence, que je vérifie. Le prochain point échantillonné est 5 qui est v [5] (5-3> = 2). Alors le point suivant est 1 qui est v [6] (abs (1-5)> = 2). Malheureusement, mon code dans R prend trop de temps. Fondamentalement, je scanne le tableau à plusieurs reprises et à la recherche de correspondances. Je pense que cette approche est naïve cependant. J'ai le sentiment que je peux accomplir cette tâche en un seul passage à travers le tableau. Je ne sais pas comment. Toute aide appréciée. Je suppose que le problème que je rencontre est que l'emplacement du point d'échantillon suivant peut être n'importe où dans le tableau, et j'ai besoin de balayer le tableau du point courant jusqu'à la fin pour le trouver.
Merci.
Je pense qu'il peut y avoir une approche utilisant '' outer' et qui (..., arr.ind = TRUE) '. – mnel
Probablement, mais d'un point de vue de la complexité, mon algorithme est linéaire alors que 'outer' est O (n^2). J'imagine qu'un algorithme O (n^2) codé efficacement utilisant R (vectorisation, etc.) pourrait être plus rapide que le mien, mais pas que «n» devienne grand. – flodel
Bon point. Je ne suis pas près d'une machine sur laquelle je peux tester. – mnel