Matlab - distancia entre máximos

 
Vista:

distancia entre máximos

Publicado por Pedro (5 intervenciones) el 15/11/2018 12:52:29
Hola muy buenas, mi principal problema es que tengo un vector, del cual he obtenido los máximos mediante un bucle, sin embargo, necesito obtener la distancia a la que se encuentra cada máximo con respecto al anterior en el vector, la distancia entre esos máximos. Les dejo aquí la parte del código utilizada para obtener esos máximos. Gracias de antemano.
1
2
3
4
5
for k=2:length(vector)-1
if vector(k)>vector(k-1) && vector(k)>vector(k+1)
maximos(end+1)=vector(k);
end
end
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

distancia entre máximos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 15/11/2018 17:06:09
La pregunta no es clara. Podrías poner un ejemplo muy concreto con pocos datos de tu vector(digamos 6 elementos) y resolver en forma analítica que es lo desea exactamente. Sería de gran ayuda, para poder contestar con eficacia tu pregunta anterior.

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con 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
0
Comentar

distancia entre máximos

Publicado por Pedro (5 intervenciones) el 19/11/2018 09:34:50
Claro, en primer lugar tengo un vector fila de 1x240, al cual se le aplica el comando plot, quedando por su forma una función similar al tipo senoidal, una vez realizado, se aplica el comando que escribí anteriormente y se obtiene otro vector que contiene los valores máximos, necesito conocer cuál es la posición de esos valores dentro del vector 1x240 y sobretodo conocer cuál es la distancia entre cada uno de ellos. Muchas gracias.
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

distancia entre máximos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 19/11/2018 11:33:41
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
clear all
close all
x=-10*pi:pi/10:10*pi;
y=abs(x).*sin(x);
k=1;
for i=2:length(y)-2
    if y(i-1)<y(i) && y(i)>y(i+1)
         maximo(k,:)=[i x(i) y(i)];
        k=k+1;
    end
 
%       if y(i-1)>y(i) && y(i)<y(i+1)
%          maximo(k,:)=[i x(i) y(i)];
%         k=k+1;
%     end
 
end
hold on
plot(x,y)
 plot(maximo(:,2), maximo(:,3),'*')
grid on
hold off
 maximo
    maximo1=maximo(:,2:3)
    U=(maximo1(1:end-1,:)- maximo1(2:end,:)).^2
    S=sum(U,2)
    D=sqrt(S)


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
>> distancia_entre_maximos
 
maximo =
 
   1.0e+02 *
 
   0.060000000000000  -0.298451302091030   0.298451302091030
   0.260000000000000  -0.235619449019234   0.235619449019234
   0.460000000000000  -0.172787595947439   0.172787595947439
   0.660000000000000  -0.109955742875643   0.109955742875643
   0.850000000000000  -0.050265482457437   0.047805314635865
   1.070000000000000   0.018849555921539   0.017926992988449
   1.260000000000000   0.078539816339745   0.078539816339745
   1.460000000000000   0.141371669411541   0.141371669411541
   1.660000000000000   0.204203522483337   0.204203522483337
   1.860000000000000   0.267035375555132   0.267035375555132
 
 
maximo1 =
 
 -29.845130209103033  29.845130209103033
 -23.561944901923447  23.561944901923447
 -17.278759594743860  17.278759594743860
 -10.995574287564274  10.995574287564274
  -5.026548245743669   4.780531463586490
   1.884955592153876   1.792699298844934
   7.853981633974485   7.853981633974485
  14.137166941154071  14.137166941154071
  20.420352248333657  20.420352248333657
  26.703537555513243  26.703537555513243
 
 
U =
 
  39.478417604357432  39.478417604357432
  39.478417604357432  39.478417604357432
  39.478417604357432  39.478417604357432
  35.629271887932561  38.626757303877753
  47.768885301272491   8.927141044664216
  35.629271887932603  36.739143546153542
  39.478417604357432  39.478417604357432
  39.478417604357432  39.478417604357432
  39.478417604357432  39.478417604357432
 
 
S =
 
  78.956835208714864
  78.956835208714864
  78.956835208714864
  74.256029191810313
  56.696026345936708
  72.368415434086145
  78.956835208714864
  78.956835208714864
  78.956835208714864

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con 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
0
Comentar
Imágen de perfil de Lindsey
Val: 419
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

distancia entre máximos

Publicado por Lindsey (119 intervenciones) el 15/11/2018 23:17:33
Si con distancia te refieres a las posiciones de los máximos dentro del vector, podrías guardar en una variable diferente las posiciones de cada vector(k) que guardas en maximos, es decir, debajo de la línea 3 puedes colocar "posiciones(end+1) = k", y luego usar la función diff(posiciones) para saber las distancias entre cada par de elementos consecutivos de la variable posiciones.
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