Está en la página 1de 7

23/4/2018 Ajuste de datos con MATLAB

Inicio MATLAB Análisis de los datos Viento, olas y mareas

Ajuste de datos con MATLAB


MATLAB dispone de la función polyfit para ajustar datos a un polinomio de grado n.
También tiene la posibilidad de ajustar los datos de forma interactiva en la ventana gráfica
(Figure Window) seleccionado en el menú Tools/Basic Fitting.

Ajuste de datos con el operador, división por la izquierda


\.
Conocidos los n pares de datos (xi,yi) i=1,2...n resolvemos el sistema de n ecuaciones para
determinar las incógnitas, los coeficientes a1,a2, a3 del polinomio que mejor ajusta

2
y = a1 x + a2 x + a3

2
y1 x x1 1
⎛ ⎞ ⎛ 1 ⎞
a
y
2 ⎛ 1 ⎞
⎜ 2 ⎟ ⎜ x x2 1 ⎟
2
⎜ ⎟ = ⎜ ⎟⎜a ⎟
2
⎜ ⎟ ⎜ ⎟
⎜ ... ⎟ ⎜ ... ... ... ⎟ ⎝ ⎠
a3
⎝ ⎠ ⎝ ⎠
yn 2
xn xn 1

En el último ejemplo de la página anterior, tenemos n=9 pares de datos (xi,yi) que ajustamos
a un polinomio de segundo grado. Resolvemos un sistema de nueve ecuaciones con tres
incógnitas, con el operador \ (división por la izquierda)

x=[0,1,2,3,4,5,6,7,7.44]';
y=[0,4.03,8.12,14.23,20.33,27.1,34.53,42.63,46.43]';
M=[x.^2,x,ones(size(x))];
p=M\y %coeficientes del polinomio

hold on
plot(x,y,'ro','markersize',4,'markerfacecolor','r')
z=@(x) polyval(p,x);
fplot(z,[x(1),x(end)])
xlabel('x')
ylabel('y')
grid on
title('Polinomio aproximador')
hold off

http://www.sc.ehu.es/sbweb/fisica3/datos/regresion/regresion_1.html 1/7
23/4/2018 Ajuste de datos con MATLAB

En la ventana de comandos vemos los valores de los coeficientes a1,a2, a3 como elementos del
vector p.

p =
0.3446
3.7004
-0.1188

Ajuste de datos con polyfit


Para el ajuste de datos a un polinomio se utiliza la función MATLAB polifit, cuya sintaxis es la
siguiente:

p=polyfit(x,y,n)

x, y son los vectores de las abscisas y de las ordenadas de los datos, respectivamente
n, es el grado del polinomio al que se quieren ajustar los datos
p, es el vector de los coeficientes de dicho polinomio.

Para n=1 tenemos la regresión lineal. Si m es el número de datos, el polinomio pasa a través
de todos los puntos si n=m-1. El grado n del polinomio no puede ser mayor que m-1.

En el ejemplo d ela página precedente, se cambia la llamada a la función pol_regresion por la


función MATLAB polyfit

x=[0,1,2,3,4,5,6,7,7.44];
y=[0,4.03,8.12,14.23,20.33,27.1,34.53,42.63,46.43];
p=polyfit(x,y,2)

%gráficos
hold on
plot(x,y,'ro','markersize',4,'markerfacecolor','r')
z=@(x) polyval(p,x);
fplot(z,[x(1),x(end)])
xlabel('x')
ylabel('y')
grid on

http://www.sc.ehu.es/sbweb/fisica3/datos/regresion/regresion_1.html 2/7
23/4/2018 Ajuste de datos con MATLAB
title('Polinomio aproximador')
hold off

En la ventana de comandos corremos el script y nos aparece el vector p que contiene los
coeficientes a1,a2, a3 del polinomio

p =
0.3446 3.7004 -0.1188

También se puede utilizar polyfit para realizar ajustes a una función potencial, exponencial,
logarítmica, etc, tal como se muestra en el siguiente cuadro

Función Llamada a polyfit


y=c·xa p=polyfit(log(x), log(y),1)
y=c·eax p=polyfit(x, log(y),1)
y=a·ln(x)+c p=polyfit(log(x),y,1)
1
y = p=polyfit(x,1./y,1)
ax + c

El primer elemento del vector p devuelto por polyfit, p(1) guarda el parámetro a y el segundo
elemento, p(2) guarda el parámetro c.

En el ejemplo de la página anterior, ajuste a una función potencial

x=[10 20 30 40 50 60 70 80];
y=[1.06 1.33 1.52 1.68 1.81 1.91 2.01 2.11];
p=polyfit(log10(x),log10(y),1);
fprintf('exponente a= %2.3f\n',p(1));
fprintf('coeficiente c = %3.3f\n',(10^p(2)));

hold on
plot(x,y,'ro','markersize',4,'markerfacecolor','r')
z=@(x) (10^p(2))*x.^p(1);
fplot(z,[x(1),x(end)])
xlabel('x')
ylabel('y')
grid on
title('Regresión potencial')
hold off

Corremos el script en la ventana de comandos

exponente a= 0.331
coeficiente c = 0.495

En el ejemplo de la página anterior, ajuste a una función exponencial.

x=[12 41 93 147 204 264 373 509 773];


y=[930 815 632 487 370 265 147 76 17];
p=polyfit(x,log(y),1);
fprintf('exponente a= %2.3f\n',p(1));
fprintf('coeficiente c = %3.3f\n',exp(p(2)));

hold on
plot(x,y,'ro','markersize',4,'markerfacecolor','r')
z=@(x) exp(p(2))*exp(x*p(1));
fplot(z,[x(1),x(end)])
xlabel('x')
ylabel('y')
grid on
title('Regresión exponencial')
hold off

Corremos el script en la ventana de comandos

http://www.sc.ehu.es/sbweb/fisica3/datos/regresion/regresion_1.html 3/7
23/4/2018 Ajuste de datos con MATLAB

exponente a= -0.005
coeficiente c = 1036.896

Ajuste de forma interactiva


Determinar la recta de regresión para la siguiente tabla de datos, tomadas de una experiencia

x 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4


y 0.25 0.42 0.58 0.72 0.85 0.98 1.10 1.12

Vamos a realizar el ajuste de datos de forma interactiva en la ventana Figure Window. En la


ventana de comandos escribimos

>> x=[0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4];


>> y=[0.25 0.42 0.58 0.72 0.85 0.98 1.1 1.2];
>> plot(x,y,'ro','markersize',4,'markerfacecolor','r')

Aparece la representación gráfica de los puntos

Seleccionamos en el menú Tools/Basic Fitting, y activamos la casilla linear (polinomio de


grado 1) en el primer panel titulado Plot fits. Observamos en la ventana Figure 1 la recta que
mejor ajusta a los datos experimentales. La ecuación de dicha recta se muestra en la ventana
gráfica, activando la casilla Show equations

Añadimos una rejilla, etiquetas a los ejes y un título al gráfico en la ventana de comandos

>> grid on
>> xlabel('x')
>> ylabel('y')
>> title('Experiencia')

http://www.sc.ehu.es/sbweb/fisica3/datos/regresion/regresion_1.html 4/7
23/4/2018 Ajuste de datos con MATLAB

Ampliamos el cuadro de diálogo pulsando en el botón con la flecha inferior derecha -->.
Seleccionamos en el segundo panel titulado Numerical results Fit/linear y nos aparece

y = p1*x + p2

Coefficients:
p1 = 2.7095
p2 = 0.15286

Pulsamos el botón con la flecha --> para ampliar otra vez el cuadro de diálogo, introducimos
un valor o una expresión para ser evaluada pulsando el botón Evaluate en el tercer panel
titulado Find y=f(x).

http://www.sc.ehu.es/sbweb/fisica3/datos/regresion/regresion_1.html 5/7
23/4/2018 Ajuste de datos con MATLAB

El ajuste de datos de forma interactiva en la ventana Figure Window admite muchas


posibilidades, que se pueden consultar en el sistema de ayuda (Help).

Ejemplos en el curso de Física


menú Tools/Basic fitting. Función polyfit
Medida de la velocidad en un movimiento rectilíneo y uniforme

Medida de la aceleración en un movimiento rectilíneo y uniformemente acelerado

Movimiento de la cinta de una casete

Medida de la constante de un muelle

Medida del módulo de elasticidad

Medida del módulo de cizallamiento

Flexión de una viga en voladizo (I)

El muelle elástico

Péndulo de torsión

El péndulo simple

Oscilaciones amortiguadas

Oscilaciones amortiguadas por una fuerza de módulo constante.Plano inclinado

http://www.sc.ehu.es/sbweb/fisica3/datos/regresion/regresion_1.html 6/7
23/4/2018 Ajuste de datos con MATLAB

Velocidad de propagación de un movimiento ondulatorio

El sonido

El prisma de vidrio

Optica no paraxial de una lente esférica

La ley de Snell de la refracción

Optica paraxial

Efusión de un gas

Ley del enfriamiento de Newton

Medida de la viscosidad de un líquido

Medida de la viscosidad de un líquido mediante dos vasos comunicantes

El tubo-capilar

Descarga de un condensador

Fuerza magnética sobre conductor rectilíneo. La balanza de corriente

Campo magnético producido por un imán

Función de distribución de Weibull

Energía producida por un aerogenerador

Grado en Ingeniería de Energías Renovables


Angel Franco García, Copyright © 2016

http://www.sc.ehu.es/sbweb/fisica3/datos/regresion/regresion_1.html 7/7

También podría gustarte