0% encontró este documento útil (0 votos)
93 vistas12 páginas

Modulo 4

El documento describe las funciones y bucles en Matlab. Explica cómo definir funciones y usarlas, así como los bucles for, while y switch para estructuras repetitivas. También cubre conceptos como evaluación de funciones, variables globales, condicionales if/else y operadores lógicos y de relación.

Cargado por

Daniel Garcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
93 vistas12 páginas

Modulo 4

El documento describe las funciones y bucles en Matlab. Explica cómo definir funciones y usarlas, así como los bucles for, while y switch para estructuras repetitivas. También cubre conceptos como evaluación de funciones, variables globales, condicionales if/else y operadores lógicos y de relación.

Cargado por

Daniel Garcia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

PROGRAMACIÓN

FUNCIONES Y BUCLES
Matlab permite la ejecución de conjuntos de comandos escritos secuencialmente en
la ventana de edición y que son almacenados en un archivo nombre.m. Para
ejecutar un archivo basta con teclear su nombre (sin extensión) en modo interactivo
en la ventana de comando y pulsar enter. En el archivo .m se pueden introducir
textos explicativos comenzando la línea con el símbolo %.

FUNCTION
El comando function permite la definición de funciones con la siguiente sintaxis:

Function: parámetros_salida = nombre_función(parámetros_entrada)


cuerpo de la función

se va new→function→ ahí aparece → function [ output_args ] =


Untitled4( input_args )
%UNTITLED4 Summary of this function goes here
% Detailed explanation goes here
end

se llena lo que se quiere calcular y va al espacio de trabajo de matlab y se llama


con el nombre del archivo, se coloca los valores y se corre y da el resultado.

Una vez definida la función se guarda en un archivo nombre_función.m para su


posterior utilización. Cuando los parámetros de salida son más que uno se sitúan
entre corchetes separados por comas. Si los parámetros de entrada son más que
uno se separan por comas.

Ejemplo: sssiiii

Definir la función fun1(x) = x^3 -2x+cos(x)


En la ventana de edición:

function p = fun1(x) % el nombre del archivo es fun1


% Definición de una función simple
p = x^3 – 2*x+cos(x)

La función se guarda en un archivo fun1.m

Podemos luego utilizar esta función, por ejemplo,

>> fun1(3*pi/2)
ans=
95.2214

Definición de una función simple


Ejemplo: siiiii

Solución de una ecuación de segundo grado

function [x1,x2] = cuadratica(a,b,c)


%Esta funcion calcula las raices de una ecuacion cuadratica
%la sintaxis es [x1,x2]=cuadratica(a,b,c)
If nargin<3
Error (‘faltan datos’)
end

radical = sqrt(b^2-4*a*c);
x1= (-b+radical) / (2*a);
x2= (-b-radical) / (2*a);
if isreal(x1)
disp(‘raicces reales’)
else
disp(‘raíces imaginarias’)
end
el archivo es cuadratica.m

>> help cuadratica

Esta funcion calcula las raices de una ecuacion cuadratica la


sintaxis es [x1,x2]=cuadratica(a,b,c)

>> [x1,x2]=cuadratica(1,2,3)

x1 =

-1.0000 + 1.4142i

x2 =

-1.0000 - 1.4142i

EVALUACION DE FUNCIONES
feval:

La evaluación de una función en sus argumentos, también puede realizarse con el


comando feval que tiene la siguiente sintaxis:

feval(‘F’,arg1,arg2,…)

Evalúa la función F (archivo F.m) en los argumentos especificados arg1, arg2, …..
Ejemplo: ssiiii

function [x1,x2] = ecuacion2(a,b,c)


% Solución de la ecuación de segundo orden
d = b^2 – 4*a*c;
x1 = (-b + sqrt(d))/(2*a);
x2 = (-b - sqrt(d))/(2*a);

Para resolver la ecuación x2 + 2x +3 = 0

>> [x1, x2] = feval(‘ecuacion2’,1,2,3)

o también:

>> [x1, x2] = ecuacion2(1,2,3)

eval: evalua una cadena que contiene una expresión MATLAB, sentencia o llamada
función.
Sintaxis: eval(‘strinng’)

GLOBAL
Normalmente cada función de Matlab definida como un archivo–M contiene sus
variables como variables locales, esto es, su efecto es al interior de este archivo
independientemente de otros archivos. Es posible definir otras variables que tenga
efecto en otros archivos-M con variables globales usando el comando global con
la siguiente sintaxis:

global x y z ... define las variables x, y, z,....como globales

ESTRUCTURAS REPETITIVAS

FOR
Permite repetir la ejecución de un bloque de sentencias, un numero definido de
veces .Si se omite el incremento, se asignara un incremento de 1.
Tiene la siguiente sintaxis:
For variable= valor_inicial: incremento: valor final
Sentencias
end

caso1:

for i= 1:n
comandos
end

caso2:

for i=n:-0.2:1
comandos
end

caso 3:

for i=1:m
for i=n comandos
end
end

Ejemplo:
Sumar los enteros pares de 1 a 100

suma=0;
for i=1:2:100
suma=suma+i;
end
disp('El resultado es: ')
display(suma)
%matlab entrega: suma 2500

WHILE
Mientras se ejecuta una condición se ejecutan los comandos o sentencias.

while condición
sentencias
end

Ejemplo: sii

Calcular los volúmenes de las esferas para radio igual a: 1,2,3,4,5


r=0;
while r<5
r=r+1;
vol=(4/3)*pi*r^3;
fprintf('El radio es =%g y el volumen es =%g \n',r,vol)
end

Mat-lab entrega:

El radio es =1 y el volumen es =4.18879


El radio es =2 y el volumen es =33.5103
El radio es =3 y el volumen es =113.097
El radio es =4 y el volumen es =268.083
El radio es =5 y el volumen es =523.599

Ejemplo: noo

Gz=tf(1,[0.4 0.3])
Gzc=zpk(1,[-1 0.2],0.5)
SIGA=1
while SIGA ==1
clc
disp('LA FUNCION DE TRANSF. EN LAZO ABIERTO ES: ')
Gla = Gz*Gzc
disp(' ');
disp('LA FUNCION DE TRANSF. EN LAZO CERRADO ES: ')
Glc = feedback(Gla,1)
disp('PARA SEGUIR OPRIMA ENTER')

pause
clc
disp(' ');
disp('LOS POLOS DEL SISTEMA SON : ');
Polos = pole(Glc)
disp('QUE TIENEN MAGNITUDES Y ANGULOS DE :');
Mag = abs(Polos)
Ang1 = angle(Polos);
Ang = Ang1*180/pi
if (Mag(1)<1)&(Mag(2)<1)
disp('EL SISTEMA ES ESTABLE');
else
disp('EL SISTEMA ES INESTABLE');
end
disp(' ');
disp('PARA SEGUIR OPRIMA ENTER');
pause

SIGA = input (' PRESIONE 1 PARA SEGUIR ');


end

Ejemplo: siii

Genere una tabla que suministre los inversos, cuadrados y raíces cuadradas del 1
al 5

i=0;
while i<5
i=i+1;
A(i)=i;
B(i)=1/i;
C(i)=i^2;
D(i)=sqrt(i);
end
E=[A',B',C',D']

E=
1.00 1.00 1.0000 1.0000
00 00
2.00 0.50 4.0000 1.4142
00 00
3.00 0.33 9.0000 1.7321
00 33
4.00 0.25 16.0000
00 00
2.0000
5.00 0.20 25.0000
00 00
2.2361

BREAK

Termina la ejecución de un bloque For y/o While mas interno de los que comprende
dicha sentencia.

ESTRUCTURAS CONDICIONALES

Son instrucciones que permiten controlar un bloque de sentencias según cumplan o


no una condición.
IF

caso 1: la forma mas simple se escribe asi.

if condición
sentencias
end

Caso 2: con 2 bloques de sentencia


If condición
Bloque 1 de sentencias
else % opción por defecto cuando no se cumple la condición.puede ser omitida
bloque 2 de sentencia
end

caso 3: con condiciones múltiples (anidadas)

if condición1
bloque1
elseif condción2
bloque2
elseif condición3
bloque3
else % sino cumple condiciones anteriores
bloque4
end

elseif

elseif, como su nombre lo sugiere, es una combinación de if y else. Del mismo


modo que else, extiende una sentencia if para ejecutar una sentencia diferente en
caso que la expresión if original se evalue como false. Sin embargo, a diferencia de
else esa alternativa solo se ejecuta si la expresión condicional del elseif se evalua
como true.
Pude haber varios elseif dentro la misma sentencia if. La primera expresión elseif(si
hay alguna) que se evalue como TRUE seria ejecutada.
La sentencia elseif es ejecutada solamente si la expresión elseif precedentes son
evaluadas como FALSE, y la expresión elseif actual se evaleua como TRUE

SWITCH

Similar a la instrucción if anidada Se evalúa una expresión y se compara con las


expresiones en case. Se ejecuta el bloque que corresponda con ese resultado. Si
ninguno es igual se ejecuta el bloque de otherwise.

switch expresión

case expresión1
bloque1
case expresión2
bloque2
.........................
otherwise
bloque3
end

Ejemplo:

disp('SELECCIONE PRESIONANDO :');


disp(' 1: PARA FUNCION DE LA PLANTA EN TF ');
disp(' 2: PARA FUNCION DE LA PLANTA EN ZPK ');
n=input('SELECCIONE LA OPCION : ');
disp(' ');

switch n
case 1
num = input('ENTRE NUMERADOR DE LA PLANTA : num = ');
den = input('ENTRE DENOMINADOR DE LA PLANTA : den = ');
disp('LA FUNCION DE TRANSFERENCIA DE LA PLANTA ES : Gp(s) = ');
Gp = tf(num,den)
disp(' ');

case 2
Z = input('Entre vector de ceros : Z = ');
P = input('Entre vector de polos : P = ');
K = input('Ganancia es igual a : K = ');
disp('LA FUNCION DE TRANSFERENCIA DE LA PLANTA ES : Gp(s) = ');
Gp = zpk(Z,P,K)

end

Operadores de relación:

> Mayor que


>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual
= No es igual a

Operadores lógicos:

& AND
⏐ OR
 NOT
Xor XOR

LECTURA Y ESCRITURA DE VARIABLES

INPUT

Aparece un mensaje en pantalla pidiendo un dato. el valor digitado será asignado a


la variable. Si se desea una cadena se debe añadir el argumento ‘s’.debe ser
tecleada por el usuario.

n = input (‘Teclee el polinomio’)

Ejemplo:

calif = input('Dame la calificacion: ');


if calif >= 3.0
disp(' ')
disp('Aprobado')
end
if calif < 3.0
disp(' ')
disp('Desaprobado')
end

% Otra forma

calif = input('Dame la calificacion: ');


if calif >= 3.0
disp(' ')
disp('Aprobado')
else
disp(' ')
disp('Desaprobado')
end

Ejemplo:

El precio del vino está condicionado a la cantidad requerida. Hasta 5 botellas el


precio unitario es de $10.000, de 6 a 12 botellas el precio es de $12.000, y a partir
de 13 a $15.000. Elaborar un programa, que pegunta cuántas botellas se desean,
indique el precio unitario y el total del gasto.
c=input('¿Cuántas botellas quiere? ');
if c<5
Pu=10000;
Pt=Pu*c;
elseif c<=12
Pu=12000;
Pt=Pu*c;
else
Pu=15000;
Pt=Pu*c;
end
disp('Precio unitario: ')
Pu
disp('Precio total: ')
Pt

DISP

Permite visualizar en la pantalla un

mensaje de texto o el valor de una

matriz sin imprimir su nombre

. disp(‘Universidad de Colombia’)

fprintf permite visualizar un valor numérico o el resultado de una expresión guardada por el

usuario

Sintaxis:

fprintf(‘ aquí se escribe el mensaje y el formato de la variable’, ariable)

Formato:

S →para cadena de caracteres.

d→ para variables enteras

f →para variables decimales

Ejemplo

Área=100

Fprintf(‘el área del rectángulo es:%12.3f/n’,área)

El área del rectángulo es: 100.000

Dond/n indica que el promt >> aparecerá en la siguiente linea

% 12.3f indica que el valor tendrá un formato con 3 cifras decimales y de 12 caracteres
incluyendo los decimales

9.2.1 FIND

Para el ejemplo del movimiento del péndulo, calcular por programación el ángulo
para un tiempo dado.

%Programa en Matlab
g=9.8;
w=2;
L=0.6;
B=0.08;
m=w/g;
%Para correr el simulink tiene que en K>>movpendulo y luego correrlo
disp('Realice la simulacion y de return para ejecutar')
keyboard
a=length(t);
tf=t(a);
delta=tf/a;
%calcular el angulo para un tiempo T dado
T=input('Entre el tiempo de T: ');
i=find(t <(T+delta) & t >(T-delta));
disp('El desplazamiento angular es de: ')
AngR=teta(i(2))
AngG=AngR*180/pi

APLICACIONES

Ejercicio5: Movimiento parabólico

Ecuaciones

x'' 0 Movimiento unforme


y'' g Movimiento acelerado

condiciones iniciales:

Vo=100m/seg
θ=300

También podría gustarte