Matlab - Promedio Datos de un Vector

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

Promedio Datos de un Vector

Publicado por Christian (4 intervenciones) el 24/10/2018 04:49:52
Hola, necesito calcular el promedio de diferentes rangos de los elementos de un vector separados por cero:
ejemplo:
si tengo el vector:
[0 2 3 4 0 4 5 2 1 0 2 2 1 0 6 5 8]
como se calcula los promedios de los valores que están entre los ceros para que como resultado de otro vector así:
[0 3 0 3 0 1.666 0 6.333]
Gracias por la ayuda.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Promedio Datos de un Vector

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 24/10/2018 05:59:45
1
2
3
4
5
6
7
8
9
10
11
clear all
a=[0 2 3 4 0 4 5 2 1 0 2 2 1 0 6 5 8]
d=find(a==0);
k=2;
for i=2:length(d)
    v=a(d(i-1)+1:d(i)-1);
    V(k)=sum(v)/length(v);
    k=k+2;
end
v=a(d(end)+1:end);
V(end+2)=sum(v)/length(v)

1
2
3
4
5
6
7
8
9
10
>> promedio_entre_ceros
 
a =
 
     0     2     3     4     0     4     5     2     1     0     2     2     1     0     6     5     8
 
 
V =
 
         0    3.0000         0    3.0000         0    1.6667         0    6.3333

Saludos
JOSE JEREMÍAS CABALLERO
Asesoria online en Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Promedio Datos de un Vector

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 24/10/2018 06:17:15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear   % limpia el espacio workspace
a=[0 2 3 4 0 4 5 2 1 0 2 2 1 0 6 5 8]
d=find(a==0);  % en el vector 'a' ubico  con la funcion find la posición
                          %de los elementos que son ceros y los guardo en
                          %la variable d en este caso d=[1     5    10  14]
k=2;  % inicializo  el contador  k en 2 porque el vector salida es  [0 3 0 3 0 1.666 0 6.333]
 % siempre las posiciones impares son ceros.
for i=2:length(d)  %  con el bucle for recorro las posiciones donde se encuentran los ceros
    v=a(d(i-1)+1:d(i)-1);  % extraigo del vector 'a' los elementos de un posición  cero mas 1
    % hasta el otro posición cero menos 1  y lo guardo en el vector v
    %d(i-1)+1:d(i)-1, recorre los elementos del vector a desde la posición
    %d(i-1)+1 hasta la posición d(i)-1 de uno en uno .
        V(k)=sum(v)/length(v);   %la función sum lo que hace es sumar todo los elemento del vector v  es decir sum(v)
             %  la función length lo que hace es extraer el tamaño del
             %  vector v  y el cociente de ambas operaciones se guarda en el vector V en la posición k
 
 
    k=k+2;   % se incrementa el contador k en dos unidades.
end   % fin del bucle for
v=a(d(end)+1:end);
V(end+2)=sum(v)/length(v)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Promedio Datos de un Vector

Publicado por Christian (4 intervenciones) el 24/10/2018 08:03:37
Hola Jose, la solución me ha servido, en serio me has sacado de un apuro, una cosa mas como seria el código si deseo obtener el vector sin los ceros?
[3 3 1.666 6.333]
de nuevo gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Promedio Datos de un Vector

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 24/10/2018 15:06:56
1
2
3
4
5
6
7
8
9
10
11
clear all
a=[0 2 3 4 0 4 5 2 1 0 2 2 1 0 6 5 8]
d=find(a==0);
k=1;
for i=2:length(d)
    v=a(d(i-1)+1:d(i)-1);
    V(k)=sum(v)/length(v);
    k=k+1;
end
v=a(d(end)+1:end);
V(end+1)=sum(v)/length(v)

1
2
3
4
5
a =
     0     2     3     4     0     4     5     2     1     0     2     2     1     0     6     5     8
 
V =
    3.0000    3.0000    1.6667    6.3333
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 9 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Promedio Datos de un Vector

Publicado por Christian (4 intervenciones) el 24/10/2018 15:25:18
Excelente, todo ha salido perfecto!. Te agradezco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar