Vector como variable de entrada en un programa que funciona en base a una variable
Publicado por Bastian (8 intervenciones) el 14/07/2016 21:34:13
Hola programadores, tengo la siguiente duda:
Tengo un programa.m que en base a una variable de entrada "p" realiza una predicción algo compleja, mi pregunta es si puedo ingresar varios p, p1,p2,p3,p4... y que muestre r,r1,r2,r3,r4 resultados sin tener que programar de nuevo todas las variables del programa..
Aqui dejo el código , Solo me importa variar el parámetro p. MUCHAS GRACIAS DESDE YA
Tengo un programa.m que en base a una variable de entrada "p" realiza una predicción algo compleja, mi pregunta es si puedo ingresar varios p, p1,p2,p3,p4... y que muestre r,r1,r2,r3,r4 resultados sin tener que programar de nuevo todas las variables del programa..
Aqui dejo el código , Solo me importa variar el parámetro p. MUCHAS GRACIAS DESDE YA
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
* LAS MATRICES T y V las cargo de unos archivos excel y de otro programa.m.
%Se ingresan datos de entrada
t = input('Ingrese instante de predicción en minutos ');
delta = input('Ingrese horizonte de predicción en minutos ');
hist = input ('Ingrese cantidad de días para calibrar el modelo ');
p=input('Ingrese día a evaluar que no se encuentre en el conjunto de días históricos ');
%Validación datos ingresados
if 120-t<delta
fprintf('No existen datos para el horizonte de predicción señalado, inicie otra vez con un instante de predicción y horizonte distintos');
break
end
%Matrices Auxiliares para creación de las matrices Velocidad y Tiempo Viaje
L=zeros(120,10);%Matriz 2D para crear Matriz L de longitudes ponderadas
l=[719,1780,423,365,949,1224,738,1535,896,675];%vector longitudes de tramos i
l=l*(1/sum(l)); %vector longitudes ponderadas tramos i
U=zeros(120,10);%Matriz Velocidad 2D para el día de predicción
Y=zeros(120,10);%Matriz Tiempos viaje 2D para el día de predicción
contador=1;
%Se reemplaza el vector l en cada fila de la matriz H
for i=1:120
L(i,:)=l;
end
%Se crean las matrices de Velocidad y Tiempo de viaje de los días
%históricos
for i=1:hist
V(:,:,i) = V(:,:,i);
T(:,:,i) = T(:,:,i);
end
%Se lee y guarda la matriz de velocidad y Tiempo de viaje del día a
%predecir.
U(:,:,1)= V(:,:,p);
Y(:,:,1)= T(:,:,p);
%Se eleva a -1 la matriz V y se pondera por el tramo Li/L.
V=V.^-1;
%Se calculan constantes necesarias para calcular parámetros del modelo
a=455;%a 70 km/h el tamaño del patron sea 10, a 45 km/hr el tamaño sea 16 y
% a 20 km/hr sea 37 min.
b=0.19704;%igualando valores con m/s y mph.
c=373;%pensado en que la ventana de busqueda para 20 km/hr sea 30 min
d=250;%pensado en 20 patrones para una velocidad de 20km/hr
DI=1; %lapso entre toma de datos, es decir, 1 minuto
Um = sum(U(t,:).*l); %Velocidad media en el corredor día e instante actual
%Se eleva a -1 la matriz U y se pondera por el tramo Li/L.
U=U.^-1;
%Parámetro 1
Tamano_Patron = round((a/Um))*DI;
if Tamano_Patron < 10
Tamano_Patron = 10;
end
%Parámetro 2
Ventana_Busqueda = round((c/Um)*DI);
if Ventana_Busqueda < 15
Ventana_Busqueda = 15;
end
%Parámetro 3
Numero_Patrones = round((d/Um));
%Parámetro 4
W(:,:)= U((t - Tamano_Patron + 1):t,:);
W=W.^b;
%Se obtienen diferencia de velocidades entre día actual y días históricos
contador =1;
L=L((t-Tamano_Patron+1):t,:);
for x=(t-Ventana_Busqueda):(t+Ventana_Busqueda)
t=t-Ventana_Busqueda;
for i=1:hist
format long
R(:,:,i)= (U((t-Tamano_Patron +1) : t,:) - V((t-Tamano_Patron+1):t,:,i)).^2;
DIF(:,:,i)=R(:,:,i) .*L .*W;
MIN(:,:,i,contador)=DIF(:,:,i);
end
contador=contador+1;
t=t+Ventana_Busqueda+1;
end
DIM=size(MIN);
for i=1:DIM(3)
for c=1:DIM(4)
E(c,i)=sum(sum(MIN(:,:,i,c)));
end
end
[ts(1),h(1)]=find(E==min(min(E)));
minimo(1) = min(min(E));
E(ts(1),h(1))=1000;
for i=2:Numero_Patrones
[ts(i),h(i)]=find(E==min(min(E)));
minimo(i) = min(min(E));
E(ts(i),h(i))=1000;
end
for i=1:Numero_Patrones
Prediccion(i)=sum(T(ts(i)+delta,:,h(i)));
end
%Box Plot, filtrado de tiempos de predicción
y = sort(Prediccion);
Q(1) = median(y(find(y<median(y))));
Q(2) = median(y);
Q(3) = median(y(find(y>median(y))));
IQR = Q(3)-Q(1);
LS=Q(3)+1.5*IQR;
LI=Q(1)-1.5*IQR;
contador=1;
for i=1:Numero_Patrones
if Prediccion(i)<= LS && Prediccion(i)>= LI
Prediccion(contador)=Prediccion(i);
contador=contador+1;
end
end
Prediccion = mean(Prediccion);
clear contador
clear i
clear H
clear l
clear L
clear x
clear d
clear DIF
clear DIM
clear E
clear IQR
clear LI
clear LS
clear MIN
clear minimo
clear Q
clear R
clear U
clear Um
clear W
clear y
clear Y
Valora esta pregunta


0