Matlab - Obtener funcion a partir de una curva en matlab

 
Vista:

Obtener funcion a partir de una curva en matlab

Publicado por Gerardo Sevilla (4 intervenciones) el 27/08/2008 23:35:06
Buen dia, me encuentro desarrollando el trabajo de grado y se me ha presentado una duda respecto de como obtener la funcion de una grafica cuyos valores son conocidos, me explico, he realizado la captura de datos provenientes de un par de sensores de presion y volumen respectivamente, los cuales luego de ser procesados digitalmente, se hayan almacenados en un archivo en forma de columna, vale decir un vector cuyo tamano es del orden de 1500 valores distintos, matlab me permite graficar ese vector contra el tiempo, y la cuestion es obtener la funcion de esa curva para aplicar luego derivacion, e integracion a esa funcion y obtener los valores deseados. quien tenga a bien ayudarme con este problema de matlab, le sabre agradecer. sin mas que referir, se suscribe. Gerardo Sevilla. Valencia-Venezuela.
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

RE:Obtener funcion a partir de una curva en matlab

Publicado por selobu (17 intervenciones) el 03/09/2008 06:07:50
no necesitas una función ya que con los datos que tienes puede integrarlos en el tiempo por medio de trapecios (matlab tiene una funcion para ello ___TRAPZ). en el caso de hacer una derivada, lo haces con los tres puntos mas cercanos en forma numérica.
puede se empleando la funcion DIFF diff(y)./diff(x)

bueno y es que 1500 puntos no es mucho para MATLAB y claro te pules un poco mas
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

RE:Obtener funcion a partir de una curva en matlab

Publicado por Gerardo Sevilla (4 intervenciones) el 04/09/2008 20:06:12
Gracias por atender esta inquietud, sin embargo sigo sin entender. Te explico un poco mejor lo que tengo, al digitalizar mi señal analogica se generan una serie de valores que guardo en una base de datos, luego esos valores los mando graficar respecto del tiempo (Volumen Vs Tiempo), a partir de esa primer grafica debo obtener una segunda (Flujo Vs Volumen) sabiendo que el flujo es la integral del volumen. Ahora bien, necesito saber como hacer para poder obtener la segunda grafica, es decir, como integro la grafica del volumen-tiempo para obtener flujo-tiempo y despues la de flujo-volumen. Gracias nuevamente.
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

RE:Obtener funcion a partir de una curva en matlab

Publicado por borja (2 intervenciones) el 15/01/2009 00:01:24
Se me ha dado el mismo problema que Gerardo.Tengo una base de datos las cuales ploteo para obtener una grafica en 3 D y me seria muy util poder saber la funcion matematica que aproxima la forma de mi grafica.¿Alguien sabe como puedo obtener una funcion aproximada a partir de unos datos de ingreso?.Si alguien puede darme alguna pista estare muy agradecido.Gracias a todos.
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

RE:Obtener funcion a partir de una curva en matlab

Publicado por selobu_Sebastián (17 intervenciones) el 18/01/2009 00:53:57
Hola mi nombre es Sebastián

no es necesario construir una función pues te arriesgas a que el ajuste no sea muy bueno
lo mejor que puede hacer es realizar una aproximación con n puntos que esten cercanos a tu punto

algo como lo siguiente:

x, datos en el eje de las x

y, datos en el eje de las y

z, coordenadas en el espacio

punto a interpolar P=(x_conocido, y_conocido);

x= (x(:).')';
y= (y(:).')';
% buscando los tres puntos mas cercanos
% la distancia
for i= 1:3
pos= find(min(sqrt(x.^2+y.^2)));
pos = pos(1);
x_cercano(i)= x(pos);
y_cernano(i)= y(pos);
z_cercano(i)= z(pos);
pos=[];
end
% una vez obtenido los valores mas cercanos se puede considerar que para esos
% datos se puede considerar una aproximación lineal <a criterio tuyo>.
m=[1 x_cercano(1) y_cercano(1);1 x_cercano(2) y_cercano(2);1 x_cercano(3) y_cercano(3)];
my =(z_cercano(:).' )';
z_extrapolado = [1 x_conocido y_conocido]*mmy;

espero te quede claro.
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

corrección

Publicado por selobu (17 intervenciones) el 18/01/2009 01:43:37
Corrijo una pequeña equivocación que tuve.

x= (x(:).')';
y= (y(:).')';
% buscando los tres puntos mas cercanos
% la distancia
for i= 1:3
pos= find(min(sqrt(x.^2+y.^2)));
pos = pos(1);
x_cercano(i)= x(pos);
y_cernano(i)= y(pos);
z_cercano(i)= z(pos);
x(pos)=[];
y(pos)=[];
z(pos)=[];
end
% una vez obtenido los valores mas cercanos se puede considerar que para esos
% datos se puede considerar una aproximación lineal <a criterio tuyo>.
m=[1 x_cercano(1) y_cercano(1);1 x_cercano(2) y_cercano(2);1 x_cercano(3) y_cercano(3)];
my =(z_cercano(:).' )';
z_extrapolado = [1 x_conocido y_conocido]*mmy;
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

RE:Obtener funcion a partir de una curva en matlab

Publicado por selobu_Sebastián (17 intervenciones) el 17/01/2009 23:20:03
La mejor manera es con un ejemplo

Suponiendo que tengo datos puntuales de velocidad "V" contra tiempo "t" .

t= (0:1:100).';
v= 1.3-t./100+(t.^2)./100; % has de cuenta que no se conoce la funcion, tan solo los
% valores puntuales
x= zeros(length(t)-1,1);

%Para obtener el despalzamiento en funcion del tiempo debes integrar la función
for i= 1:(length(t)-1)
x(i) = trapz([t(i) t(i+1)],[v(i) v(i+1)]);
end
t_x=t(1:(end-1));

%y para obtener la velocidad se calcula la derivada:

acel = diff(v)./diff(t);
t_acel= t(1:(end-1));
plot(t,v,'bd',t_x,x,'r+',t_acel,t_x,'k.');
legend('velocidad','desplazamiento','aceleración');
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

RE:Obtener funcion a partir de una curva en matlab

Publicado por borja (2 intervenciones) el 19/01/2009 19:34:43
Hola Sebastian:

Respondiendo al ejemplo de la velocidad, que es muy interesante,mi problema seria que a partir de los datos puntuales de la velocidad con respecto al tiempo,es decir:

t= (0:1:100).';
v= 1.3-t./100+(t.^2)./100; % has de cuenta que no se conoce la funcion, tan solo los
% valores puntuales

mi incognita seria averiguar que la funcion matematica que aproxima los datos de entrada de velocidad con respecto al tiempo seria:

v= 1.3-t./100+(t.^2)./100;

Si Matlab ofreciera una funcion que permitiera obtener la relacion de la v con respecto al tiempo o si pudiera construir yo una funcion que me diera una expresion matematica como salida mi problema estaria resuelto.

Si sabes como pudiera realizarlo seria estupendo.De todas formas te agradezco enormemente el tiempo que has dedicado a analizar y ayudarmecon mi problema.

Un saludo.Borja
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 funcion a partir de una curva en matlab

Publicado por Hernan Utalca (3 intervenciones) el 28/09/2021 02:44:40
Intenta usar polyfit(x,y,2) el 2 lo puedes cambiar dependiendo la ecuacion puede ser (1,2,3,4,5,6..)
En debe estar la lista del ejex y en Y la lista del eje Y
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