Matlab2009b -clase2

  • View
    230

  • Download
    0

Embed Size (px)

Transcript

  • Matlab & SimulinkProf. Arturo Vilca Romn avilca@uni.edu.peuni-fiee postgradoclase2

  • *Funciones y grficos

  • Ficheros .mSistema de ecuaciones

    -cos x + y = -0.5ln(x+1) 3 arcsen y = 2.5

    y1 = cos x 0.5y2 = sen ln(x+1) 2.5 3

  • Solucin numrica y grficandices de las soluciones:

    i = 1568 4982 7466

    valores de las soluciones:

    sol = 1.5670 4.9810 7.4650

  • x = 0:0.001:10;y1=cos(x)-0.5;y2=sin((-2.5+log(x+1))/3);plot(x,y1)hold onplot(x,y2)gridi=find(abs(y1-y2)

  • Programa% dominio de valores de la variable xx = 0:0.001:10; % funciones y1 y y2y1=cos(x)-0.5;y2=sin((-2.5+log(x+1))/3);

  • % grfica de y1plot(x,y1) % retiene la ventana para graficar y2hold on % grfica de y2plot(x,y2) % rejillagrid

  • % se buscan los ndices de los vectores x, y1 o y2% que cumplen que y1 = y2 con una precisin de 0.0005i=find(abs(y1-y2)

  • % trazado de los puntos de interseccin de las 2 curvas % usando los valores de los ndicesh = plot(x(i), y1(i), '*');set(h,'Linewidth',5) % leyendas de los ejesxlabel('variable x')ylabel('valores de las funciones y1 y y2')title('solucin grfica de un sistema de ecuaciones')

  • Funcionesfunction fact = factorial(n)% esta funcin calcula el factorial% de un numero entero n % comprueba que el argumento de entrada sea% un nmero entero y positivoif ~((fix(n)==n) &(n>=0)) error('el nmero debe ser entero positivo')end % clculo del factorialfact = prod(1:n);

  • fix>> help fix FIX Round towards zero. FIX(X) rounds the elements of X to the nearest integers towards zero. See also floor, round, ceil.

    Overloaded functions or methods (ones with the same name in other directories) help darray/fix.m help sym/fix.m

    Reference page in Help browser doc fix

  • Uso de la funcin>> factorial(5)

    >> f5=factorial(5)

    >> factorial(3.4)

    >> factorial(-3)

    >> help factorial

  • Recursividadfunction fact = factorial2(n)% retorna el factorial de un nmero entero n% Si no es un entero o es negativo la funcin% muestra un mensaje de error if fix(n)~=n |n
  • Bucle for% Instrucciones de control: bucle for% inicializacin vector=[];for i=1:inf % resto de la division de i por 5 if (rem(i,5)==0) % concatenacin vector=[vector i]; end if length(vector)==10 % salida del bucle for break endend>> bucle_for

    >> vector

    vector =

    Columns 1 through 9

    5 10 15 20 25 30 35 40 45

    Column 10

    50

  • Bucle while% Instrucciones de control: bucle whilevector=[];i=1;while (length(vector)> bucle_while

    >> vector

    vector =

    Columns 1 through 9

    5 10 15 20 25 30 35 40 45

    Column 10

    50

  • Seal saturadaTenemos una seal u(t)

    Limitar esta seal entre los valores

    maxmin

    min=0; max=10satura(6.5, min, max)6.5satura(10.5, min, max)10Satura(-1.5, min, max)0

  • Funcin saturarfunction limite = saturar(u, min, max) % limitacin de una seal % si seal < min entonces seal = min, % si seal > max entonces seal = max, % si min
  • Seal a saturarclose allclear all% los lmites de la sealmin = 0; max = 10; % seal sinusoidal con ruidot = 0:100;ruido = 3*randn(size(t));u = 15*sin(0.1*t)+ ruido;% la saturacinsgn = saturar(u,min,max); % seal no saturadafigure(1)plot(t,u); % seal saturadahold onh=plot(t,sgn);set(h,'LineWidth',2)

  • satura(6.5, min, max)6.5satura(10.5, min, max)10Satura(-1.5, min, max)0

  • Ejplo 1Escribir un programa que calcula media y la varianza de una serie de valores

  • % cierra todas las ventanas graficasclose all

    % borra todas las variables del espacio de trabajoclear all

    % calcular la media y la varianza de una serie de valores% sinusoide entre -2pi y +2pix=-2*pi:pi/10:2*pi;y=sin(x);

    % ruido gaussiano del mismo tamao que x e y% con varianza 1b=randn(size(x));

    z=y+b;

  • % calculo de la media y la varianzamed_z=mean(z);var_z=std(z)^2;

    % trazado de la seal ruidosa e impresion de resultados% trazado de los diferentes puntos con el simbolo '*'plot(x,z,'*')hold on % para trazar otra curva sobre el mismo grafico

    % trazado de la curva que pasa por esos puntosplot(x,z)

    % anotaciones en los ejesxlabel('variable x')ylabel('sinusoide ruidosa')title('media y varianza de una serie de valores')

    % impresion de valores en la ventana graficagtext([' media : ' num2str(med_z)])gtext([' varianza : ' num2str(var_z)])

  • gtextMuestra un texto en una ventana en el lugar seleccionado con el mouse

    Acepta una cadena de caracteres o una tabla de cadenas con la transformacin de caracteres a valor numrico por el comando num2str

  • Curvas en 3Dplot3(x,y,z)

  • clear all, close all x=-2*pi:pi/100:2*pi; % vector y (2da dimensin)y = 2*x; % vector z (3ra dimensin) z = sinc(x-y); % trazado de la funcin en 3D% retorna el puntero hh=plot3(x,y,z); % grosor del trazoset(h,'LineWidth',2)grid

  • Superficies

    x=-1:0.1:1;y=2*x;[X,Y]=meshgrid(x,y);Z=sinc(X).*exp(-X.^2 -Y.^2);mesh(Z)

  • meshcx = -1:0.1:1;y = 2*x;[X,Y] = meshgrid(x,y);Z = exp(X.^2 - Y.^2);meshc(Z)axis([0 20 0 20 0 3])

  • surf, surfc, surfl

  • contour3(X,Y,Z,100)

    contour(X,Y,Z)

    Proyeccin sobreel plano xy

  • Programacin estructuradaLa posibilidad de hacer llamadas a funciones permiten una modularidad y una estructuracin de los programas

  • for, ifpara n veces

    for variable = inicio :paso :finend

  • whileMientras que

    while >end

  • breakPermite salir de un bucle for o while

    if i>nbreakend

  • switchcaseswitch case 1case 2case notherwiseend

  • >> n_par_impar_primo('impar', 20)

    nmeros impares entre 0 y 20

    numeros_impares =Columns 1 through 9

    1 3 5 7 9 11 13 15 17

    Column 10

    19

  • >> n_par_impar_primo('impar',20)nmeros impares entre 0 y 20

    numeros_impares =

    1 3 5 7 9 11 13 15 17 19

  • return

    Permite regresar al programa llamadorerror

    Muestra mensajes de error e interrumpe el programaerror(mensaje de error)

  • >> earthmap

    traza1.mtraza2.m

  • traza1.mx=-2*pi:pi/100:2*pi; % grafico de y=senx/xy=sinc(x);plot(x,y) % dimensiones de los ejesaxis([-7.5 7.5 -0.5 1.2])grid

  • traza2.mx=-2*pi:pi/100:2*pi; y=sinc(x); % retorna un manejador hh=plot(x,y)% grosor del trazoset(h,'LineWidth',2) axis([-7.5 7.5 -0.5 1.2])grid

  • h =

    159.0094

    >> get(h,'LineWidth')

    ans =

    2

    >> get(h,'Markersize')

    ans =

    6

  • Lenguaje Texf1=texlabel('sin(sqrt(lambda^2+gamma^2))/sqrt(lambda^2+gamma^2)')

    f2='{\lambda}_{3} e^{sqrt}{\alpha})}'

  • f1=texlabel('sin(sqrt(lambda^2+gamma^2))/sqrt(lambda^2+gamma^2)')

    f1 =

    {sin}({sqrt}({\lambda}^{2}+{\gamma}^{2}))/{sqrt}({\lambda}^{2}+{\gamma}^{2})

  • f2='{\lambda}_{3} e^{-{sqrt}{(\alpha})}'

    f2 =

    {\lambda}_{3} e^{-{sqrt}{(\alpha})}

  • Histogramas>> x=[5 2 1; 3 1 8; 2 4 1]

    bar(x), gridbarh(x)bar( stack)

  • hist>> x=randn(1,1000); %normal>> hist(x,100)>> grid

    >> x=rand(1,1000); % uniforme>> hist(x,100)>> grid

  • Histogramas en superficiesx =

    5 1 3 6 3 8 9 6 15

    >> area(x)>> hold on>> plot(cumsum(x')','*','LineWidth',3)>> grid>> set(gca,'Xtick',[1 2 3])

  • Diagramas circulares>> x=[100 10 25 45];>> fuera=[1 0 0 1];>> etiquetas={'A','B','C','D'};>> pie(x,fuera,etiquetas)

  • fplotfplot('1-sinc(x)', [-2*pi 2*pi]), xlabel('x=[-2\pi 2\pi]')

    h=gca, set(h,'linewidth',2)

  • gca>> help gca

    GCA Get handle to current axis. H = GCA returns the handle to the current axis in the current figure. The current axis is the axis that graphics commands like PLOT, TITLE, SURF, etc. draw to if issued. Use the commands AXES or SUBPLOT to change the current axis to a different axis, or to create new ones. See also axes, subplot, delete, cla, hold, gcf, gcbo, gco, gcbf.

    Reference page in Help browser doc gca

  • openvarEdita una variable en la ventana del editor

    >> x=rand(5,10);>> openvar('x')

  • Curvas contnuasplot(x,y,cadena)subplot(mnp)

    Sub-ventana p de m lineas y n columnas

  • Curvas contnuas

  • Curvas discretasstem(x,y)

    Traza lneas verticales terminadas por un circulostairs

    Traza la curva en forma de escaleras

  • Curvas discretas

  • hndlgraf

  • Scripts .mNo aceptan argumentos de llamadaNo retornan valoresOperan nicamente sobre las variables del espacio de trabajo

  • FuncionesPueden aceptar argumentos de llamada y re-envio de resultadosLas variables internas son locales a menos que sean declaradas globalesLas funciones son tiles porque extienden las posibilidades del lenguaje

  • Descripcin de una FuncinLa lnea de definicin con la palabra clave function1ra lnea de comentario

    lookforAlgunas lineas de comentario

    help mi_funcionCuerpo de la funcin

  • Escriba una funcin para calcular el factorial de un nmero entero

    factorial.m

  • >&gt