Matlab - Ir acumulando nuevos valores en un CELL-ARRAY

 
Vista:
sin imagen de perfil
Val: 100
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

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
1
vtec_final{1,i}
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

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder