La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Matlab/1254680-Interpolar-en-una-tabla-de-datos.html

Interpolar en una tabla de datos

Interpolar en una tabla de datos

Publicado por Juan (43 intervenciones) el 02/03/2011 20:06:24
Hola a todos, tengo una tabla de datos en excel. Quiero preguntaros si lo siguiente se puede hacer: la tabla tiene dos columnas y varias filas. Por ejemplo:

X Y
1 0.1
2 0.4
3 0.23
4 0.2

¿Puedo decir en matlab que me de el valor de Y para un X= 2.34? En definitiva, lo que busco es interpolar en esos datos.

Espero haberme explicado bien, le doy las gracias a cualquier persona que me pueda indicar cómo hacerlo y si se puede.
Un abrazo a todos.

RE:Interpolar en una tabla de datos

Publicado por Jorge (226 intervenciones) el 03/03/2011 00:07:16
Si tienes

x = 1 : 4
y = [.1 .4 .23 .2]

puedes utilizar la función interp1, dando como parámetros tus vectores de la tabla y el valor objetivo. Es una interpolación lineal en este caso.

yi = interp1(x, y, 2.34)

La función interp1 tiene más posibilidades. Teclea 'help interp1' en tu ventana de comandos para que veas la descripción completa.
Imágen de perfil de Dave

Interpolar en una tabla de datos

Publicado por Dave (1094 intervenciones) el 08/03/2011 02:33:40
Hola Juan;

Además puedes interpolar considerando algunos metodos de interpolación, Aqui las 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')

'v5cubic' Cubic interpolation used in M

Saludos
Dave

Interpolar en una tabla de datos

Publicado por Marco A. Villarroel (5 intervenciones) el 01/05/2018 19:30:19
Saludos a todos. Necesito sus ayudas para realizar la siguiente interpolacion

tengo este codigo

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
clc,clear all
x=[0;75;75;150;150;225;225;300;300;375;375;450;450;525;525;600];
y=[0;30;0;60;10;90;15;105;20;90;15;60;10;30;0;0];
figure(9);
plot(x,y,'.b', 'MarkerSize', 28)
for k=1:size(cord,1)
a=int2str(k);
text (cord(k,1)+3, cord(k,2)+3, a)
end
 
dx=0:0.1:600;
p=zeros(n,n);
 
barr=[1 3;2 3;2 5;5 4;4 7;6 7;6 9;8 9;9 10;10 11;11 12;12 13;13 14;14 15;15 16];
for k=1:size(barr,1)
X(2*k-1,1)=barr(k,1);
X(2*k,1)=barr(k,2);
end
 
for k=1:size(X,1)
P(k,1)=cord(X(k,1),1);
P(k,2)=cord(X(k,1),2);
end
plot(P(:,1),P(:,2),'-r','LineWidth', 1.5)
hold on


Lo que necesito es interpolar para que la grafica muestre un grafico casi de lineas rectas y no puntos separados.
No lo he logrado y no se como realizarlo
Imágen de perfil de JOSE JEREMIAS CABALLERO

Interpolar en una tabla de datos

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 09/05/2018 01:46:09
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
clc,clear
x=[0;75;75;150;150;225;225;300;300;375;375;450;450;525;525]';
y=[0;30;0;60;10;90;15;105;20;90;15;60;10;30;0]';
k1=1; k2=1;
for i=1:length(x)-1
    if y(i)<y(i+1)
     x1(k1)=x(i);
     y1(k1)=y(i);
     k1=k1+1;
    else
     x2(k2)=x(i);
     y2(k2)=y(i);
     k2=k2+1;
    end
end
hold on
x1=[x1 x(end)];
y1=[y1 y(end)];
plot(x,y,'.b', 'MarkerSize', 28)
p1 = polyfit(x1,y1,7);
x3=linspace(x1(1),x1(end),200);
y3 = polyval(p1,x3);
plot(x3,y3,'*g')
 
x2=[x(1) x2  ];
y2=[y(1) y2 ];
plot(x2,y2,'.b', 'MarkerSize', 28)
p2 = polyfit(x2,y2,6);
x4=linspace(x2(1),x2(end),200);
y4 = polyval(p2,x4);
plot(x4,y4,'*g')
 
hold off
grid on


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero