Comment algorithmez-vous la détection des clusters d'alimentation MA ? - page 7

 
Aleksey Nikolayev:
Pourquoi ne peut-on pas utiliserMathQuantile()?
Probablement. Si vous devez rechercher les médianes sur chaque barre, vous devez voir ce qui est le plus rapide : maintenir un tableau ordonné ou utiliser cette fonction.
 
Aleksey Nikolayev:
Pourquoi ne peut-on pas utiliserMathQuantile()?

Qu'est-ce que le "tableau de probabilité" dans cette fonction - comment le remplir ?

 
J'aimerais que quelqu'un me dise comment trier le tableau avec une liaison par index. Efficace !)
 
Mikhail Toptunov:
J'aimerais que quelqu'un me dise comment trier un tableau avec un lien d'indexation. Efficace !)

Introduire l'index dans le tableau. Cela ne fera qu'augmenter la dimensionnalité du tableau.

 

Michael, il y a longtemps, j'ai écrit une fonction pour moi-même afin d'insérer une nouvelle valeur dans un tableau pour le garder trié.

C'est-à-dire que tous les ajouts au tableau doivent être effectués par cette fonction :

//находим место для значения в отсортированном массиве и записываем его туда
void SetValueInSortArray(double &eArray[], double eValue)
   {
   //находим индекс, куда будем вставлять элемент
   int eFinish=ArrayRange(eArray,0)-1;
   int eIndex;
   if(eFinish==-1)
      {
      eIndex=0;
      }
   else if(NormalizeDouble(eArray[eFinish]-eValue,8)<0)
      {
      eIndex=eFinish+1;
      }
   else
      {
      int eLower=0;
      int eUpper=eFinish;
      eIndex=0;
      while(eLower<=eUpper)
         {
         eIndex=(eLower+eUpper)/2;
         if(NormalizeDouble(eArray[eIndex]-eValue,8)>=0)
            {
            if(eIndex>0 && NormalizeDouble(eArray[eIndex-1]-eValue,8)<0)
               {
               break;
               }
            else
               {
               eUpper=eIndex-1;
               }
            }
         if(NormalizeDouble(eArray[eIndex]-eValue,8)<0)
            {
            eLower=eIndex+1;
            }
         }
      }
   //вставка элемента в начало массива
   if(eIndex==0)
      {
      if(ArrayRange(eArray,0)==0)
         {
         ArrayResize(eArray,1);
         }
      else
         {
         ArrayCopy(eArray,eArray,1,0);
         }
      }
   //вставка элемента в конец массива
   else if(eIndex>=ArrayRange(eArray,0))
      {
      ArrayResize(eArray,eIndex+1);
      }
   //вставка элемента в середину массива
   else
      {
      ArrayCopy(eArray,eArray,eIndex,eIndex-1);
      }
   eArray[eIndex]=eValue;
   }  
La recherche binaire est utilisée, elle doit être rapide.
 
Mikhail Toptunov:
J'aimerais que quelqu'un me dise comment trier un tableau avec un index. Efficace !)

Tableau à deux dimensions, fonction ArraySort().

 
Nan, trouver de la place pour un élément et trier l'ensemble du tableau est un moment très différent.
 
Aleksey Vyazmikin:

Qu'est-ce que le "tableau de probabilité" dans cette fonction - comment le remplir ?

Quels sont les quantiles à compter, par exemple :

{0,5} - médiane

{0,25, 0,5, 0,75} - quartiles

{0,01, 0,02, ..., 0,99} - persentiles

 
Mikhail Toptunov:
J'aimerais que quelqu'un me dise comment trier un tableau en le liant à un index. Efficace !)

EssayezMathQuickSort()

 
Mikhail Toptunov:

Exemple :

Tableau de 30 valeurs de prix MA, recherchez le milieu du tableau ordonné.

Nous obtenons la valeur 15(L0) au milieu du tableau, puis nous obtenons deux tableaux de L0 vers le bas et L0 vers le haut et nous trouvons le milieu de ces tableaux et ainsi de suite jusqu'à ce que nous obtenions le nombre defokus (sept valeurs par exemple).

et ce sera un tic à la fin

la réponse est simple - le traitement mathématique est trompeur