Wie funktioniert der Algorithmus zur Erkennung von MA-Futtermittelclustern? - Seite 7

 
Aleksey Nikolayev:
Warum kannMathQuantile() nicht verwendet werden?
Wahrscheinlich. Wenn Sie für jeden Balken nach Medianen suchen müssen, müssen Sie abwägen, was schneller ist: ein geordnetes Array zu führen oder diese Funktion zu verwenden.
 
Aleksey Nikolayev:
Warum kannMathQuantile() nicht verwendet werden?

Was ist das "Wahrscheinlichkeitsfeld" in dieser Funktion - wie füllt man es aus?

 
Ich wünschte, jemand würde mir sagen, wie man das Array mit Indexbindung sortiert. Effizient!)
 
Mikhail Toptunov:
Ich wünschte, jemand würde mir sagen, wie man ein Array mit Indexverknüpfung sortiert. Effizient!)

Schieben Sie den Index in das Array. Dadurch erhöht sich nur die Dimensionalität des Arrays.

 

Michael, vor langer Zeit habe ich für mich selbst eine Funktion geschrieben, um einen neuen Wert in ein Array einzufügen, damit es sortiert bleibt.

Das heißt, dass alle Hinzufügungen zum Array über diese Funktion erfolgen müssen:

//находим место для значения в отсортированном массиве и записываем его туда
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;
   }  
Die binäre Suche wird verwendet, sie sollte schnell sein.
 
Mikhail Toptunov:
Ich wünschte, jemand würde mir sagen, wie man ein Array mit Indexzuordnung sortiert. Effizient!)

Zweidimensionales Array, Funktion ArraySort().

 
Nein, die Suche nach einem Platz für ein Element und das Sortieren des gesamten Feldes ist eine ganz andere Zeit.
 
Aleksey Vyazmikin:

Was ist das "Wahrscheinlichkeitsfeld" in dieser Funktion - wie füllt man es aus?

Was sind zum Beispiel die zu zählenden Quantile?

{0.5} - Median

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

{0.01, 0.02, ..., 0.99} - persentile

 
Mikhail Toptunov:
Ich wünschte, jemand würde mir sagen, wie man ein Array mit Bindung an einen Index sortiert. Effizient!)

Versuchen SieMathQuickSort()

 
Mikhail Toptunov:

Beispiel:

Array mit 30 MA-Kurswerten, Suche nach der Mitte des geordneten Arrays.

Wir erhalten den Wert 15(L0) in der Mitte des Arrays, dann erhalten wir zwei Arrays von L0 abwärts und L0 aufwärts und finden die Mitte dieser Arrays und so weiter, bis wir dieFokusnummer erhalten(zum Beispiel sieben Werte)

und es wird am Ende ein Ticky sein

die Antwort ist einfach - mathematische Verarbeitung ist irreführend