Cálculo de una matriz durante la optimización - página 8

 
forexman77:

Es sobre todo en las clases, que son un bosque oscuro para mí. Pero, han surgido algunas ideas. Haz un array con las fechas y los números por separado. Sólo que, ¿cómo obtener el número de índice donde están las fechas después de la ordenación, es decir, obtener la i que está en la segunda dimensión?

datetime m[215][1];
double d[215][2];

m[0][i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=f2;

Hizo lo siguiente:

datetime m1[215];
datetime m2[215];
double d[215][4];

m1[i]=Dat_DtTm;
m2[i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=0.0;
d[i][2]=f2;
d[i][3]=0.0;

ArraySort(m1,WHOLE_ARRAY,0,MODE_DESCEND);

for (int y=214;y>=0;y--)
   {
  
   for (int a=214;a>=0;a--)
   {
   if (m1[y]==m2[a])
   {
   d[y][1]=d[a][0];
   d[y][3]=d[a][2];
   Print("m1[y]=",m1[y],"d[y][1]=",d[y][1],"d[y][3]=",d[y][3],"y=",y);
   break;
   }
   }
   }
 
forexman77:

Es sobre todo en las clases, que son un bosque oscuro para mí. Pero, han surgido algunas ideas. Haz un array con las fechas y los números por separado. Sólo que, ¿cómo obtener el número de índice donde están las fechas después de la ordenación, es decir, obtener la i que está en la segunda dimensión?

datetime m[215][1];
double d[215][2];

m[0][i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=f2;

Es mucho más simple que eso. Supongamos que tenemos un array de fechas, por ejemplo datetime m_date[4000] y un montón de otros arrays de cualquier tipo: int, string, double... y de cualquier dimensión.

Todas ellas están relacionadas de tal manera que los datos de la fila i-ésima de estas matrices corresponden a la fecha m_date[ i ]. Es necesario ordenar todas estas matrices por fecha.

Sea m_dim el número de filas de estas matrices (número de fechas). No utilizaremos ArrayResize como una operación costosa, sólo m_dim <= 4000, en nuestro ejemplo.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
int m_index[ 4000, 2 ];

// Заполняем массив индексов:
for ( int i = 0; i < m_dim; i ++ )
{
   m_index[ i, 0 ] = m_date[ i ];
   m_index[ i, 1 ] = i;
}
// Сортируем индексный массив
ArraySort( m_index, m_dim, 0, MODE_DECEND);

// Все

Ahora de la primera dimensión tomamos la fecha y de la segunda dimensión tomamos el índice de las matrices correspondientes a esta fecha

 
Mislaid:

Es mucho más simple que eso. Supongamos que tenemos un array de fechas, por ejemplo datetime m_date[4000] y un montón de otros arrays de cualquier tipo: int, string, double... y cualquier dimensión

Todas ellas están relacionadas de tal manera que los datos de la línea i-ésima de estas matrices corresponden a la fecha m_date[ i ]. Es necesario ordenar todas estas matrices por fecha.

Sea m_dim el número de filas de estas matrices (número de fechas). No utilizaremos ArrayResize como una operación costosa, sólo m_dim <= 4000, en nuestro ejemplo.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
int m_index[ 4000, 2 ];

// Заполняем массив индексов:
for ( int i = 0; i < m_dim; i ++ )
{
   m_index[ i, 0 ] = m_date[ i ];
   m_index[ i, 1 ] = i;
}
// Сортируем индексный массив
ArraySort( m_index, m_dim, 0, MODE_DECEND);

// Все

Ahora de la primera dimensión tomamos la fecha y de la segunda dimensión tomamos el índice de las matrices correspondientes a esta fecha

Gracias. Lo utilizará.