Matlab - interpolacion entre numeros

 
Vista:

interpolacion entre numeros

Publicado por emilio (51 intervenciones) el 08/04/2011 13:12:08
Hola amigos:

Tengo una tabla de datos x, f(x) que es un matrix de n filas por dos columnas, y lo que deseo es que entre dos filas consecutivas (i,1) e (i+1,1) agregar "m" nuevos puntos es decir:

x f (x)
0.1 12
0.2 13
0.3 21
.... ....... etc
entre 0.1 y 0.2 agregar "m" nuevos puntos, y lo mismo entre 12 y 13

para eso se me ocurrio crear polinomio interpolador de todos los puntos, existe algun comando en Matlab para evitar crear otro programa que haga esto??


Saludos
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

interpolacion entre numeros

Publicado por Joaquín (9 intervenciones) el 08/04/2011 14:00:06
Hola

No te explicas bien; no se entiende lo que preguntas.

Si lo que quieres es, dado un conjunto de puntos y sus imágenes mediante una función f(x) desconocida, hallar la interpolación en esos puntos (que se suelen llamar soporte) para después ir dando valores a ese polinomio y así aumentar tu tabla de valores ... has de saber, que la interpolación es un mundo, que se ocupa el cálculo numérico.

Tienes muchas posibilidades para interpolar, en tu caso, la más normal sería -dado que no tienes más información- en usar interpolación polinómica.

El enlace para que consideres los distintos tipos de interpolación y sus comandos es: http://www.mathworks.com/help/techdoc/ref/interp1.html

*Tienes que saber, que dada la poca información que tienes, usar un polinomio interpolador, tiene un error muy grande, y entre puntos puede haber unos saltos muy grandes de la función.

un saludo
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

interpolacion entre numeros

Publicado por emilio (51 intervenciones) el 08/04/2011 14:43:00
quizas no me explique bien:
son dos vectores que x e f(x) los cuales poseen más de 3mil puntos y lo que deseo es disminuir el mesh entre los puntos . osea si antes la separacion entre dos puntos consecutivos era, por Ejemplo, 0.1 (en x) me gustaria cambiarla a 0.001 y ver como queda las imagenes en f(x)


Saludos y 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

interpolacion entre numeros

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 08/04/2011 16:06:52
Hola Emilio.
Bueno hice un programa a tu pedido, claro utilizando algunos comandos de matlab, para no generar un codigo que seria muy tedioso de explicarlo. Donde m es numero de puntos q quieres interpolar entre dos nodos consecutivos es decir enre x(i), y x(i+1). Lo he probado con el m=2, pero m puede ser cualquier numero natural. Si hay dudas vuelves a escribir.

%% ========================================================================
% http://www.mathworks.com/help/techdoc/ref/interp1.html
% UN EJEMPLO
clear
m=2 % numero de puntos a interpolar entre nodo y nodo
x=[10,11,12,13,14,15,16,17,18,19,20] % nodos del intervalo Ix
y=[-0.5440,-1.0000,-0.5366,0.4202,0.9906,0.6503,-0.2879,-0.9614,-0.7510,0.1499,0.9129];% la imagen del intervao Iy
xi=linspace(x(1),x(end),length(x)+(length(x)-1)*m),%abcisas de los ptos interpolados
yi=interp1(x,y,xi); % ordenadas de los ptos interpolados
figure(gcf),
plot(x,y,'o',xi,yi,'-') % grafica sin interpolar y grafica del intepolado
% ========================================================================


%EJECUCION
>> interpolacionfuncion
m =
2
x =
10 11 12 13 14 15 16 17 18 19 20

xi =
Columns 1 through 14
10.0000 10.3333 10.6667 11.0000 11.3333 11.6667 12.0000 12.3333 12.6667 13.0000 13.3333 13.6667 14.0000 14.3333

Columns 15 through 28
14.6667 15.0000 15.3333 15.6667 16.0000 16.3333 16.6667 17.0000 17.3333 17.6667 18.0000 18.3333 18.6667 19.0000

Columns 29 through 31
19.3333 19.6667 20.0000

Saludos:
JOSÉ JEREMIAS CABALLERO
ASESOR DE TESIS Y PROYECTOS DONDE SE NECESITA MATLAB
PROFESOR DE MATLAB Y METODOS NUMERICOS
PROGRAMADOR EN MATLAB.
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

interpolacion entre numeros

Publicado por Joaquín (9 intervenciones) el 08/04/2011 15:47:57
¿No sería mejor que usarás otra cosa distinta a la interpolación? por ejemplo las regresiones y ajustas los datos a lo que más se parezca...

Lo digo porque si tienes más de 3000 puntos, te va a quedar de interpolación, un polinimio de grado n-1 puntos ... y el coste computacional puede ser alto. No obstante, si quieres hacerlo, te he deajdo el enlace anteriormente.

Ten en cuenta que la interpolación polinomica con los datos que tienes, no se fija en la "tendencia" de los datos, simplmente cumple con los puntos. Quizá deberías considerar mejor un análisis mediante mínimos cuadrados (regresiones) que se ocupa la estadística.

un saludo
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

interpolacion entre numeros

Publicado por emilio (51 intervenciones) el 08/04/2011 16:12:55
es justamente lo que andaba buscando
muchas gracias, vamos a ver que tal anda el *.m y los costos computacionales te cuento como funciona
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

interpolacion entre numeros

Publicado por emilio (51 intervenciones) el 08/04/2011 15:54:43
mmm, si pero yo no estoy interesado en reducir el mesh en todo el intervalo solo es ciertos valores puntuales, he seguido tus enlaces y me han dado resultado, pero me gustaria tambien saber como anda con los minimos cuadrados tienes algúna información útil o enlace al respecto

Saludos y 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