¿Cómo se algoritmiza la detección de los grupos de alimentación MA? - página 7

 
Aleksey Nikolayev:
¿Por qué no se puede utilizarMathQuantile()?
Probablemente. Si necesitas buscar las medianas en cada barra, tienes que ver qué es más rápido: mantener una matriz ordenada o usar esta función.
 
Aleksey Nikolayev:
¿Por qué no se puede utilizarMathQuantile()?

¿Qué es la "matriz de probabilidad" en esta función - cómo se rellena?

 
Me gustaría que alguien me dijera cómo ordenar el array con la unión de índices. Eficaz!)
 
Mikhail Toptunov:
Me gustaría que alguien me dijera cómo ordenar un array con la vinculación de índices. Eficaz!)

Introduce el índice en el array. Esto sólo aumentará la dimensionalidad de la matriz.

 

Michael, hace mucho tiempo escribí una función para mí para insertar un nuevo valor en un array para mantenerlo ordenado.

Es decir, todas las adiciones a la matriz deben hacerse a través de esta función:

//находим место для значения в отсортированном массиве и записываем его туда
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;
   }  
Se utiliza la búsqueda binaria, debe ser rápida.
 
Mikhail Toptunov:
Me gustaría que alguien me dijera cómo ordenar un array con mapeo de índices. Eficaz!)

Matriz bidimensional, función ArraySort().

 
No, encontrar espacio para un elemento y ordenar toda la matriz es un momento muy diferente.
 
Aleksey Vyazmikin:

¿Qué es la "matriz de probabilidad" en esta función - cómo se rellena?

Cuáles son los cuantiles que hay que contar, por ejemplo:

{0,5} - mediana

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

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

 
Mikhail Toptunov:
Me gustaría que alguien me dijera cómo ordenar un array con vinculación a un índice. Eficaz!)

PruebaMathQuickSort()

 
Mikhail Toptunov:

Ejemplo:

Matriz de 30 valores de precios MA, busca el centro de la matriz ordenada.

Obtenemos el valor 15(L0) en el centro de la matriz, luego obtenemos dos matrices de L0 hacia abajo y L0 hacia arriba y encontramos el centro de estas matrices y así sucesivamente hasta obtener el númerofokus (siete valores por ejemplo)

y al final será un ticky

la respuesta es sencilla: el tratamiento matemático es engañoso