#1281 closed doubt (fixed)
Pasar series diarias a horarias
Reported by: | Lander Ibarra Iriondo | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | normal | Milestone: | Mantainance |
Component: | TimeAlgebra | Version: | head |
Severity: | normal | Keywords: | |
Cc: |
Description (last modified by )
Buenos días, en el piloto en el que me encuentro trabajando estoy en la siguiente situación:
Tengo 24 series en Diario que hacen referencia a una hora de día y
quiero pasar cada una de ellas a la serie horaria con el dato en la hora correspondiente en el fechado horario. Ya lo estoy haciendo pero me parece que mi solución es un poco "engorrosa", paso a contárosla:
1.- Me creo el fechado:
TimeSet Lan_Hor = Hourly*( H(0)+H(1)+H(2)+H(3)+H(4)+H(5)+ H(6)+H(7)+H(8)+H(9)+H(10)+H(11)+ H(12)+H(13)+H(14)+H(15)+H(16)+H(17)+ H(18)+H(19)+H(20)+H(21)+H(22)+H(23));
2.- Creo la serie indicadora, hago el fechado inverso:
Serie Ser_Ind = CalInd(Lan_Hor, Hourly); Serie Hora_00 = InvCh(Hora_00_Diario, Ser_Ind); Serie Hora_01 = InvCh(Hora_01_Diario, Ser_Ind); .... .... Serie Hora_23 = InvCh(Hora_23_Diario, Ser_Ind);
3.- Me encuentro con que todas las series están en fechado horario pero con el valor de la Serie en las 00 horas.
4.- La solución engorrosa que le he dado es aplicar un B con los retardos que obtengo del nombre de la serie y extender todas las series por la izquierda y por la derecha.
¿Se os ocurre una forma menos "engorrosa" de darle solución?
Change History (2)
comment:1 Changed 14 years ago by
Description: | modified (diff) |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:2 Changed 14 years ago by
Cuando las series diarias están exactamente en las mismas fechas existe una forma mucho más rápida de reconstruir la serie horaria que se basa en el paso a matrices
//////////////////////////////////////////////////////////////////////////////// //Reconstruye una serie horaria a partir de un conjunto de series diarias con //los valores correspondientes a cada hora del día. El método sól osirve si //todas las compoenentes diarias están definidas exactamente entre las mismas //fechas Serie ReconstruyeSerieHoraria.FechasFijas(Set diarias.porHoras) //////////////////////////////////////////////////////////////////////////////// { Matrix D = Tra(SerSetMat(diarias.porHoras)); MatSerSet(GetNumeric([[D]]),Horario,First(diarias.porHoras[1]))[1] }; //Serie horaria reconstruida Serie horaria.FechasFijas = ReconstruyeSerieHoraria.FechasFijas(diarias.porHoras); //Comprobamos que la serie reconstruida es igual que la original Real ok.FechasFijas = And ( First(horaria.original)==First(horaria.FechasFijas), Last(horaria.original)==Last(horaria.FechasFijas), MaxS(Abs(horaria.original-horaria.FechasFijas))==0 );
Yo tengo una función para separar series horarias en diarias y otra para reconstruirla horaria a partir de las componentes diarias que están suficientemente testadas. La idea es en abstracto la misma que la que propones solo que programada estructuradamente con ciclos de control en vez de manualmente:
A lo que no le veo sentido alguno es al fechado
Lan_Hor
puesto que es exactamete lo mismo queHourly
sólo que más lento.