Como vocês algoritmam a detecção de aglomerados de ração MA? - página 7

 
Aleksey Nikolayev:
Por queMathQuantile() não pode ser usado?
Provavelmente. Se você precisa procurar medianas em cada barra, você tem que ver qual é mais rápida: manter uma matriz ordenada ou usar esta função.
 
Aleksey Nikolayev:
Por queMathQuantile() não pode ser usado?

O que é a "matriz de probabilidade" nesta função - como preenchê-la?

 
Gostaria que alguém me dissesse como classificar a matriz com índice de encadernação. Eficiente!)
 
Mikhail Toptunov:
Quem me dera que alguém me dissesse como ordenar uma matriz com indexação. Eficiente!)

Empurre o índice para dentro da matriz. Isto só aumentará a dimensionalidade da matriz.

 

Michael, há muito tempo atrás escrevi uma função para mim mesmo para inserir um novo valor em um array para mantê-lo ordenado.

Ou seja, todos os acréscimos à matriz têm de ser feitos através desta função:

//находим место для значения в отсортированном массиве и записываем его туда
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;
   }  
A busca binária é utilizada, deve ser rápida.
 
Mikhail Toptunov:
Gostaria que alguém me dissesse como ordenar uma matriz com o mapeamento de índices. Eficiente!)

Matriz bidimensional, função ArraySort().

 
Não, encontrar espaço para um elemento e ordenar todo o conjunto é um tempo muito diferente.
 
Aleksey Vyazmikin:

O que é a "matriz de probabilidade" nesta função - como preenchê-la?

Quais são as quantias a serem contadas, por exemplo:

{0,5} - mediana

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

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

 
Mikhail Toptunov:
Quem me dera que alguém me dissesse como ordenar uma matriz com ligação a um índice. Eficiente!)

ExperimenteMathQuickSort()

 
Mikhail Toptunov:

Exemplo:

Conjunto de 30 valores de preço de MA, procure o meio do conjunto encomendado.

Obtemos o valor 15(L0) no meio da matriz, depois obtemos duas matrizes de L0 para baixo e L0 para cima e encontramos o meio dessas matrizes e assim por diante até obter o númerofokus (sete valores, por exemplo)

e no final será um tiquetaque

a resposta é simples - o processamento matemático é enganoso