Beruflich Dokumente
Kultur Dokumente
(Workspace) clear all, y para eliminar todas las figuras que no estn ocultas, close all. En la
Fig. 1.1 se muestra la pantalla del Matlab V7, donde se observa las diferentes ventanas, como
son: Current Directory, Editor, Command Window, Workspace y Command History, que se
detalla en 1.6.
Ejercicio 1.2
Evale la expresin: tan t 2 2sen 1 ,
8
Ejercicio 1.3
Ejecute los comandos clock, date y calendar. Interprete las respuestas proporcionadas por
Matlab y limpie luego la pantalla.
1.5.2 Formatos numricos
Para visualizar los resultados en la pantalla de comandos, se tienen varias posibilidades
aunque, por defecto, los nmeros en pantalla se representa con redondeo de cuatro cifras
decimales. Tambin decide si representa un nmero en notacin convencional (coma fija) o
notacin cientfica (coma flotante). Los nmeros enteros que tengan menos de nueve cifras
siempre se representan con coma fija. El comando para la representacin en pantalla es format
y admite, entre otras, las opciones siguientes:
format
format
format
format
long
: 16 dgitos.
short
: 4 dgitos. Equivale a escribir slo format.
long e : 16 dgitos ms exponente.
short e: 4 dgitos ms exponente.
sqrt(pi)
format short, sqrt(pi)
format long e, sqrt(pi)
format short e, sqrt(pi)
Ejercicio 1.5
Ejecute los comandos
realmax y realmin para conocer exactamente el rango de representacion de un nmero real
dentro del cual varan los nmeros que maneja Matlab.
1.5.3 Variables
Una variable es un smbolo que se asigna temporalmente a un dato. La forma de definir
una variable cualesquiera es variable = expresin.
Por ejemplo:
>> x=7*pi
Para saber el valor actual de una variable slo hay que escribirla y presionar la tecla
Enter. El resultado o respuesta de ejecutar cualquier expresin matemtica se guarda, por
defecto en una variable denominada ans, que sale inmediatamente en la pantalla de comandos y
que toma como valor el correspondiente resultado. Si deseamos que esta variable no aparezca en
la pantalla, basta escribir al final de la expresin el smbolo ; (punto y coma).
Ejercicio 1.6
Crear dos variables que almacenen los valores:
2 3 11 e
4 tanh 2
log 2 cos 2 2 / 3
Ejercicio 1.7
Consulte la ayuda sobre la variable predeterminada j y/o i y calcule j2. Luego, defina la variable
j como dos y vuelva a calcular j2. Qu regla prctica debe obtenerse?
1.6 EL ENTORNO DE TRABAJO DE MATLAB
1.6.1 El entorno de trabajo
La versin 7.0, al igual que las anteriores, el entorno de Matlab es ms grfica e
intuitiva. Los principales componentes de dicho entorno son el explorador de rutas (Path
Browser), el editor y depurador de errores (Editor/Debugger) y el visualizador del espacio de
trabajo (Workspace).
1.6.2 Path Browser
Con este entorno de trabajo se puede llamar a una gran variedad de funciones, tanto
propias como programadas por los usuarios. A veces, puede haber funciones diferentes que
tengan el mismo nombre. Por lo tanto, es interesante saber cmo Matlab busca cualquier
funcin que se le pida que ejecute. La clave es la ruta de bsqueda (search path) que el
programa utiliza cuando encuentra el nombre de una funcin. El search path es una lista de
directorios que se puede ver y modificar mediante el comando path, o utilizando el Path
Browser (Submen Set Path en el men File).
1.6.3 El directorio actual
El concepto de directorio actual o de trabajo, es el directorio donde el usuario debe
guardar los diferentes archivos que genere en las sesiones, para que Matlab pueda detectarlos.
Puede consultar el directorio en el que se encuentra con el comando pwd. El contenido de dicho
directorio puede obtenerse con el comando dir. Para cambiar el directorio actual se utiliza el
comando cd (Change Directory) seguido del nombre del nuevo directorio. Ejecutando cd.. ,
se sube un nivel en la jerarqua de directorios.
1.6.4 Editor/Debbuger
En Matlab tienen particular importancia los M-archivos, esto es, archivos con la
extensin *.m , son archivos de texto ASCII que contienen un conjunto de comandos de
Matlab. La importancia de estos archivos es que al escribir su nombre en la lnea de comandos
de Matlab y presionar Enter, se ejecutan todos los comandos contenidos en dicho archivo.
Matlab dispone de un editor propio que permite tanto crear y modificar estos archivos
(proceso de edicin-Editor), como ejecutarlos paso a paso para detectar errores (proceso de
depuracin-Debugger).
1.6.5 Workspace
El espacio de trabajo (Workspace) de Matlab es el conjunto de variables que en un
determinado momento estn definidas en la memoria del programa. Para obtener informacin
sobre el workspace se pueden utilizar los comandos who y whos. La segunda proporciona una
informacin ms detallada que la primera. Copias completas de una sesin de trabajo. Matlab
incorpora el comando diary para guardar sesiones completas de trabajo. Este orden puede ser
de gran utilidad en el desarrollo de las clases prcticas, pues permite guardar en un archivo de
texto todos los resultados obtenidos en la sesin, los comentarios realizados en la clase y en
general, todo lo que el programa va presentando en pantalla.
La forma natural de proceder es la siguiente: se escribe diary nombre.txt. De esta
manera, se crea el archivo nombre1.txt en el directorio actual y todo aquello que aparezca en
pantalla, a partir de ese momento, se graba en dicho archivo. Para que dejen de grabarse las
instrucciones que aparecen en pantalla hay que escribir diary off y para volver a abrir el
archivo diary on.
1.7 MATRICES Y VECTORES
1.7.1 Matrices y vectores
En Matlab se trabaja fundamentalmente con matrices y para el caso de los nmeros,
estas son consideradas como matrices cuadradas de orden uno.
Las matrices pueden definirse de las siguientes formas:
Escribir la matriz entre corchetes, colocando las filas una a continuacin de otra,
separadas por el smbolo ; . Entre los elementos de una misma fila podemos
colocar una coma o dejar un espacio en blanco.
Escribir la matriz entre corchetes, colocando cada fila en un rengln.
La matriz vaca se representa por [ ].
Como es natural, si slo introducimos una fila tenemos un vector fila. Matlab incluye
una orden muy til para generar vectores cuyas coordenadas estn en progresin aritmtica. Es
decir, la estructura a:b:c crea un vector entre los nmeros a y c, incrementando cada
coordenada con el nmero b. Si slo se escribe a:c se considera por defecto que b es igual a
uno.
Ejercicio 1.8
Construya tres vectores cuyos elementos estn contenidos en el intervalo [-1,1] en cuatro, ocho
y veinte subintervalos iguales. Luego, con las tres primeras coordenadas de cada uno de ellos,
genere las tres filas de una matriz de 3 3 y calcule el determinante de dicha matriz y su
traspuesta.
>> u=-1:2/4:1, v=-1:2/8:1, w=-1:2/20:1
>> A=[-1.0,-0.50, 0.00
-1.0,-0.75,-0.50
-1.0,-0.90,-0.80]
>> B=A
>> det(A), det(B)
Ejercicio 1.9
Considere la matriz cuadrada de 4 x 4
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
Utilizando el comando sum, explique la razn de por que se le denomina matriz mgica.
1.7.2 Direccionamiento y manipulacin de matrices
Para seleccionar un elemento determinado de una matriz se escribe el nombre de la
matriz seguida del nmero de fila y columna separados por una coma y entre parntesis.
Si se desea extraer una submatriz basta colocar, en vez de nmeros, vectores cuyas
componentes son los nmeros de las correspondientes filas y columnas. El smbolo dos puntos
es muy til para crear submatrices. Cuando no se le asignan valores a la derecha e izquierda, por
defecto, recorre todas las filas o columnas. Si colocamos datos fuera del rango actual de una
matriz se rellenan con ceros las zonas no especificadas.
Ejercicio 1.10
Obtenga de cuatro maneras diferentes la submatriz formada por la segunda y la tercera fila de la
siguiente matriz:
1
1
1
2
2
2
>>
>>
>>
>>
>>
A = [1 1 1 1;1 2 2 2 ;1 2 3 3 ;1 2 3 4 ]
A(2:3,1:4)
A(2:3,:)
A([2 3],[1 2 3 4])
A([1 4],:)=[]
1
2
3
3
1
2
3
Ejercicio 1.11
Defina una matriz A cuadrada de orden 15 tal que todos sus elementos sean nulos, salvo la
primera fila y la primera columna, las cuales toman los valores, respectivamente de la columna
o fila en la que se encuentran.
Ejercicio 1.12
Escriba las matrices A y B definidas por
A(i, j) = 10(i - j) + 1; i, j = 1, ..., 10.
i j 1
1,
B i, j
, i, j 1,....,20
0, en otro caso
1.8 GRAFICAS EN MATLAB
La ventana grfica de Matlab. Para mostrar las correspondientes grficas, abre una
nueva ventana, la denominada ventana de figura. Si ya hubiera una ventana de figura, se borra la
ventana de figura actual y se dibuja en ella la nueva grfica. Para utilizar dos o ms grficas en
diferentes ventanas de figura, se usa el comando figure. El comando figure(n) muestra o
crea, si no la hay, la ventana de la figura n-sima y sta pasa a ser la ventana de figura activa. La
orden close cierra la ventana grfica activa.
1.8.1 Grficas bidimensionales
Para obtener grficas 2-D, Matlab admite cuatro opciones: grficas en coordenadas
cartesianas, grficas en coordenadas polares, grficas de barras y grficas de escaleras. El
comando para representar datos bidimensionales en coordenadas cartesianas es plot, para crear
grficas en coordenadas polares es polar y, finalmente, los grficos de barras y escaleras se
generan usando los comandos bar y stairs, respectivamente.
El comando plot escala los ejes para ajustar los datos, representa los puntos y, a continuacin,
conecta los puntos con una lnea recta. Tambin aade una escala numrica y coloca de forma
automtica marcas en ambos ejes. Conviene aclarar que lo primero que se hace al ejecutar el
comando plot es eliminar toda la informacin (lneas, ejes,...) sobre la grfica anterior, si la
hubiere.
Ejercicio 1.13
Dibuje la grfica de la funcin exponencial en el intervalo [-3,3].
Obtenga una segunda grfica donde a la curva anterior se le aada la recta tangente en x = 0.
Ejercicio 1.14
Resuelva el ejercicio anterior usando el comando hold.
Ejercicio 1.15
Dibuje la grfica de la elipse centrada en el origen y de semiejes 3 y 5.
Ejercicio 1.16
Dibuje un polgono regular de 10 lados que pueda inscribirse en una circunferencia de radio
uno. (Indicacin: Evalue plot sobre un vector cuyas componentes sean nmeros complejos).
1.8.2 Grficas tridimensionales
Para obtener grficas 3-D, Matlab admite tres opciones: grficas de lneas, grficas de
superficies y grficas de contorno. El comando bsico para realizar grficas de lneas es plot3,
los comandos para grficas de superficies son mesh y surf y, finalmente, para grficas de
contorno es contour.
1.8.3 Grficas de lneas
La funcin plot3 es anloga a su homloga bidimensional plot. Su forma ms
sencilla es plot3(x,y,z) la cual dibuja una lnea que une los puntos (x(1), y(1), z(1)), (x(2),
y(2), z(2)), (x(3), y(3), z(3)), etc. , y la proyecta sobre un plano para poderla representar en
pantalla.
Ejercicio 1.17
Dibuje en verde un tramo de una espiral cilndrica.
>> fi=[0:pi/20:6*pi];
>> plot3(cos(fi),sin(fi),fi,r)
Ejercicio 1.18
Una forma alternativa de obtener el vector anterior fi es usar el comando linspace. Mediante
la instruccin help linspace escrita en la pantalla de comandos, recabar mayor informacin
sobre la operacin de esta funcin y obtener de nuevo dicho vector.
Ejercicio 1.19
Dibuje la curva alabeada de ecuaciones paramtricas:
x(t) = cos(t3), y = cos(t) sen(t), z = sen(t), t [4, 4].
1.8.4 Grficas de superficies
La idea es dibujar una funcin de dos variables sobre un dominio rectangular.
Supongamos que x e y son dos vectores que contienen las coordenadas en una y otra direccin
de la retcula sobre la que se va a dibujar la funcin. Se inicia generando dos matrices X (cuyas
filas son copias de x) e Y (cuyas columnas son copias de y) con el comando meshgrid, las
cuales representan las coordenadas de todos los puntos del reticulado. Posteriormente, se calcula
la matriz grfica de datos Z a partir de las matrices de coordenadas X e Y, teniendo en cuenta la
funcin de que se trate. Finalmente, la matriz Z se dibuja con el comando mesh o surf.
Ambas rdenes dibujan la funcin en perspectiva y la diferencia entre ellas est en el llenado
de color de las clulas generadas por el mallado.
Ejercicio 1.20
Dibuje en un cuadrado la funcin sombrero
z sen
>>
>>
>>
>>
x2 y 2 /
x2 y 2
u=-8:0.5:8;v=u;
[U,V]=meshgrid(u,v);
r=sqrt(U.^2+V.^2)+eps; w=sin(r)./r;
mesh(w)
Ejercicio 1.21
Represente la superficie para las siguientes condiciones:
x = 4cos(r)sec(t), y = 2sen(r)sen(t), z = tan(t),
donde t [, ] y r [2, 2].
En las versiones recientes de Matlab, hay un grupo de funciones que permite realizar
grficos de forma ms sencilla. Ejemplos de ellas son ezplot y ezsurf.
1.9 ARCHIVOS EN MATLAB
Comentarios generales. Para trabajar con datos de gran tamao, o para disear nuevas
funciones, es completamente imprescindible trabajar con archivos y por lo tanto, con el editor
de texto. Los archivos adicionales que Matlab utiliza bsicamente son aquellos con extensin
*.m y una parte importante de cada sesin con Matlab es crear y refinar este tipo de archivos.
Atendiendo a su uso, los M-archivos suelen dividirse en dos grandes grupos: archivos de
instrucciones o tipo script y archivos de funciones.
La pantalla del editor de programas facilita el trabajo con los M-archivos. Es decir, el
editor muestra con diferentes colores los diferentes tipos o elementos constituyentes de los
comandos (en verde los comentarios, en rojo las cadenas de caracteres, ...). Adems, el editor
verifica que las comillas o parntesis que se abran tengan el correspondiente elemento de cierre.
Para acceder al editor desde la ventana principal de Matlab, basta presionar el men File
y despus New/ M-file (si se desea crear un archivo nuevo), o bien presionar el men File y
despus Open M-file... (si se desea abrir un archivo ya existente). El manejo de esta nueva
ventana es totalmente intuitivo. Otra opcin para abrir el editor es el comando edit.
Ejercicio 1.22
Abra un archivo utilizando el editor de Matlab, escriba en l una matriz cuadrada de 2 x 2 y
guarde dicho archivo con el nombre ejercicio122.m.
Presionar: File New M-file
Escribir: A=[1 2; 2 1]
Presionar Guardar como
En Nombre de Archivo escribir ejercicio122.m
Con la pestaa Guardar en, situarse en el directorio donde uno quiera almacenarlo y
presionar Guardar.
1.9.1 Archivos de instrucciones
Un M-archivo de este tipo consiste en una sucesin de instrucciones de Matlab. Para
ejecutarlas y ver el correspondiente resultado en pantalla, es suficiente escribir el nombre del
archivo (sin la extensin) y presionar Enter. Las variables en un archivo de instrucciones son
globales y, por lo tanto, pueden afectar a los valores de las variables que se hayan creado
durante la sesin de trabajo.
Los archivos de instrucciones son bsicamente utilizados para introducir datos en
matrices de grandes dimensiones, pues en un archivo de este tipo es fcil corregir errores sin
repetir todo el trabajo.
Ejercicio 1.23
Escriba y guarde en un archivo de nombre datos123.m la matriz cuadrada de 20 x 20 tal que
los elementos de su diagonal sean todas iguales a 3 y las dos subdiagonales principales estn
formadas por unos. Calcular su determinante.
Seguidamente cambie la diagonal por el vector cuyas coordenadas son los primeros diez
nmeros naturales y vuelva a calcular el determinante de la nueva matriz.
Escribir en un archivo:
A=diag(3*ones(10,1));
A=A+diag(ones(9,1),1);
A=A+diag(ones(9,1),-1);
Abrir datos123.m
A=A-diag(3*ones(10,1));
A=A+diag(1:10);
A continuacin, puede haber diversas lneas de comentario que han de estar precedidas
necesariamente por el smbolo % . Conviene decir que son precisamente estas lneas las que
aparecern en pantalla al usar el comando help. Finalmente aparece el programa, es decir, las
instrucciones necesarias para poder evaluar la funcin.
Tanto los argumentos de entrada como los de salida no son obligatorios y si no
aparecen, no hace falta escribir los correspondientes corchetes o parntesis.
Ejercicio 1.24
Disear una funcin que muestre la grfica de una funcin cosenoidal atenuada
exponencialmente y(t) = exp(-0.05nt)cos(2t) y cuyo argumento de entrada sea el factor de
atenuacin exponencial n. La grfica debe tener una malla y deben situarse los ejes de
coordenadas.
% GRAFICAR UNA SEAL COSENO ATENUADA EXPONENCIALMENTE
% Dado la constante n de atenuacin
% Graficar una seal cosenoidal atenuada exponencialmente
%
% utilizar: cos_exp(n)
%
function cos_exp(n)
t=-2:0.01:2;
y=exp(-0.05*n*t).*cos(2*pi*t);
plot(t,y);grid;
axis([-2 2 -4 12]);
hold on
plot([-2.2 2.2],[0 0],'r', [0 0], [12 -4],'r');
grid;
hold off;
Ejercicio 1.25
Disee una funcin que devuelva una funcin cosenoidal con frecuencias de 100 Hz., con
diferentes amplitudes y se grafique durante 30 milisegundos.
Ejercicio 1.26.
Dado x1(t)=2cos(220t) y x2(t)= x1(t) + 2.5cos(240t), disee una funcin que calcule y grafique
x2(t), muestre por lo menos 2 repeticiones. Luego, presentar el valor mnimo y mximo de x2(t).
1.10 PROGRAMACIN EN MATLAB
1.10.1 for
La sintaxis para la utilizacin de esta orden de control es
for variable=vector
instrucciones sobre la variable
end
xn1 xn2 2 xn , x0 4
Obtenga x1 , x15 y x50. Crear un archivo iter.m:
function z=iter(n)
x=4;
for k=1:n
x=x^2-2*x;
end
z=x;
10
En Matlab
>> iter(1)
>> iter(15)
>> iter(50)
Ejercicio 1.28
Dada una matriz cuadrada de n x n, disee una funcin usando la instruccin for, que sume los
elementos de mayor mdulo de cada una de las columnas de dicha matriz.
Ejercicio 1.29
Utilizando dos instrucciones for anidadas, genere la matriz cuadrada A, definida por
A(i, j) = i2j, i, j = 1, ..., 10.
Se podra generar A sin usar ninguna instruccin for?
1.9.2 if
La sintaxis habitual para la utilizacin de esta orden de control es:
if relacin lgica P1
instrucciones Q1
else
instrucciones Q2
end
Ejercicio 1.31
Escribir un cdigo en Matlab para hallar el valor mximo de x.
%
% Mimax: retorna el valor mximo de una matriz.
%
function valor_max=mimax(x)
% Obtener una estimacin inicial para el mximo.
valor_max=x(1);
% Ahora navegaremos por el resto de la matriz,
% 1 elemento a la vez
for k=2:length(x)
% si el valor en el desplazamiento actual es ms grande
11
Ejercicio 1.32
Escribir un cdigo en Matlab para hallar el valor mnimo de x.
1.9.3 while
La sintaxis para la utilizacin de esta orden de control es:
while relacin lgica(contador)
instrucciones(contador)
end
El significado de este esquema es que las instrucciones se irn ejecutando mientras la relacin
lgica sea cierta.
Ejercicio 1.33
Determine el valor de la precisin de la mquina usando un bucle while. Compare el valor
obtenido con la variable predefinida eps de Matlab.
function precmaq
precmaq=1;
while (1+precmaq)>1
precmaq=precmaq/2;
end
precmaq = 2*precmaq
Ejercicio 1.34
Disear una funcin que muestre la grfica de una funcin senoidal y(t) = cos(2t + ) para dos
periodos y cuyo argumento de entrada sea el nmero t. La grfica debe tener una malla y deben
situarse los ejes de coordenadas.
% GRAFICAR UNA SEAL SENOIDAL
% Dado: la frecuencia, magnitud y fase
% Graficar un conjunto de seales senoidales (hasta 4)
%
% utilizar: plotsinusoides(frec,mag,fase)
%
function plotsinusoides(frec,mag,fase)
max_plots=4;
% Mximo nmero de sinusoides para graficar en una
sola vez
num_points=200; % Nmero de puntos por repeticin.
% Verificacion de parmetros
if (or((length(mag)~=length(frec)), ...
(length(fase)~=length(frec))))
error('Error - frec, mag, y fase deben ser del mismo tamao')
end
% Queremos esto para 2 repeticiones, y num_points por repeticin
frec_min=min(frec);
step=2/(frec_min*num_points);
t=0:step:2*(1/frec_min);
i=1;
12
Ejercicio 1.35
6
Obtenga el menor nmero de sumandos de la serie anterior, de modo que la correspondiente
suma finita aproxime 2/6 con un error menor o igual que 10-4 y que 10-6.
n 1
13