Ir acumulando nuevos valores en un CELL-ARRAY
Publicado por Dinibel (53 intervenciones) el 27/06/2019 18:19:19
Hola! Recurro nuevamente a ver si me dan una mano
El problema es al final de mi programa, cuando quiero ir guardando cada valor nuevo que calcula, tengo 3 bucles for que van trabajando armoniosamente (o no tanto).
Dentro del CELL ARRAY que es el RESULTADO FINAL, la primer fila dentro de cada celda lo hace perfectamente.
El problema es cuando entra a escribir la segunda fila dentro de cada CELDA, reescribe TODO y no entiendo que debo cambiar.
Dejo copiado el código entero y los datos
Se demora un rato en correr, el problema, de nuevo, es el cell array "vtec_final{1,i}" todas las cell son repetidas, las reescribe, exceptuando la ultima fila de cada celda
Muchas gracias si alguien puede darme una pista
El problema es al final de mi programa, cuando quiero ir guardando cada valor nuevo que calcula, tengo 3 bucles for que van trabajando armoniosamente (o no tanto).
Dentro del CELL ARRAY
1
vtec_final{1,i}
El problema es cuando entra a escribir la segunda fila dentro de cada CELDA, reescribe TODO y no entiendo que debo cambiar.
Dejo copiado el código entero y los datos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
clear all
%cargo todas los puntos grilla
puntos_grilla = 4;
for i=1:puntos_grilla
est{1,i}=load(['est_',num2str(i),'.est']);
vtec_input = est{i}; %almaceno en cell-array
ind_24 = find(vtec_input(:,5)==24);
vtec_input(ind_24,:)= [];
result{1,i} = vtec_input; %cada columna es un cell array con la matriz de cada estacion GNSS
%result{} es una cell-array donde cada celda corresponde a un punto
%grilla - hacer inferencia dentro de cada celda
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%CONDICIONES INICIALES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dia_inicial_pronostico = 251;
cantidad_de_iteraciones = 10;
dias_previos = 10;
intervalo = 60;
np = 1;
valores_por_dia = 24*60/intervalo;
npasoh = 60/intervalo;
%
step = 1/npasoh;
npaso = intervalo/15;
%
ivtec = valores_por_dia*(dia_inicial_pronostico-1); % punto anterior al comienzo de la prediccion
diaini = dia_inicial_pronostico-dias_previos; % dia inicial para hacer el entrenamiento/validacion/test de la NN
ndiaini = valores_por_dia*(diaini-1); % punto/ubicacion justo previo la implementacion NN
delta = ndiaini+dias_previos*24-1;
predecir = np*valores_por_dia;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% TRANSFORMO EL VTEC - LOG
%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:puntos_grilla
vtec_input = result{i};
vtec_intervalo = vtec_input(1:npaso:end,6);
time_intervalo = vtec_input(1:npaso:end,[2 5]);
vtec_log = log(vtec_intervalo(2:end,1)./vtec_intervalo(1:end-1,1));
vtec_logaritmico{1,i} = vtec_log;
%vtec_logaritmico es un cell-array donde cada celda corresponde a un
%punto grilla
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% BUCLE PRONOSTICO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j = 1: predecir
for i=1:puntos_grilla
for itera=1:cantidad_de_iteraciones
variable = vtec_logaritmico{i};
T = tonndata(variable(ndiaini+j:delta-1+j,1),false,false);
trainFcn = 'trainlm';
feedbackDelays = 1:3;
hiddenLayerSize = 10;
net = narnet(feedbackDelays,hiddenLayerSize,'open',trainFcn);
[x,xi,ai,t] = preparets(net,{},{},T);
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
% Train the Network
[net,tr] = train(net,x,t,xi,ai);
% Test the Network
y = net(x,xi,ai);
e = gsubtract(t,y);
performance = perform(net,t,y)
nets = removedelay(net);
nets.name = [net.name ' - Predict One Step Ahead'];
%view(nets)
[xs,xis,ais,ts] = preparets(nets,{},{},T);
ys = nets(xs,xis,ais);
stepAheadPerformance = perform(nets,ts,ys)
yys=cell2mat(ys);
tt=cell2mat(ts);
vtec_pronosticado(itera,j)= exp(yys(end))*vtec_intervalo(ivtec+j-1,1);
vtec_pronosticado2 = vtec_pronosticado';
vtec_final{1,i} = vtec_pronosticado2; %Cell-Array con n cantidad de columnas como n iteraciones tengamos
end
end
end
Se demora un rato en correr, el problema, de nuevo, es el cell array "vtec_final{1,i}" todas las cell son repetidas, las reescribe, exceptuando la ultima fila de cada celda
Muchas gracias si alguien puede darme una pista
- zip-datos.rar(714,0 KB)
Valora esta pregunta


0