Matlab - Obtener valor numérico a partir de una gráfica

   
Vista:

Obtener valor numérico a partir de una gráfica

Publicado por Patricia (22 intervenciones) el 26/04/2013 13:32:52
Hola,

vuelvo a la carga con las muestras y tiempo como en un post anterior. En este caso, tengo el siguiente código y la correspondientela gráfica:

sdb=-(mag2db(s));
figure(3),
plot



En el eje de abcisas apreciamos que se visualiza en muestras. Si quiero sacar un valor del eje de ordenadas basta con teclear:

sdb(8000,:);
Y así obtendríamos el valor cuando la muestra es 8000.

Sin embargo, yo quiero este valor en tiempo, es decir, tengo la siguiente gráfica, obtenida con el siguiente código:

x=0:1/Fs:tiempo;
figure(4),
plot(x(2:end),sdb),xlim([0 tiempo]),xlabel('Tiempo [seg]'),ylabel('dB'),title('Señal "s": un aplauso');



De esta última gráfica, ¿cómo podría obtener a través de matlab, por ejemplo, el valor en 2 segundos (sin mirar la gráfica)?

Sé que 8000 muestras corresponde a 1 sg, 16.000 muestras a 2 sg, ..., 40.000 muestras a 5 sg. ¿Pero si quiero saber el valor en el segundo 1.33, por ejemplo?
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

Obtener valor numérico a partir de una gráfica

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 26/04/2013 18:58:15
Lo que quieres hacer depende mucho de tu partición,. Pero como no pones el código para verlo, entonces lo único que te puedo decir, es que posiblemente uses la función find() para hallar,
además si 1.33 se encuentra en el vector x entonces seria factible.
Ahora que yo recuerdo, si lo puedes hacer también cuando el valor de 1.33 no se encuentra en el vector x, pero usando la teoría de interpolación de polinomios, que es tema de métodos numéricos.
Creo que necesitas una asesoría mas personalizada. Busca por el lugar que vives una persona que conozca método numéricos y matlab.




Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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 Dave

Obtener valor numérico a partir de una gráfica

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 27/04/2013 11:44:25
Hola Patricia;

Debes usar la función find.

Espero que sea de alguna ayuda http://fismatlab.blogspot.com

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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

Obtener valor numérico a partir de una gráfica

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 27/04/2013 13:22:44
Mira este contraejemplo con respecto a la función find().
1
2
3
4
5
>> x=1:0.1:2; find(x==1.33)
 
ans =
 
   Empty matrix: 1-by-0


>> x=1:0.1:2; find(x==1.2)

ans =

3




la función find() no sirve 1.333, pero para 1.2 si sirve , por eso decía, que dependía de su partición, por lo tanto lo mas factible que haga interpelación de polinomios.,


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

Obtener valor numérico a partir de una gráfica

Publicado por Patricia (22 intervenciones) el 29/04/2013 17:34:49
Hola,

he estado probando la función find() y lo de interpolación de polinomios, sin embargo, no veo que me den los resultados que yo esperaba. Es decir, yo lo que quiero es a partir de una gráfica, y un valor cualquiera del eje de abscisas, obtener su correspondiente en el eje de ordenadas.

Por ejemplo (pongo una gráfica más clara que las anteriores):


¿Cuál es el valor de "frecuencia cardiaca" para un tiempo 100 sg? Mirando la gráfica es apróximadamente 80 de frecuencia cardiaca. Pues ese valor "80" es el que quiero que me aparezca directamente en la ventana de comandos de Matlab. Pero ni idea como hacerlo...
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

Obtener valor numérico a partir de una gráfica

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 30/04/2013 01:33:07
Bueno entonces necesitas una asesoría mas personalizada. Pero te vuelvo a recalcar, tu problema se hace con el método de interpolación de polinomios. Bueno te digo eso porque soy profesor de métodos numéricos y dentro de ese curso se encuentra la teoría de interpolación de polinomios y tu pregunta encaja justamente a ese tema. Pide asesoría por tu zona que vives en interpolación de polinomios.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com


http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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 Dave

Obtener valor numérico a partir de una gráfica

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 30/04/2013 05:59:26
Hola Patricia;

En tu caso, deberías usar la función de interpolación 1D, mediante "interp1", existe la posibilidad de que uses cualquiera de las siguientes opciones:

yi = interp1(x,Y,xi,method) interpolates using alternative methods:

'nearest' : Nearest neighbor interpolation

'linear' : Linear interpolation (default)

'spline' : Cubic spline interpolation

'pchip' : Piecewise cubic Hermite interpolation

'cubic' : (Same as 'pchip')

Aquí un ejemplo.

1
2
3
4
x = 0:10;
y = sin(x);
xi = 1.2;
yi = interp1(x,y,xi,'linear');


Resultado:

1
2
yi =
    0.8550


Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Obtener valor numérico a partir de una gráfica

Publicado por Patricia (22 intervenciones) el 30/04/2013 12:53:04
Muchas gracias!!! Ésto si que me ha servido
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

Obtener valor numérico a partir de una gráfica

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 30/04/2013 13:19:00
Justamente por eso te decía que era interpolación de polinomios, lo que quería es que tu mismo indagaras esa función, solo era cuestión de investigar un poco en el tema. Sino vas a aprender muy poco de matlab. Si todo te decimos en el foro.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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