Está en la página 1de 61

Simétrika Arquitectura e Ingeniería

Programación en MATLAB/Simulink para


Ingeniería

Mag. Ing. José Martín Velásquez Vargas


jvelasquez@simetrika.pe
 MATLAB es una herramienta de software
matemático que ofrece un entorno de desarrollo
integrado (IDE) con un lenguaje de programación
propio (M).

 Este software será utilizado de manera muy


intensiva para diseñar algoritmos y para realizar
cálculos para resolver problemas de ingeniería.
 MATLAB: MATrix LABoratory

 Fabricante: Mathworks Inc.


 Software matemático que ofrece un IDE con un
lenguaje de programación propio.
 Permite: manipular matrices, representar datos y
funciones, implementar algoritmos, creación de
GUI y comunicación con otros SW/HW.

5
 Simulink es un ambiente de trabajo gráfico dentro
de MATLAB, el cual está basado en diagramas de
bloques. Soporta simulación, generación
automática de código, así como tests continuos
para verificar el buen funcionamiento de sistemas.

 Simulink provee un editor gráfico, librerías


personalizables y “solvers” para simular sistemas
dinámicos. Dada su integración con MATLAB, es
bastante natural incorporar algoritmos y exportar
resultados entre ellos.
Editor de script
Directorio actual Área de trabajo

Ventana de comandos

[Moore, 2012]
Suma

Resta

Multiplicación

Potencia
Raiz cuadrada

Numero pi

Funciones
Trigonometricas
Punto flotante precisión doble
El tipo de datos numérico por
defecto en MATLAB

>>A=1
>>C=[1 2 3;4 5 6]
Entero

>>E=int8(10)

Datos carácter y cadena


>>H=‘Holly’
>>K=‘Matlab is fun’
(Se cuentan los espacios en blanco !)
Datos Simbólicos
Datos Lógicos Sirve para realizar cálculos
>>M=[true, false, true] algebraicos simbólicos, se usa la
M= función sym:
1 0 1 >> L=sym(‘x^2-2’)
L=
x^2-2
Tablas
Almacenan datos orientados a columnas o tabulares, como columnas de un archivo
de texto o una hoja de cálculo. Las tablas almacenan cada pieza de datos orientados a
columnas en una variable .
Ejemplo: Almacenar variables de datos relacionadas en una tabla
>> LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];

>> T = table(LastName,Age,Smoker,Height,Weight,BloodPressure

>> T.Height

ans =

71
69
64
67
64
La ventana del área de trabajo le mantiene informado de las variables que
usted define conforme ejecuta comandos en la ventana de comandos.

Hasta el momento, la ventana del área de trabajo debe mostrar sólo una
variable, ans, la cual toma el valor del ultimo calculo realizado en el ejemplo
anterior, es decir:
De la misma manera es posible definir nuestras propias variables, darles un
nombre a dichas variables y definir cual será su tipo : escalares, vectores,
matrices, etc…
Es posible agregar mas detalle al grafico obtenido, como por ejemplo un
titulo, nombre de los ejes X y Y, etc…

>> clear, clc


>> a=[0:1:100];
>> b=sin(a);
>> plot(a,b)
title('Funcion Senoidal')
xlabel('Tiempo (seg)')
ylabel('Amplitud (cm)')
grid
La estructura del bucle for es simple. La primera línea identifica el bucle y
define un índice, que es un número que cambia en cada paso a través del
bucle. Después de la línea de identificación viene el grupo de comandos que
se quiere ejecutar. Finalmente, la terminación del bucle se identifica mediante
el comando end. En resumen, se tiene

Es una matriz!
Los bucles while son similares a los bucles for. La gran diferencia es la forma
en que MATLAB decide cuántas veces repetir el bucle. Los bucles while
continúan hasta que se satisface algún criterio.

Condición !
Contenidos:

 Tipos de datos.
 Variables, constantes, operadores, expresiones y
sentencias.
 Funciones de entrada/salida.
 Gestión de gráficos.
 Identificar los elementos que componen el entorno
de trabajo en MATLAB.

 Definir variables y realizar operaciones con


vectores y matrices en MATLAB.

 Realizar gráficas de funciones usando las


herramientas que ofrece MATLAB.
 MATLAB permite trabajar con números de tipo entero con
y sin signo, así como punto flotante de doble precisión, la
cual es la condición por defecto al crear una variable. Para
crear una variable escalar, sólo se le debe asignar un valor
a un nombre:

>> var1 = 3.14 %var1 es tipo double: ocupa 64 bits

 Reglas para nombrar variables: Debe comenzar con una


letra, no puede haber espacios entre caracteres, distingue
entre mayúsculas y minúsculas.
 Una vez que ha sido asignada con un valor, ésta se
muestra en el Workspace y puede ser utilizada para crear
otras variables:
>> var2 = 1.3*45+2*var1

 Como se observa, se han utilizado operaciones aritméticas


como sumas y multiplicaciones de manera bastante
sencilla para definir var2. Si no se desea mostrar algún
resultado, se debe finalizar la línea respectiva con un
punto y coma:
>> num_comp = 1+(4*5-7/3)*i % num_comp = Número complejo

Ejercicio: Definir algunas otras variables y cargar valores.


 MATLAB cuenta con una vasta cantidad de funciones
matemáticas ya definidas para ser usadas por el usuario:

>> t1 = 4^2 %Potencia: 42 = 16


>> t2 = (3+4*j)^0.1 %Paréntesis para operaciones complicadas
>> t3 = sqrt (2) %Raíz cuadrada: √2 = 2^0.5
>> t4 = [log(2) log10(0.23)] %Logaritmo: [ln(2) log10(0.23)]
>> t5 = [cos(pi/6) ; atan(-0.8)] %Trig. (en radianes), pi = 3.1416…
>> t6 = exp (2+4*i) %Exponencial: e2+4i
>> t7 = [round(1.4), floor(3.3), ceil(4.23)] %Redondeos
>> t8 = [angle(i) abs(1+i)] %Op. sobre complejos: argumento y norma
 Realizar las siguientes operaciones:

 Encontrar el lado faltante del triángulo:

 Dado un diodo de silicio con Is = 55 μA, I = 1.5 A


cuando Vd = 0.8 V, encontrar su VT. Utilizar la siguiente
fórmula:
 Para definir vectores, se debe tener en cuenta si se trata
de un vector fila o columna, dado que MATLAB los trata de
manera diferente. Para definir vectores fila se escriben
valores separados por espacios o comas encerrados entre
corchetes:

>> row = [1 2 5.4 -6.6]

 Mientras que para definir un vector columna, los valores


deben estar separados por punto y coma encerrados
siempre entre corchetes:

>> column = [4 ; 2 ; 7 ; 4]
 También es posible direccionar directamente los
elementos de un vector para leer o corregir un
componente específico.

>> row(2) = pi %Permite corregir el segundo elemento de row


>> column(3) = 10 %Permite corregir el tercer elemento de column
>> g = row (4) %Permite guardar en g el cuarto componente
>> h = column (1) %Permite guardar en h el primer elemento

Ejercicio: Definir otros vectores y manipular sus


elementos.
 Notación rápida de MATLAB: Si se desea definir un vector,
cuyo primer elemento es “a” y el último es “b” igualmente
espaciados “h” (ejemplo típico: definir un intervalo de
tiempo), entonces es conveniente usar la siguiente
notación:

>> a = 0; %Valor inicial


>> b = 10; %Valor final
>> h = 0.1; %Intervalo entre componentes, “paso”
>> t = a: h: b; %Notación rápida de MATLAB para vector
 Comando “linspace”: Si mas bien lo que se requiere es crear
un vector con una cierta cantidad de elementos N entre dos
límites conocidos “a” y “b”, entonces el comando “linspace”
es más conveniente.

 >> a = 0;
 >> b = 2*pi;
 >> N = 1000;
>> t2= linspace (a, b, N); %Crea un vector de 1000 elementos entre a y b
 Dados algunos vectores ya creados es posible
concatenarlos o juntarlos de tal forma que se cree un
nuevo vector de mayor tamaño.

 vf1 = [5 4 2];
 vf2 = [6 3 1 8];
 vf12 = [vf1 vf2] %Vector fila concatenado

 vc1 = [3; 6; 12];


 vc2 = [9; 2; 11; 80; 25];
 vc12 = [vc1; vc2] %Vector columna concatenado
 Definir los vectores siguientes:

a = ( √2, π, e )
b = ( 0.15, 0.30, 0.45, …, 1.65, 1.80 )
c = ( 3, 4, 5, … 46, 47, 46, 45, 44, …, 5, 4, 3 )
d = ( 100, 100, 1, 2, 3,… 50, 52, 54, 56, … 100 )
e = ( 0 …π, e … e2 )
 El tamaño del vector se refiere a la cantidad de
elementos que componen un cierto vector.

 Esto se puede obtener con el comando “length”:

 >> L = length (row) % Cantidad de elementos de row


 >> Lc = length (vf12) % Cantidad de elementos de vf12
 Al trabajar con vectores, se cuenta con funciones para
calcular la suma o producto de sus elementos, así como el
promedio aritmético:

>> s = sum(row); % Suma de elementos


>> p = prod(row); % Producto de elementos
>> m = mean(row); % Promedio aritmético
>> r = min(row); % Mínimo de row, también existe max (row)

En general, todas las funciones que aplican a escalares


también funcionan sobre vectores:

>> t = [1 2 3]; f = exp(t); % Es lo mismo que f = [exp(1) exp(2) exp(3)];


 Sin embargo, como se indicó anteriormente, se debe tener
cuidado con las dimensiones de las variables usadas.
Ejemplo de operación fallida por problema de
dimensionamiento:

>> c = row + column % ¡Error!

 Las operaciones de suma y resta se realizan elemento a


elemento y las dimensiones de las dos variables deben
coincidir (a menos que una de ellas sea escalar). Para
resolver este problema se debe usar la traspuesta de uno
de los dos vectores para hacerlos compatibles:

>> c = row' + column % traspuesta: row' = vector columna


 Como casos particulares, los operadores *, / y ^ tienen
dos modos de operación distintos: elemento a elemento y
estándar (operación definida formalmente en matemática).

 Si se desea realizar operaciones elemento a elemento, se


debe usar un punto delante de los operadores: .*, ./ .^) y
las dimensiones de las variables deben ser iguales:

>> a = [1 2 3]; % Vector fila 1x3


>> b = [4; 2; 1]; % Vector columna 3x1
>> a.*b, a./b, a.^b % ¡Todas son errores!
>> a.*b', a./b', a.^(b') % OK Todas son válidas
 Calcular el valor de 20.1x para los siguientes valores de x:
0, ½, 21/2, 2√2 y 1.

 Dado un conjunto de N resistencias, escriba la fórmula


que permitiría calcular su valor Rserie: equivalente en serie
y Rparalelo: equivalente en paralelo.

 Si tiene N notas y desea calcular su promedio eliminando


la nota más baja, ¿cómo lo calcularía con MATLAB?, ¿cómo
podría eliminar las dos más bajas?
 Las matrices se pueden definir como los vectores, esto
es, especificando cada elemento de manera individual o
concatenando vectores fila, columna o incluso matrices
más pequeñas (tener siempre en consideración las
dimensiones).

 Elemento por elemento:

>> a = [1 2; 3 4] % fila 1 de a es [1 2], fila 2 de a es [3 4]

 Ejercicio: Definir una matriz de tamaño 3x3 y 5x4


 Por concatenación de vectores:

 >> c1 = [2; 5; 8];


 >> c2 = [1; 10; 2];
 >> mc12 = [c1 c2] % Matriz concatena dos columnas

 >> f1 = [5 12 47];
 >> f2 = [20 15 35];
 >> mf12 = [f1; f2] % Matriz concatena dos filas
 Explicar el siguiente código

>> f1 = [1 2];
>> f2 = [3 4];
>> c1 = [5; 6];
>> m1 = [f1; f2];
>> m2 = [m1 c1];
>> mc = [[m2 m2] ; [f1 f2 f1]];
mc =
1 2 5 1 2 5
3 4 6 3 4 6
1 2 3 4 1 2
 De la misma forma que para vectores, también es posible
direccionar directamente los elementos de una matriz
para su lectura o escritura.

>> a(1,2) = 5; %Permite editar fila 1, columna 2 de a


>> a(2,2) = 6; %Permite editar fila 2, columna 2 de a

>> g = a(1,1) %Permite grabar en g fila 1, columna 1 de a


>> h = a(1,:) %Permite grabar en h fila 1 de a
>> k = a(:,2) %Permite grabar en k columna 2 de a
>> x = mc([1 2], [4 5]) %Extrae sub-matriz
>> y = mc([1 3], 2:5) %Extrae sub-matriz
 Para realizar las operaciones estándar se debe tener en
consideración que para el producto, las dimensiones
internas de las matrices deben coincidir (columnas de la
primera matriz con las filas de la segunda) y que la
exponenciación se realiza sólo sobre matrices cuadradas.
Como ejemplo de operaciones sobre matrices se muestra
lo siguiente:

>> A = [1 4 5; 2 3 6; 5 8 1];
>> Kd = det(A) % Calcula determinante de la matriz A
>> Rk = A^2 % Potencia (estándar): Calcula A2
>> Iv = inv(A) % Calcula A-1, resulta igual a A^-1
 Resolver los siguientes sistemas de ecuaciones:

 Dado un vector v y una matriz A, calcular lo siguiente:


P = Σ vkAk , k = 1:n
Q = eA

 Dada una matriz A, calcular sus valores propios.


 La facilidad y elegancia en
la construcción de curvas
planas y en el espacio es
una de las características
más resaltantes de
MATLAB. Para el caso de
curvas en un plano, la
instrucción “plot” permite
graficar un vector de
puntos X contra un vector
Y, como se muestra a
continuación.
%Ejemplo de uso de instrucción “plot”

t = 0:0.05:10; %Define tiempo en notación corta t є [0 10], h = 0.05s


y = 4*exp(-t/3).*sin(2*t); % Define funciones a graficar
z = 2*exp(-t/5).*cos(t);
plot (t, y, 'o', t, z, 'x') % Plot XY con marcador ‘o’ para la curva 1 y
% ‘x’ para la curva 2
grid % Habilita líneas de grilla
title('Probando los gráficos', 'FontSize', 24) % Título de la gráfica,
% tamaño de letra 24
xlabel('Segundos') % Etiqueta para el eje X
ylabel('Amplitud') % Etiqueta para el eje Y
legend('y=4*exp(-t/3)*sin(2*t)','2*exp(-t/5)*cos(t)'); % Leyenda
 En cuatro recuadros diferentes dibuje las siguientes
funciones en el rango x: [0 1]
 y1 = x y2 = ex - 1
 y3 = x2 y4 = √x

 Dibuje las siguientes curvas superpuestas en el rango x:


[0 2π]
 w = sin (x) x = cos (2x) z = e-x cos (3x)

 Realice la gráfica de un triángulo y de un trapecio.

 Considere detalles de presentación en las gráficas.


 Para el caso de una superficie en 3D, se presenta el
siguiente código de ejemplo:

[X,Y] = meshgrid(-8:.5:8); % Genera una malla en XY


R = sqrt(X.^2 + Y.^2) + eps; % Define función R (x, y),
%eps: el número más pequeño
Z = sin(R)./R; % Evalúa función sinc(R)
mesh(Z); % Genera superficie en 3D
1. Dados:

Se le pide calcular:

2. Dibuje la campana de Gauss para una variable “x” con


promedio u = 5.7 y σ = 1.5. Presente el gráfico para x =
[-10 10].

3. Dibuje las siguientes curvas polares:


r = 1 (circunferencia)
r = sin (2θ)
4. Dado el vector x=[1 2 3 3 4 6 8], explicar la operación
y resultado de las siguientes instrucciones:

 sum(rem (x,2)==0) y=x(1:2:length(x))


 sum(x>mean(x)) sum((rem(x,2)~=0) & (rem(x,3)==0))
 y=x(length(x):-1:1) x.*(rem(x,3)==0)
 (sum(x)-min(x))/(length(x)-1) sum(x.*(rem(x,3)==0))
y=x(1:length(x)-1)
 y=sort(x)
max(x)-min(x)
 mean(y(3:1:length(y))) x=linspace(0,5,100); % de 0 a 5
y=exp(3*x)-sin(x)+x.^0.3;
plot(x,y)

Utilizar la ayuda (help) de MATLAB para investigar el


funcionamiento de instrucciones no conocidas.
5. Dada la matriz A=[1 2 3; 2 5 1; 5 2 2], explicar la
operación y resultado de las siguientes instrucciones:

 size(A) min(max(A'))
 sum(A) max(max(A))
sum(sum(A<max(max(A))))
 max(sum(A)) C=(A<max(max(A)))
 A(1,2) = 4; A.*C
 A(:,2) = [3 4 3]; sum(sum(A.*C))
 det(A) [m i]=max(A) sum(diag(fliplr(A))+diag(A))
 rank(A) [m i]=max(A') B=[A(1,1) A(1,3) ; A(3,1) A(3,3)]
fliplr(A) B=A
 B=sqrtm(A)
diag(A) B(:,3)=[ ]
 min(max(A)) eig(A) B(1,:)=[ ]
1. Implementar la siguiente función y graficar:
2. Grafique dos períodos de la siguiente función:

También podría gustarte