1 LEAN CON DETENIMIENTO LOS PÁRRAFOS SIGUIENTES Y NO
INTENTE INTRODUCIR DATOS HASTA QUE SE LE INDIQUE: Matlab es una
herramienta poderosa usada por ingenieros y científicos de
todo el mundo para resolver diversos problemas que requieren
cálculos complejos bajo una secuencia de instrucciones y
respaldado por una compañía de software
Profesional: The Math Works Inc. La parte de este taller esta
orientado para que el estudiante tenga capacidad de graficar
señales. Su contenido se enumera a continuación:
1.- Matrices y operadores. 2.- Funciones y comandos propios de
Matlab. 3.-Graficación de señales.
Sobre las pantallas que aparecen al abrir el programa: Al abrir
MATLAB normalmente aparecen tres pantallas (versión 6.0 en
adelante) : 1.- La primera de la izquierda (launch pad) en donde
se localizan todos los directorios y demos. 2.- La segunda abajo
a la izquierda (command history) en la parte inferior donde se
genera un histórico de los comandos y variables que se
usan. 3.- La tercera de la derecha (command window) se considera
la pantalla principal y es precisamente donde se declaran las
variables y comandos de un programa en la cual se ubica el
símbolo ‘»’. Ver Fig.1. 2
3 Fig. No. 1 Pantallas de MATLAB versión 6.0
4 EL INDICADOR : El símbolo “??” en la
pantalla principal ( command window) nos indica que MATLAB esta
esperando que introduzcamos un comando o una variable. Para salir
de MATLAB cuando sea pertinente use los comandos quit o exit.
ESCALAR, VECTOR Y MATRIZ: A = 2.5 Un sólo dato se denomina
escalar. B = ?2.5, 6.4 ? Si una matriz tiene una sola fila o una
sola columna, la llamamos vector; para ser más claros
llamamos vector fila o vector columna. Matriz : -2 0 3 El
tamaño de una matriz se especifica por el número de
filas y C = 3 -4 5 de columnas; así, C es una matriz de 3
x 3. Un dato de una 0 0 2 matriz se puede identificar por los
subíndices; así C23 representa el dato 5 de la
matriz C, si una matriz contiene m filas y n columnas, entonces
contiene un total de m x n valores; así, C es una matriz
de tamaño 3 x 3.
5 ESTILO Matlab es sensible a la diferencia entre
mayúsculas y minúsculas, así que los nombres
“Espacio, ESPACIO y espacio” representan tres
variables distintas. Matlab tiene la posibilidad de manejar
números reales (ejem. 12.7× 10-2 se escribe 12.7 e-2
) el número complejo de parte real 5 y parte imaginaria 2
se representa en matlab 5+2*i o como 5+j*2, las letras i y j se
preasignan ambas en matlab para ser Iguales a v-1. otras
constantes son pi para ?. DEFINICIÓN DE UNA MATRIZ La
forma más sencilla de definir una matriz es usar una lista
de números, como : A = [4.5] B = [1.6, 3.1] C = [-2,0,3;
3,-4,5; 0,0,2]
6 PUNTOS SUSPENSIVOS Si hay demasiados números en una fila
de una matriz para que quepan en una línea, podemos
continuar la instrucción en la siguiente línea,
pero se requiere una coma y tres puntos al final de la
línea para indicar que la fila debe continuar. Ejemplo: H
= [-2,0,-3,4,-3,-4,5,0,0,2,1,1,1,3,4,-0.2] que se puede escribir
como: H = [-2,0,-3,4,-3,-4,… 5,0,0,2,1,1,1,3,4,-0.2] MATLAB
también nos permite definir una matriz que ya se
definió: Ejemplo: B =[1.5, 4.1] D = [-3, B] este comando
equivale a D = [-3,1.5,4.1]
7 También podemos modificar los valores de una matriz o
agregar valores adicionales usando una referencia a un lugar
específico. Por ejemplo: D(3) = 6 ; Cambia el tercer valor
de la matriz D del valor 4.1 por 6, para quedar como: D =
[-3,1.5,6] Así también logramos extender una matriz
definiendo nuevos elementos. Si ejecutamos el siguiente comando
D(4) = 2.5 ; La matriz D tendrá cuatro valores en lugar de
tres, así D se verá como D = [-3, 1.5, 6, 2.5]; El
punto y coma ; termina la instrucción y oculta la
exhibición del resultado de la operación. Teclee D
= [-3, 1.5, 6, 2.5] ahora Teclee D = [-3, 1.5, 6, 2.5];
8 AHORA SI EMPIECE A TECLEAR DATOS Y COMANDOS DE LOS SIGUIENTES
EJERCICIOS SÓLO TECLEA LOS VECTORES NO ESCRIBAS EL
COMENTARIO % El punto y coma ; termina la instrucción y
oculta la exhibición del resultado de la operación.
Teclee D = [-3, 1.5, 6, 2.5] ahora Teclee D = [-3, 1.5, 6, 2. B =
[ 2; 4; 6; 10] % DEFINE UN VECTOR COLUMNA. C = [ 5, 3, 5 ; 6, 2,
–3 ] % DEFINE UNA MATRIZ 2 x 3. E = [ 3, 5, 10, 0; 0, 0 ,
… 0, 3; 3, 9, 9, 8 ] % COMA Y TRES PUNTOS PARA CONTINUAR UNA
LINEA. T = [ 4, 24, 9 ] Q = [ T, 0, T ] % INTERCALA UN VALOR DE
CERO ENTRE DOS VECTORES. V = [ C ( 2, 1); B ] % DE LA MATRIZ C
SELECCIONA EL VALOR (m, n) Y LO AGREGA AL VECTOR B. A (2, 1) = –
3 % CREA UNA MATRIZ LLAMADA A Y LE ASIGNA EL VALOR DE –3 EN
(m, n)
9 Lee los siguientes comentarios y prueba su validez: El operador
de dos puntos es útil para generar matrices nuevas; Si se
usa un signo de dos puntos para separar dos enteros, el operador
de dos puntos generara todos los enteros entre los dos enteros
especificados. tecleé: n = 1 : 10 % Este operador es
especialmente útil para generar los índices de
tiempo de una señal de tiempo discreto. También se
usan los signos de dos puntos para separar tres números,
el operador de dos puntos generará valores entre el primer
número y el tercero, usando el segundo número como
incremento: tecleé: t = 0.0:0.5:6.0 % este operador es
especialmente útil para generar los índices de
tiempo continuo o un dominio de una función
analógica. El incremento también puede ser negativo
tecleé: r = 15:-1:0
10 EN LO SUSECIVO TRATE EN CADA EJEMPLO DONDE LO CREA ADECUADO DE
PROBAR LA AUTENTICIDAD DE LOS COMANDOS Funciones especiales para
generar matrices nuevas. La función size devuelve dos
argumentos escalares que representan el número de filas y
el número de columnas, podemos usar size para generar una
matriz de ceros que tenga el mismo tamaño que la otra
matriz ejemplo: Tecleé W = [ 4, 3, 2; 4, 6, 3 ]; F=
zeros(size ( W ) ) La función ones genera una matriz que
solo contiene unos. Tecleé C= [1, 2, 3; 4, 2, 5]; D =
ones(size(C)) Algunas ocaciónes es necesario conocer que
variables se hallan definidas y que valores tienen almcenados el
comando who lleva a cabo esta acción: Tecleé who Si
desea dejar una variable sin definición (sacarla de la
lista ) se utiliza el comando: clear.
11 Operaciones con escalares , vectores y matrices: Los
operadores matemáticos incorporados que se utilizan con
frecuencia en matlab son:
Tecleé el enunciado de asignación siguiente; a=3;
b=[2,6,4]; c=[4,10, 2]; los vectores y matrices pueden
multiplicarse por un escalar: tecleé: a*b ans es el nombre
dado a un resultado cuando el usuario no le asigna un nombre. Un
escalar puede sumarse a un vector o matriz: tecleé: a+c La
suma de un escalar a un vector o matriz sólo añade
el escalar a cada elemento del vector o matriz la resta se define
de manera similar: tecleé: a-b 12
13 Los vectores y matrices se suman (o restan) como lo hacemos en
matemáticas, esto es, los dos vectores o matrices deben
tener la misma forma para sumarse o restarse a menos que uno de
ellos sea un matriz de 1*1, un escalar, como lo vimos antes :
tecleé: b+c c-b Los vectores y las matrices se multiplican
de acuerdo a las reglas del álgebra: tecleé: b*c
Este resultado ilustra un error común en Matlab. Las
matrices deben ser conmensurables para ser multiplicadas
utilizando el operador *. La premultiplicación de un
vector renglón de 1 por 3 como c por un vector
renglón de 1 por 3 como b no esta definida. Sin embargo si
c se transpusiera a un vector columna 3 por 1, se
definiría la multiplicación. La
transposición se efectúa con el operador ‘.
tecleé: c’ b*c’
14 Operaciones elemento por elemento: A menudo es muy útil
multiplicar dos vectores o matrices de la misma forma, elemento
por elemento en vez de utilizar las reglas usuales de la
multiplicación de matrices. Ese tipo de
multiplicación se denomina multiplicación del
arreglo en Matlab y se lleva a cabo utilizando el operador .* Las
operaciones elemento por elemento, u operaciones de arreglos, no
sólo se aplican a operaciones entre dos matrices del mismo
tamaño, si no también a operaciones entre un
escalar y un no escalar. Así pruebe las instrucciones de
cada uno de los siguientes juegos: tecleé: A = [ 4, 3, 2,
4, 6 ]; C = 3.*A G = A./5 Las vectores resultantes C y G
tendrán el mismo tamaño que A.
15 A fin de ilustrar las operaciones de arreglos para vectores,
considere los dos siguientes vectores fila: Tecleé: B = [
-6, 3, -2, 4, 6 ]; Calculemos el producto de arreglos de A y B
usando las siguientes instrucciones: Tecleé: L = A.*B El
comando de división de arreglos, Tecleé: F=A./B
Asimismo la exponenciación de arreglos también es
una operación elemento por elemento ejemplos;
Tecleé: Z = A.^2 M = A.^B También podemos usar una
base escalar con un exponente vector como; P= 3.^A
16 Los ejemplos anteriores utilizaron vectores, pero las mismas
reglas se aplican a matrices con filas y columnas, como lo
podrás constatar declarando la matriz ‘d’
ejecutando las operaciones indicadas: d= [ 1:6; -1:-1:-6 ];
f=d.*6 w=d.^2 GRAFICA X vs. Y: Gráficas x vs. y sencillas.
Suponga que queremos graficar los siguientes datos recabados de
un experimento con un modelo de coche de control remoto. El
experimento se repite 10 veces, midiendo la distancia que un
móvil recorre en cada ensayo. (x) “Ensayo” (y)
“Distancia” 1 58.5 2 63.8 3 64.2 4 67.3 5 71.5 6 88.3
7 90.1 8 90.6 9 89.5 10 90.4
17 Pruebe generar esta gráfica: creando un vector llamado
x con los datos de la columna “Ensayo”, y un vector
llamado y con los datos de la columna “Distancia” y
en seguida teclee : plot (x, y), grid y de enter Se genera
automáticamente la gráfica. “La buena
práctica de ingeniería exige la inclusión de
unidades y un titulo” Por lo tanto en el código
anterior incluya los siguientes comandos: plot(x,y), title
(‘Gráfica de experimento’), xlabel (
‘Ensayo’), ylabel (‘Distancia’), grid Si
se agrega un tercer argumento en el comando plot éste
controla el color y el estilo de la gráfica. Es una cadena
la que determina el color de la línea, estilo de la misma
y los símbolos (si los hay ) utilizado para los puntos de
marca, por tanto intente dar elegancia a su grafica anterior
agregando al comando plot: plot (x,y,’ro’),
grid
18 LISTA DE CARACTERES COLOR MARCADOR ESTILO DE LINEA y amarillo
. punto – continua m magenta o circulo : punteada c cyan x marca
x -. guión-punto r rojo + más — guionada g verde *
asterisco b azul s cuadrado w blanco d diamante k negro v
triangulo(hacia abajo) ^ triangulo (hacia arriba)
19 Los archivos .m o archivos .M Este tipo de archivo es de lo
más importe que se puede generar por el usuario en MATLAB,
es un archivo que ejecuta las instrucciones programadas en
él, y que pueden convertirse en un comando de matlab.
Ahora tu crearas un archivo .m Desde la ventana de matlab
selecciona new, M-file Aparecerá un blok de notas dentro
de él, declara las siguientes variables: Tecleé: t
=[0:0.001:2]; % Este vector se puede también generar con:
linspace(0,0.001,2). m = 2; y = m .*t; plot(t, y, 'r',
‘linewidth’,4),grid %´linewidth´, 4 : te
da el grueso de la linea. Después guarda este
código en el mismo blok de notas en la parte superior (
file save en el drive e: pendiente.m si es memoria USB) con el
nombre pendiente.m, esté nombre de archivo se convierte en
un comando de Matlab con el nombre pendiente. Ejecútalo en
la pantalla de comandos llamándolo sólo con su
nombre “pendiente” sin la extensión.m (antes
de llamarlo recuerda cambiarte de directorio del C: al e: con la
instrucción cd e: si es el caso) . Este archivo .m puedes
llevarlo a otra computadora que tenga el programa matlab y
ejecutarlo .
MATLAB provee excelentes funciones para gráficas en una y
dos dimensiones. Veamos un par de ejemplos sencillos. Suponga que
queremos trazar la gráfica de la función
y=t^2*e(-t.^2); Esto lo podemos lograr con las instrucciones:
Tecleé: t=[-10:.1:10]; % La primera instrucción
divide el intervalo [-10,10]en subintervalos de largo 0.1 y=t .^2
.*exp(-t.^2); % Esta línea evalúa la función
en los puntos. plot(t,y,'linewidth',4),grid % Grafica la
función. 20
Supongamos ahora que queremos dibujar una superficie:
Tecleé: x=-10:0.5:10; %Las primeras dos instrucciones
dividen los ejes de “x" y "y" en subintervalos de largo
0.5. y=x; [X,Y]=meshgrid(x,y); %la tercera instrucción
genera una rejilla en el conjunto [-10,10] x [-10,10] con
cuadraditos de lados 0.5 , Z=X.^2.*exp(-Y.^2); % La cuarta
instrucción evalúa la función en los puntos
de la rejilla, y finalmente trazamos la superficie con surf.
surf(X,Y,Z),title('Grafica de superficie') 21
22 GRAFICAS LINEALES Y LOGARÍTMICAS: La mayor parte de las
gráficas que generamos dan por hecho que los ejes x vs. y
se dividen en intervalos equiespaciados; estas gráficas se
llaman gráficas lineales. Una escala logarítmica
(de base 10) es útil cuando una variable abarca varios
órdenes de magnitud. Los comandos MATLAB para generar
gráficas lineales y logarítmicas de los vectores x
y y son los siguientes plot (x,y) Genera una gráfica
lineal con los valores de x y y. semilogx (x,y) Genera una
gráfica de los valores de x y y usando una escala
logarítmica para x y una escala lineal para y. semilogy
(x,y) Genera una gráfica de los valores de x y y usando
una escala lineal para x y una escala logarítmica para y.
loglog (x,y) Genera una gráfica de los valores de x y y
usando escalas logarítmicas tanto para x como para y.
Más adelante se verá como utilizar estos comandos
(tarea código No.2)
23 GRAFICAS MULTIPLES: Una forma sencilla de generar curvas
múltiples en la misma gráfica es usar
múltiples argumentos en un comando de graficación,
como en Plot (x, t, y ,t) Al ejecutarse este programa, se traza
la curva correspondiente a x versus t, y luego se traza en la
misma grafica la curva correspondiente y versus t. Más
adelante se verá como utilizar estos comandos ( tarea
código 3). Tarea: Comenta (con %) los comandos en los
siguientes tres códigos, usa archivos .M, imprime tus
graficas y preséntalos al maestro del curso son parte de
la evaluación del mismo.
24 Código No.1 v1=[0:0.001:.7979]; w1=298; q=1.6022e-19;
n=1.5; k=1.38e-23; num1=q.*v1; den1=n*k*w1; M1=num1./den1;
x1=1e-9.*exp(M1); v2=[0:0.0001:.6379]; w2=358; num2=q.*v2;
en2=n*k*w2; M2=num2./den2; x2=1024e-9.*exp(M2);
plot(v1,x1,'b',v2,x2,'r'), title('ECUACION DEL DIODO'),
legend('TEMPERATURA 298k', 'TEMPERATURA 358k'), grid
25 SUBGRÁFICAS: El comando subplot permite dividir la
ventana de gráficos en subventanas. Las posibles
divisiones pueden ser dos subventanas o cuatro subventanas o
incluso 8 ventanas en una hoja.. Los argumentos del comando
subplot son tres enteros: (m, n, p). Los dígitos m y n
especifican que la ventana de gráficos se divida en una
retícula de m por n ventanas más pequeñas, y
el digito p especifica la p-ésima ventana para la
gráfica actual ( donde se ubica esta grafica) . Las
ventanas se numeran de izquierda a derecha y de arriba abajo. Por
ejemplo el siguiente comando Subplot(2,1,1), plot(x,y) especifica
que la ventana de gráficos se divida en una grafica
superior y una inferior ( dos líneas de graficas en una
columna ) y que la grafica actual plot(x,y) se coloque en la
ventana superior (código No.2). El siguiente juego de
instrucciones genera cuatro graficas que ilustran la
función del comando subplot empleando escalas lineales y
logarítmica.
26 Código No. 2 t=[0:0.001:1]; f=2; w=2*pi*f;
x=((1/2).*(1+cos(2*w.*t)));
subplot(2,2,1),plot(t,x,'r','linewidth',2),grid,…
subplot(2,2,2),semilogx(t,x,'b','linewidth',2),grid,…
subplot(2,2,3),semilogy(t,x,'r','linewidth',2),grid,…
subplot(2,2,4),loglog(t,x,'b','linewidth',2),grid Código
No. 3 t=[-6*pi:.001:6*pi]; w1=2/3; w2=1/2; w3=1/3;
x1=2.*sin(w1.*t); x2=3.*sin(w2.*t); x3=4.*sin(w3.*t);
plot(t,x1,'b',t,x2,'r',t,x3,'k','linewidth',2),title('Cada
senoide completa un numero entero de ciclos'),grid
Código No. 3 t=[-6*pi:.001:6*pi]; w1=2/3; w2=1/2; w3=1/3;
x1=2.*sin(w1.*t); x2=3.*sin(w2.*t); x3=4.*sin(w3.*t);
plot(t,x1,'b',t,x2,'r',t,x3,'k','linewidth',2),title('Cada
senoide completa un número entero de ciclos'),grid
27
Código No.4 t=0:.001:1; x=2*sin(8*pi*t);
plot(t,x,'r','linewidth',2),grid n=0:1:15;
y=2*sin(8*pi*(1/15)*n);
subplot(2,1,1),plot(t,x,'r','linewidth',3),grid,subplot(2,1,2),stem(n,y,'linewidth',3),grid
28
29
Intenta crear una grafica usando el ciclo for Teleé
t=[-1:.005:1]; f=1; w0=2*pi*f; x=1.5*ones(size(t)); for i=1:100;
x=x+((-1)^(i+1))*(1/i)*sin(i*w0.*t); end
plot(t,x,'r','linewidth',2), grid 30
Una más t=[-2:0.001:2]; x=0.25*ones(size(t)); for m=1:2:99
x=x+(-1)^((m-1)/2)*1/(m*pi)*exp(i*m*pi*t); end
plot(t,x,'r','linewidth',2),grid Saca tus conclusiones 31