martes, 12 de marzo de 2013

Como aprender Matlab

Para poder aprender Matlab.

Necesariamente tiene que haber un proceso de aprendizaje.
Empezando como primera clase, el tema de vectores, luego matrices, luego gráfica en 2 dimensiones, luego gráfica en 3 dimensiones. Luego pasar a la creación de archivos de los distintos tipos en matlab, luego formatos de impresión, luego condicionales, luego ciclos iterativos( para esto el usuario de matlab de ante mano debe conocer algoritmos, diagrama de flujo, Pseudocódigo), luego exportación de archivos, importación de archivos. Matlab Interface , uso individual de Edit Text, static text, los demás objetos de matlab guide. Luego matlab uicontrol( que es tema muy interesante), luego matlab simulink empezar desde lo mas elemental(como por ejemplo jalar los bloques al espacio de trabajo de simulink) y poco a poco ir profundizando en los temas de simulink.

También es muy importante el fundamento teórico del tema del cual se va hacer un código en matlab, sin el fundamento teórico adecuado va a ser difícil hacer código en matlab.

Es un proceso aprender matlab, no se puede saltar los temas, al saltar los temas muchas veces uno se queda estancado y no puede seguir con el proceso de desarrollo de su código.


 En cada pregunta que hace el usuario siempre se aprende algo, siempre hay algo nuevo, y es un proceso de investigación de los comandos de matlab.

A través de los años que estudio MATLAB, he llegado a la conclusión que una manera elegante de aprender matlab es ayudando a los demás personas, asesorando a los demás personas.

José Jeremías Caballero
Servicios de Programación en MatLab
Lima - Perú

Para mayor información, contactarse a jjcc94@hotmail.com

miércoles, 6 de marzo de 2013

Producto de elementos de una Matriz

Desarrollar un programa en Matlab que cumpla lo siguiente: - lo llamaremos desde el cursor de Matlab escribiendo (argumentos) > - el programa llenará una matriz de orden 1 x n (este n será el primer argumento a dar por el usuario) en la que el primer elemento será el número 1,00, y cada elemento de los siguientes se irá incrementado una cantidad constante (cantidad que será el segundo argumento a dar por el usuario) con respecto al anterior; posteriormente, el programa multiplicará todos los elementos de la matriz entre sí - el programa mostrará en pantalla, cuando se ejecute, solamente: la matriz resultante, y el producto resultante. Ejemplo de comprobación: prodmat ( 5 , 0.15 ) matriz = 1.0000 1.1500 1.3000 1.4500 1.6000 producto = 3.4684

Contents

PROGRAMA PRINCIPAL

function [matriz1,Prod1,matriz2,Prod2,matriz3,Prod3,matriz4,Prod4]=prodmat(n,razon);
if nargin<1
n=5;
razon=0.15;
end
[matriz1,Prod1]=prodmat1(n,razon)
[matriz2,Prod2]=prodmat2(n,razon)
[matriz3,Prod3]=prodmat3(n,razon)
[matriz4,Prod4]=prodmat4(n,razon)
end

DIFERENTES FORMAS DE HACER LA PREGUNTA

function [matriz1,Prod1]=prodmat1(n,razon)
matriz1=1:razon:1+(n-1)*razon;
Prod1=prod(matriz1);
end

function [matriz2,Prod2]=prodmat2(n,razon)
matriz2=zeros(1,n);
for i=1:n
matriz2(i)=1+(i-1)*razon;
end
Prod2=1;

for i=1:n
Prod2=Prod2*matriz2(i) ;
end
end

function [matriz3,Prod3]=prodmat3(n,razon)
matriz3=zeros(1,n);
Prod3=1;
for i=1:n
matriz3(i)=1+(i-1)*razon;
Prod3=Prod3*matriz3(i) ;
end
end

function [matriz4,Prod4]=prodmat4(n,razon)
matriz4=zeros(1,n);
Prod4=1;
i=1;
while i<=n
matriz4(i)=1+(i-1)*razon;
Prod4=Prod4*matriz4(i) ;
i=i+1;
end
end

 SALIDA DE LOS RESULTADOS

matriz1 =
1.0000 1.1500 1.3000 1.4500 1.6000
Prod1 =
3.4684

matriz2 =
1.0000 1.1500 1.3000 1.4500 1.6000
Prod2 =
3.4684

matriz3 =
1.0000 1.1500 1.3000 1.4500 1.6000
Prod3 =
3.4684

matriz4 =
1.0000 1.1500 1.3000 1.4500 1.6000
Prod4 =
3.4684
Published with MATLAB® R2012b

José Jeremías Caballero
Servicios de Programación en MatLab
Lima - Perú

Para mayor información, contactarse a jjcc94@hotmail.com

sábado, 18 de agosto de 2012

Clases Particulares de Matlab Intermedio

SYLLABUS DE MATLAB INTERMEDIO

Sumilla Programación en Matlab, tipos de archivos, bucles, formatos de salida y entrada; importación de datos.
  • 1ra sesión

  • Programación en Matlab: Como entrar en el entorno de Matlab. Tipo de archivos de Matlab: archivos función, archivos script. Abrir, Crear, guardar y ejecutar un programa m. Ayuda (help) para programas creados por el usuario. Crear archivos p, archivos exe, conversiones de archivos *.m a archivos html. Operadores Lógicos. El uso de la funciones nargin, nargout, return, y error para la correcta ejecución de los archivos m.
  •  2da sesión

  • Raíces de funciones, Creación de funciones, evaluación de funciones simbólicas de distintas maneras: feval, inline, etc. Formatos de salida, uso de fprintf, disp, display, sprintf para las impresiones, input. Ejercicios Resueltos.
  •  3ra sesión

  • Funciones lógica. Sentencias de decisión (if, case, otherwise continue, elseif,), problemas resueltos. Bucles finitos (for, while). Codificación de algoritmos con bucles finitos
  •  4ta sesión
  • Bucles infinitos (bucle while 1) subprogramas, argumentos de entrada y salida. Codificación de algoritmos. Comandos de manejo interactivo (la función menú) . Problemas resueltos.
  •  5ta sesión

  • Tratamiento de archivos de datos, uso de fprintf, fopen, fclose, textscan, importdata, load, xlsread, xlswrite, xlsfinfo, fgets y fgetl. Importación y exportación de datos. Lectura y exportación de datos: de Excel, de texto, de imágenes. Problemas Resueltos.
  • 6ta sesión

  • Evaluación y calificación
    José Jeremías Caballero 
    Servicios de Programación en MatLab
    Lima - Perú
    Para mayor información, contactarse a jjcc94@hotmail.com

    Area de un Triangulo

    Haga un programa a nivel Matlab Guide que calcule el área de un triángulo mediante la formula: clip_image002[4] Donde p es el semiperímetro, clip_image004, siendo a, b, c los tres lados del triángulo, además graficarlo en un axis y ubicar su centro de gravedad. Se debe leer los vértices del triangulo triangulo
    Realizado por mis alumnos, Phierina  Tamara y  Cesar Muñoz, alumnos de Métodos Numéricos y Programación II, UNMSM.
    José Jeremías Caballero

    Servicios de Programación en MatLab

    https://programacioncaballero.blogspot.com/

    Lima - Perú

    Para mayor información, contactarse a jjcc94@hotmail.com

    viernes, 11 de mayo de 2012

    Intersección de dos rectas en el plano

     
    clear all

    figure(1)

    figure(gcf)

    syms  x

    y1=-3*x+18;

    y2=(-3*x+27)/4;

    figure(gcf)

    hold on

    X=solve(y1==y2);

    f1=inline(y1);

    f2=inline(y2);

    plot(X,f1(X),'*b')

    fplot(char(y1),[double(X)-5 double(X)+5],'r')

    fplot(char(y2),[double(X)-5 double(X)+5],'g')

    hold off





    clear all

    figure(2)

    figure(gcf)

    syms  x y

    e1=3*x+y-18;

    e2=3*x+4*y-27;

    figure(gcf)

    hold on

    [X,Y]=solve(e1,e2,'x','y');

     plot(X,Y,'*b')

     h1=ezplot(e1,[double(X)-5 double(X)+5]);

     set(h1, 'Color', 'r');

     h2=ezplot(e2,[double(X)-5 double(X)+5]);

     set(h2, 'Color', 'g');

    grid on

    hold off

    José Jeremías Caballero
    Servicios de Programación en MatLab
    https://programacioncaballero.blogspot.com/

    Lima - Perú

    Para mayor informacion, contactarse a jjcc94@hotmail.com

    domingo, 6 de mayo de 2012

    Splines Cubicos

    Programa de Splines Cúbicos

    %% http://www.lawebdelprogramador.com/foros/Matlab/1327174-Duda_spline.html
    % Hola, estoy haciendo un .m para obtener y dibujar las splines. Primero
    %introduces los puntos (x,y) que tu quieres.
    % 
    % El siguiente código te permite obtener los coeficientes para cada spline:
    %  De esta manera, se obtiene
    % 
    % [ A1 B1 C1 D1; A2 B2 C2 D2;............; AN BN CN DN]
    % 
    % El problema, es que aún teniendo esta matriz, no sé cómo hacer para
    %representar las funciones spline (correspondiente a cada intervalo).

    %Primero hay que introducir el vecto X e Y
    clear all
    X=[40   45  50  55  60  65  70];
    Y=[390  340 290 250 210 180 160];
    N=length(X)-1;
    H=diff(X);
    E=diff(Y)./H;
    diagsupinf=H(2:N-1);
    diagprinc=2*(H(1:N-1)+H(2:N));
    U=6*diff(E);
    % restricciones del spline natural
    Minicial=0; Mfinal=0;
    % construccion de la matriz de los coeficientes para el calculo de los
    % momentos
    A=diag(diagprinc)+diag(diagsupinf,1)+diag(diagsupinf,-1);
    % construccion del vector independiente para el calculo de los momentos
    B=U'; B(1)=B(1)-H(1)*Minicial; B(N-1)=B(N-1)-H(N)*Mfinal;
    % resolvemos el sistema y hallamos los momentos
    M=A\B;
    % añadimos los dos momentos naturales extremos y lo escribimos como vector
    % fila
    M=[Minicial,M',Mfinal];
    % calculo de los coeficientes del polinomio cubico i-esimo en potencias
    % de (x-x_i)
    for i=1:N
    S(i,1)=(M(i+1)-M(i))/(6*H(i));
    S(i,2)=M(i)/2;
    S(i,3)=E(i)-H(i)*(M(i+1)+2*M(i))/6;
    S(i,4)=Y(i);
    end

    % creamos los polinomios  para cada intervalo
    syms x
    for i=1:N
        s=0;
        for j=1:size(S,2)
            s=s+expand(S(i,j)*(x-X(j))^(4-j));
        end
        Es(i,:)=s;
    end

    % Es(1)--->f1---> Intervalo X [40,45)
    %  Es(2)--->f2---> Intervalo X [45,50)
    %  Es(3)--->f3---> Intervalo X [50,55)
    %  Es(4)--->f4---> Intervalo X [55,60)
    %  Es(5)--->f5---> Intervalo X [60,65)
    %  Es(6)--->f6---> Intervalo X [65,70)

     %dibujamos los polinomios
    figure(gcf)
    hold on
    c='rgbcmk';
    for i=1:length(X)-1
     F=vectorize(inline(Es(i)));
     plot(linspace(X(i),X(i+1)),F(linspace(X(i),X(i+1))),c(i),'linewidth',5)
     %fplot(F,[X(i) X(i+1)],'r',);
    end
    plot(X,Y,'linewidth',5,'color',rand(1,3))
    axis([X(1) X(end) -200 500])
    grid on
    hold off

    José Jeremías Caballero
    Servicios de Programación en MatLab
    https://programacioncaballero.blogspot.com/
    Lima - Perú

    Para mayor informacion, contactarse a jjcc94@hotmail.com

    domingo, 29 de abril de 2012

    Visualizacion continuada de la posicion del mouse

    Hola,
    me gustaría saber como puedo visualizar mediante un "edit text" la posición del puntero, cada vez que haga clic con el mouse sobre la grafica en forma continuada.
    José Jeremías Caballero
    Servicios de Programación en MatLab
    https://programacioncaballero.blogspot.com/
    Lima - Perú

    Para mayor informacion, contactarse a jjcc94@hotmail.com

    miércoles, 18 de abril de 2012

    Ecuaciones de Fitzhugh - Nagumo

    Considerando las ecuaciones de Fitzhugh-Nagumo:
    dv/dt= -v*(v-a)*(v-1)-w
    dw/dt=b*(v-c*w)
    siendo a, b y c parámetros que cumplen:
    0<a<1, b>1 y c>0.
    La variable v representa el potencial de acción y la variable w modela los canales de sodio y potasio.
    Ilustrar (utilizando Matlab) la existencia de condiciones iniciales (v,0), cuyas correspondientes órbitas se aproximan a equilibrios distintos. Se supone que a=1/4, b=3/2 y c=10.
    Lo que me sucede, es que no entiendo como meter las condiciones iniciales que me pide en matlab. Sé representar las órbitas para los puntos de equilibrio pero sin condiciones iniciales y por mas que he probado, no he conseguido nada.

    function ode45caballero8
    global a b c
    fprintf('CONDICIONES: 0<a<1, b>1 , c>0\n')
    fprintf('\n EJEMPLO: a=0.25  b=1.5  c=10  I=[0 1]  y0=[-4 0]\n\n')
    a=input('Ingrese el valor de a: ');
    b=input('Ingrese el valor de b: ');
    c=input('Ingrese el valor de c: ');
    I=input('Ingrese el intervalo I=');
    y0=input('Ingrese ondición inicial y0=');
    [t,y]=ode45(@potencial_modelado1,[I(1) I(2)],[y0(1) y0(2)]);
    figure(gcf)
    plot(t,y(:,1), t,y(:,2));
    end
    function dydt=potencial_modelado1(t,y)
    global a b c
    dydt=zeros(2,1);
    dydt(1)=-y(1)*(y(1)-a)*(y(1)-1)-y(2);  %dv/dt= -v*(v-a)*(v-1)-w
    dydt(2)=b*(y(1)-c*y(2));               %dw/dt=b*(v-c*w)
    end
    EJECUCION EN MATLAB
    >> ode45caballero8
    CONDICIONES: 0<a<1, b>1 , c>0
    EJEMPLO: a=0.25    b=1.5    c=10  I=[0 1]    y0=[-4 0]
    Ingrese el valor de a: 0.25
    Ingrese el valor de b: 1.5
    Ingrese el valor de c: 3
    Ingrese el intervalo I=[0 1]
    Ingrese condicion inicial y0=[1 2]
    José Jeremías Caballero
    Servicios de Programación en MatLab
    https://programacioncaballero.blogspot.com/
    Lima - Perú

    Para mayor informacion, contactarse a jjcc94@hotmail.com

    Programación y algoritmos: asesorías, servicios, revision, creación y cursos

    Asesorías, servicios, revisión, creación y cursos    modalidad online Servicios ofrecidos Asesoría Online Personalizada en MATLAB y...