domingo, 19 de febrero de 2012

Regresión Lineal en Matlab

clear all; 
 clc;
  fprintf('Metodo de Regresion Lineal \n\n'); 
  n=input('Numero de puntos: ');

   for i=1:n 
      x(1,i)=input('dame los valores de x: '); 
   end

      for i=1:n 
        y(1,i)=input('dame los valores de y: '); 
     end
% se nota extraño pero asi se mostraran los resultados
%en forma de Vector. 
 x 
   y 
 
    plot(x,y) 
      grid 
        xlabel('x');ylabel('y') 
          pause
         a=0; 
       for i=1:n 
     a=a+x(1,i)*y(1,i); 
       end

 b=0; 
for i=1:n 
    b=b+x(1,i)*x(1,i); 
end

  c=0; 
  for i=1:n 
      c=c+x(1,i); 
  end

       e=0; 
for i=1:n 
    e=e+y(1,i); 
end

d=0; 
   d=c/n; 
     f=0; 
       f=e/n; 
         a1=(n*a-c*e)/(n*b-c*c); 
       a0=f-a1*d;
     clc; 
  fprintf('Ecuacion con la que se encuentran los nuevos valores de y \n\n'); 
fprintf(' y = %d + %d x',a0,a1);

for i=1:n 
    y(1,i)=a0+a1*x(1,i); 
end
    fprintf('\n\nPresiona enter para ver la nueva grafica\n\n'); 
      pause
        %Grafica con los Datos Ajustados
      plot(x,y) 
    grid 
  xlabel('x');ylabel('y') 
pause

8 comentarios:

  1. De mucha ayuda hubiera sido haber encontrado este blog antes de terminar mi curso de Software en Ingeniería Química :(

    Gracias por las entradas al blog :)

    ResponderEliminar
  2. excelente. podrias enviar o publicar como se hacer para el caso que no sea lineal es decir una regresion no lineal.en matlab,
    gracias

    ResponderEliminar
  3. Orlando prueba con el filtro de kalman , saludos

    ResponderEliminar
  4. GRACIAS AMIGO MUY BUEN PROGRMA CORRE MUY BIEN GRACIAS ME SALVASTE SALUDOS DESDE EL IPN

    ResponderEliminar
    Respuestas
    1. Como es que corre el programa a que se refiere con el numero de puntos?

      Eliminar
  5. gracias amigo super bueno tu programa

    ResponderEliminar
  6. No funciona con vectores grandes y reales

    ResponderEliminar