Matlab - Interpolar con valores dobles de X1

 
Vista:

Interpolar con valores dobles de X1

Publicado por Seira (2 intervenciones) el 26/11/2013 12:37:11
Hola!

Tengo unos puntos de latitud y longitud a lo largo del contorno de un lago y me gustaría interpolar entre ellos para completar el contorno ya que hay espacios. El problema es que aparecen puntos tanto en el contorno norte como en el sur y no tiene una forma simétrica de manera que pueda discernir qué puntos son del lado norte y cuáles del sur a partir de un valor de latitud. Al interpolar con la función interp1 de matlab mediante el vecino más próximo para evitar que aparezcan puntos entre el límite norte y el sur solo me da para cada valor de X1 un valor de Y1, de manera que interpola algunos valores en el límite norte y otros en el sur, pero esto no me da la línea continúa que busco en cada límite y no sé me ocurre cómo podría conseguirlo.

Espero haberme explicado bien, muchas gracias de antemano!
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Interpolar con valores dobles de X1, La Solución

Publicado por Dave (1094 intervenciones) el 27/11/2013 12:05:28
Hola Seira;

De acuerdo a tu consulta, deseas mejorar el delineado de tu contorno o coordenadas que delimitan tu área de estudio, una opción sería hacer una interpolación spline de los puntos o coordenadas que conoces, de tal maneras que a partir de ellos puedas generar puntos a un determinado espaciamiento y así completar tus datos, a continuación te dejo un segmento de código que podrías utilizar.


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
clear all,close all, clc
% Coordenadas de referencia
xp0 =[4 1 1 4 7 7] ;
yp0 = [4 4 1 1 1 3];
 
% Vector de tk, que varía de 0 a 1
k = 1:6;
tk = 0.2*(k - 1);
 
% Se crea el nuevo vector tk = 12.5 x 6 pto  =  75 ptos
tkn =linspace(tk(1),tk(end),75);    % Crea el vector tk
xp = interp1(tk,xp0,tkn,'spline');  % Interpola xp, con método spline
yp = interp1(tk,yp0,tkn,'spline');  % Interpola yp, con método spline
 
 
% Visualiza los resultados
plot(xp0,yp0,'*r')
hold on
plot(xp0,yp0,'or')
% Coloca los números de referencia de los puntos
for n = 1:length(xp0)
   text(xp0(n),yp0(n),num2str(n),'HorizontalAlignment','left',...
       'VerticalAlignment','top','FontW','bold')
end
 
hold on
plot(xp,yp,'.-b')   % Agrega los nuevos puntos interpolados
hold on
title('Método de interpolación Spline')

A continuación la imagen de referencia



Por otro lado, aprovecho en comentarte que brindo servicios de programación, por si conoces a alguien que requiera de mis servicios, te dejo mi información de contacto.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
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

Interpolar con valores dobles de X1, La Solución

Publicado por Seira (2 intervenciones) el 28/11/2013 09:06:05
Muchas gracias Dave!

Has entendido perfectamente a lo que me refería y tu solución me ha sido muy útil y una cosa más que he aprendido!

Gracias por tu tiempo y tendré en cuenta lo de que brindas servicios de programación por si yo u otra persona los necesitamos.

Saludos!!
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
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Interpolar con valores dobles de X1, La Solución

Publicado por Dave (1094 intervenciones) el 28/11/2013 09:17:16
Seira;

Me da mucho gusto que haya contribuido a la solución de tu problema.

Sobre mis servicios, te comento que tengo relativa experiencia en temas relacionado con las ciencias ambientales, físicas y matemáticas, así que cualquier cosa, me avisan.

Saludos
Dave Correa
[email protected]
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