Anda di halaman 1dari 14

UNCP – FACULTAD DE INGENIERÍA MECÁNICA

MG. ARTURO GAMARRA MORENO

Introducción el Entorno de Trabajo de MATLAB


1. Inicio y cierre de una sesión MATLAB

Ingresando a MATLAB

Para verificar que MATLAB ha iniciado deberá mostrarse una pantalla similar a
la siguiente:
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

Ante todo, se debe establecer una carpeta activa (antes se debe tener creada
la carpeta d:\pramn), tecleando
>> cd d:\pramn
Ahora los ficheros de su carpeta son visibles desde MATLAB. Para
comprobarlo, teclee dir (y pulse "Enter"). Debería aparecer una lista de las
carpetas y ficheros que hay en la carpeta.

Para finalizar la sesión bastará con teclear exit o quit, o simplemente cerrar la
ventana de MATLAB (indistintamente). El programa se cerrará y volverá a la
pantalla principal de Windows.

Observaciones 1 Tenga en cuenta que:

Es conveniente también hacer uso intensivo de la ayuda de MATLAB


accediendo a ella desde el menú o tecleando en la ventana de comandos help
<palabra clave> para la ayuda sobre el comando especificado por <palabra
clave>. Por ejemplo:
>>help help
Invoca la ayuda sobre la propia ayuda en línea.
• Se pueden usar las flechas arriba y abajo para evocar los comandos
introducidos anteriormente.
• Las letras mayúsculas y las minúsculas para MATLAB no son equivalentes:
valor y Valor son dos variables diferentes.
• Teclear el nombre de una variable hará que MATLAB devuelva su valor.
• Un punto y coma (;) al final de cualquier expresión suprime la salida del
resultado por la pantalla (pero no la evaluación de dicha expresión).
• En MATLAB se puede usar tanto paréntesis ( ) como corchetes [ ], pero
éstos tienen significados diferentes: los paréntesis sirven para agrupar
expresiones e indicar los argumentos de funciones, mientras que los
corchetes especifican listas, vectores y matrices.
2. Operaciones básicas en MATLAB
La forma más sencilla de usar MATLAB es hacerlo funcionar como si se tratara
de una gran calculadora. Las operaciones disponibles son: + (suma), - (resta), *
(producto), / (división), ^ (exponenciación). Por ejemplo, tecleando:

>> 3+2

MATLAB responderá con el resultado de la operación:


ans = 5

Ejercicio 1): Evalúe las siguientes expresiones:


a) 186 × 31
b) 124312-5478
c) 174560.4
d) 711 / 134
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

El resultado de las operaciones es asignado por defecto a la variable ans (de


"answer"), pero puede asignarse a otras variables. Éstas pueden tener
cualquier nombre que cumpla con las reglas habituales (caracteres
alfanuméricos, empezando por una letra). Por ejemplo, digitando:
>> x=12/2

x =

6
Se realiza la operación indicada y asigna el resultado a x: x = 6. La variable
conserva su valor a lo largo de toda la sesión, salvo que se le asigne otro o se
le prive de valor por medio de:
>> clear
Observe la gran particularidad de MATLAB: a diferencia de muchos otros
lenguajes de programación, aquí no se requiere declarar variables de
antemano.
Varios comandos de MATLAB pueden ir en una misma línea, separados por
una coma o un punto y coma (recuerde que el último suprime la salida del
resultado por pantalla; así, si únicamente desea que se asigne el valor, pero no
quiere ver el resultado, basta con añadir un ; después de la orden).
Por ejemplo, si efectuamos:

>> z=36-7;
el resultado se asignará a z, pero no se mostrará por pantalla. Para
inspeccionar posteriormente el valor de z bastará con teclear el nombre de la
variable:
>> z
a lo que MATLAB responderá con: z = 29.
Casi todas las funciones elementales (y muchas de las funciones especiales)
se encuentran incluidas en MATLAB: las funciones trigonométricas: sin, cos,
tan, acos, asin, atan, los logaritmos: log, log10, la función exponencial: exp,
la raíz cuadrada: sqrt, las funciones hiperbólicas: sinh, cosh, etc. Para usar
cualquiera de estas funciones se debe colocar el argumento entre paréntesis.
Por ejemplo:

>> y=log(18*z+x);

asignará a la variable y el resultado de la operación anterior. Tecleando


>> y
Se obtendrá como respuesta: y = 6.2691.
MATLAB conoce también varias constantes universales, como pi = , la unidad
imaginaria i ó j, etc. Recuerde que por defecto MATLAB realiza todas las
operaciones ajustándose al estándar IEEE, doble precisión. No podemos variar
esta característica salvo tengamos instalado el Symbolic Math Toolbox, que
implementa la función vpa (de "variable precision arithmetics").
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

Ejercicio 2: Realice las siguientes operaciones:


a) [𝒔𝒆𝒏(𝝅⁄𝟖)]𝐥𝐧 𝟓
b) (𝟏 + (𝒂𝒓𝒄𝒕𝒂𝒏)𝟐 )𝟏⁄𝟐
c) 𝒆𝟑.𝟕
3. Matrices y vectores
Para MATLAB todas las variables son matrices; en particular, los escalares son
matrices 1 × 1. En realidad, MATLAB proviene de "MATrix LABoratory".
Las matrices se indican por corchetes, los elementos de una misma fila se
separan mediante "," (o también espacios) y las filas se separan con ";" (o
saltos de línea). Por ejemplo al digitar:
>> A= [2, -1, 4; 6, 9, -4; 0, 2, 1]
Se obtendrá la matriz A:
A =
2 -1 4
6 9 -4
0 2 1
Los vectores son matrices de una sola fila (vectores fila) o columna (vectores
columna). Por ejemplo:
>> b=[7 3 4 9 2 11];
es un vector fila de 6 elementos. Se puede acceder a los elementos de una
matriz (o vector) a través de su índice; MATLAB enumera los subíndices
comenzando con el 1. Por ejemplo, A(2,1) es el elemento de la segunda fila y
primera columna de A:

>> A(2,1)
Se obtendrá:
ans =
6
>> b(3)=18

hace que MATLAB asigne al tercer elemento de b el valor 18:

>> b

b =

7 3 4 9 2 11

Ejercicio 3. Ahora modifique el vector b de forma que su segundo elemento


tome el valor del quinto.
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

La creación de un vector con valores equiespaciados se simplifica si utilizamos


el operador dos puntos, ":" La sintaxis:

<inicio>:<incremento>:<final>
nos permiten generar un vector con valores <inicio>, <inicio>+<incremento>,
<inicio>+2<incremento>, ..., hasta llegar a <final>. De omitirse, el
<incremento>=1. Por ejemplo, se puede ejecutar:
>> v = 1:-0.3:-1

v =

1.0000 0.7000 0.4000 0.1000 -0.2000 -0.5000 -0.8000

El operador ":" sirve también para especificar un rango de subíndices de un


vector o una matriz. Por ejemplo:
>> b(2:4)

ans =

3 18 9
extrae los elementos con los índices 2, 3 y 4, mientras que:
>> A(1:2,2:3)

ans =

-1 4
9 -4
devuelve el menor de A correspondiente a la intersección de las filas 1, 2 y
columnas 2, 3. Si simplemente especificamos ":", MATLAB lo interpreta como
"todo el rango de valores", es decir, toda una fila o columna. Por ejemplo, con:
>> A(3,:)
se obtiene la tercera fila de la matriz A:
ans =

0 2 1

Ejercicio 4. Asigne a la variable k el valor de la segunda columna de A.


Ejercicio 5. Usando la ayuda de MATLAB averigüe el significado y la sintaxis
del comando linspace. Use ese comando para generar el vector v, creado más
arriba.
4. Operaciones con matrices y vectores
Como se ha dicho antes, MATLAB interpreta todas las variables como
matrices, y las operaciones habituales (*,+,-) entre ellas las entiende por
defecto como operaciones matriciales.
Así, se pueden sumar o restar vectores o matrices siempre que tengan las
mismas dimensiones; por ejemplo:
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

>> a=b; b+a


da como resultado:
ans =
14 6 36 18 4 22

La transposición en MATLAB se indica por medio del apóstrofe ('); en realidad,


se trata de transposición hermitiana: todo elemento se cambia además por su
complejo conjugado. Por ejemplo:
>> c=a'

c =

7
3
18
9
2
11
El operador * es por defecto una multiplicación matricial, de modo que para
llevarse a cabo requiere que las dimensiones de las matrices (o vectores) sean
las apropiadas.
>> c*a

ans =

49 21 126 63 14 77
21 9 54 27 6 33
126 54 324 162 36 198
63 27 162 81 18 99
14 6 36 18 4 22
77 33 198 99 22 121

>> a*c

ans =

588
Si se desean efectuar operaciones con vectores o matrices elemento a
elemento, se debe agregar un punto (.) antes del operador para indicarlo. Así,
por ejemplo, la división de dos vectores no es una operación definida. Sin
embargo, puede calcularse la división elemento a elemento, Ejemplo:
>> a./b

ans =

1 1 1 1 1 1
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

o elevarse todos los elementos de un vector al cuadrado:


>> a.^2

ans =

49 9 324 81 4 121
Ejercicio 6. Introduzca los vectores f = [3,8,-2,15,3] y g = [4,0,4,-12,2] y
calcule su producto elemento a elemento.
La mayoría de las funciones elementales aplicadas a un vector se realizan
elemento a elemento:
>> log(a)

ans =

1.9459 1.0986 2.8904 2.1972 0.6931 2.3979

Ejercicio 7. Calcule los valores de √𝒏, para n=1, 2,..., 16, asignando la tabla
resultante a la variable raíces.
5. Tipos de matrices predefinidos
Existen en MATLAB varias funciones orientadas a definir con gran facilidad
matrices de tipos particulares.
Algunas de estas funciones son las siguientes:
eye(4) forma la matriz unidad de tamaño (4×4)
zeros(3,5) forma una matriz de ceros de tamaño (3×5)
zeros(4) ídem de tamaño (4×4)
ones(3) forma una matriz de unos de tamaño (3×3)
ones(2,4) idem de tamaño (2×4)
linspace(x1,x2,n) genera un vector con n valores igualmente espaciados entre x1 y
x2
logspace(d1,d2,n) genera un vector con n valores espaciados logarítmicamente entre
10^d1 y 10^d2. Si d2 es pi9, los puntos se generan entre 10^d1 y pi
rand(3) forma una matriz de números aleatorios entre 0 y 1, con distribución
uniforme, de tamaño (3×3)
rand(2,5) idem de tamaño (2×5)
randn(4) forma una matriz de números aleatorios de tamaño (4×4), con
distribución normal, de valor medio 0 y varianza 1.
magic(4) crea una matriz (4×4) con los números 1, 2, ... 4*4, con la propiedad
de que todas las filas y columnas suman lo mismo
hilb(5) crea una matriz de Hilbert de tamaño (5×5). La matriz de Hilbert es
una matriz cuyos elementos (i,j) responden a la expresión (1/(i+j-1)).
Esta es una matriz especialmente difícil de manejar por los grandes
errores numéricos a los que conduce
invhilb(5) crea directamente la inversa de la matriz de Hilbert
kron(x,y) produce una matriz con todos los productos de los elementos del
vector x por los elementos del vector y. Equivalente a x'*y, donde x
e y son vectores fila
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

compan(pol) construye una matriz cuyo polinomio característico tiene como


coeficientes los elementos del vector pol (ordenados de mayor
grado a menor)
vander(v) construye la matriz de Vandermonde a partir del vector v (las
columnasson las potencias de los elementos de dicho vector)
Existen otras funciones para crear matrices de tipos particulares. Con
Help/Matlab Help se puede obtener información sobre todas las funciones
disponibles en MATLAB, que aparecen agrupadas por categorías o por orden
alfabético. En la categoría Mathematics aparecen la mayor parte de las
funciones estudiadas en este apartado.

Formación de una matriz a partir de otras


MATLAB ofrece también la posibilidad de crear una matriz a partir de matrices
previas ya definidas, por varios posibles caminos:
– recibiendo alguna de sus propiedades (como por ejemplo el tamaño),
– por composición de varias submatrices más pequeñas,
– Modificándola de alguna forma.
A continuación se describen algunas de las funciones que crean una nueva
matriz a partir de otra o de otras, comenzando por dos funciones auxiliares:
[m,n]=size(A) devuelve el número de filas y de columnas de la matriz A. Si
la matriz es cuadrada basta recoger el primer valor de retorno
Ejemplo:
>> A=[2 3 4; 5 3 4;6 8 1];
>> [m,n]=size(A)

m =

n =

3
n=length(x) calcula el número de elementos de un vector x

Ejemplo:
>> x=[5 7 8 9];
>> n=length(x)

n =

4
zeros(size(A)) forma una matriz de ceros del mismo tamaño que una matriz
A previamente creada
Ejemplo:
>> A=[2 3 4; 5 3 4;6 8 1];
>> zeros(size(A))
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

ans =

0 0 0
0 0 0
0 0 0

A=diag(x) forma una matriz diagonal A cuyos elementos diagonales son


los elementos de un vector ya existente x

Ejemplo:
>> A=[2 3 4; 5 3 4;6 8 1];
>> x=[0 0 0];
>> A=diag(x)

A =

0 0 0
0 0 0
0 0 0
x=diag(A) forma un vector x a partir de los elementos de la diagonal de
una matriz ya existente A

Ejemplo:
>> A=[2 3 4; 5 3 4;6 8 1];
>> x=diag(A)

x =

2
3
1
diag(diag(A)) crea una matriz diagonal a partir de la diagonal de la matriz A
Ejemplo:
>> A=[2 3 4; 5 3 4;6 8 1];
>> diag(diag(A))

ans =

2 0 0
0 3 0
0 0 1

6. Gráficas
MATLAB le permite presentar sus resultados en forma gráfica, en una gran
diversidad de formatos. Dado un vector fila o columna puede utilizarse la
función plot para mostrar el gráfico del vector en pantalla. Por ejemplo:
plot(raices);
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

dibujan los valores correspondientes a las raíces de n, n=1, 2, ..., 16 en la


ventana gráfica, como se muestra en la Figura 1:

Figura 1: Gráfica de raices.


Observe que, si no se especifica lo contrario, MATLAB siempre
• asume los valores de las abscisas igual a los subíndices del vector de datos,
es decir, 1, 2, 3, ...
• une los puntos de la gráfica.
Si queremos especificar los valores de las abscisas, debemos usar dos
vectores. Por ejemplo, para representar la secuencia siguiente:
n -1 0 1 2 3 4
s(n) 2 -4 -2 6 -1 1
Podríamos seguir los pasos:
>> x=-1:4; s=[2,-4,-2,6,-1,1];
>> plot(x,s);
donde -1:4 indican el inicio y el final de la secuencia s. Vea el resultado en la
Figura 2.
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

Figure 2: Resultado de plot(x,s);


Para representar gráficamente una función y=f(x) se siguen los mismos pasos:
generar un conjunto de puntos de muestra y dibujarlos con plot, por ejemplo,

>> x=<inicio>:<inc.>:<final>;
>> y=f(x);
>> plot(x,y);

Mientras más puntos tomamos, más fiel es la gráfica, pero mayor es el volumen
de datos y más se tarda en obtenerlos o procesarlos.

Ejercicio 8 Dibuje la gráfica de y=cos(x), x= [0,3], tomando los valores de la


abscisa
1. El resultado x = 0,1,2,3;
2. x = 0, 0.01, 0.02, ..., 3;

Existen múltiples comandos para modificar el gráfico una vez construido. Por
ejemplo, si fuera necesario, puede añadirse una rejilla a la gráfica usando la
instrucción grid; o etiquetar los ejes por medio de xlabel (para el eje de
abscisas) e ylabel (para el eje de ordenadas).

El resultado de:

>> plot(raices);
>> xlabel('n'); ylabel('Raiz cuadrada de n');
>> grid

se observa en la Figura 3.
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

Figura 3: Gráfica especificando ambos ejes, con rejilla.


MATLAB ofrece además la posibilidad de presentar varias gráficas al mismo
tiempo en pantalla, así como de realizar gráficas tridimensionales. Si desea
más información sobre gráficas puede teclear "help plot" desde la línea de
comandos de MATLAB. Se recomienda también ejecutar grafdemo para ver
una demostración de diferentes posibilidades gráficas de MATLAB.
7. Ficheros
Con lo que se ha visto hasta ahora, MATLAB no es más que una calculadora
científica muy potente, que permite obtener resultados tecleando directamente
los comandos apropiados. Cuando el número de operaciones a realizar es
grande, o deben repetirse varias veces, puede resultar cómodo introducir todas
esas ordenes en un fichero. Lo que hace MATLAB tan potente es su lenguaje
de programación.
Todas las instrucciones, escritas en el lenguaje de MATLAB, se deben
almacenar en ficheros ASCII con la extensión ".m". Además, éste puede
contener tantas líneas de comentarios como queramos, precediendo cada una
de ellas por el signo de %. Para editar un fichero .m, podemos teclear en
MATLAB edit <nombre>.
Los ficheros con la extensión .m se dividen en dos clases:
1. los ficheros de definición de función;
2. los ficheros "guión" o "script".
Los segundos no son otra cosa que una trascripción de una secuencia de
comandos que podríamos ir tecleando consecutivamente para llegar al
resultado. Esta es la forma más habitual de trabajar con MATLAB y salvo que
se trate de instrucciones muy cortas, se debe utilizar scripts y no teclear
directamente en la ventana de comandos.

Por ejemplo, para generar el último gráfico construido era equivalente crear un
fichero con la extensión .m, por ejemplo, grafico.m, con el contenido:
plot(raices);
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

xlabel('n'); ylabel('Raíz cuadrada de n');


grid

y ejecutarlo desde MATLAB tecleando el nombre (sin extensión), grafico.


En cuanto a las funciones, otra gran virtud de MATLAB es que casi todas ellas
están "a la vista", escritas en el propio lenguaje del sistema, de modo que las
podemos examinar y modificar a nuestra conveniencia (¡aunque no se
recomienda hacerlo si no estamos totalmente seguros!).
Ejercicio 9 La instrucción legendre de MATLAB calcula la función de Legendre
asociada. Examine cómo está implementada esa función, que se almacena en
el fichero legendre.m, pero por favor, ¡no la modifique!
También existe la posibilidad de crear nuevas funciones. La principal ventaja de
las funciones es que permiten variables locales y parámetros de entrada y
salida. Para declarar una función de forma que MATLAB sea capaz de
entenderlo, deben cumplirse los requisitos siguientes:
1. La función debe estar contenida en un fichero .m cuyo nombre debe coincidir
con el de la función (recuerde la función legendre).
2. La primera línea ejecutable del fichero (comentarios aparte) debe seguir la
sintaxis:
function [y1,y2,...]=<nomfunc>(x1,x2,...)
donde x1, x2...son los parámetros (variables) de entrada e y1,y2,...son los
parámetros de salida.
MATLAB admite construcciones del tipo for, while e if. La sintaxis para cada
una de ellas puede obtenerse tecleando help for, help while o help if según el
caso. Por ejemplo, el siguiente código calcula el valor de 10!:

>> f=1; for k=2:10, f=f*k; end

Ejercicio 10. Escriba la función misuma, que acepte dos argumentos de


entrada y devuelva como resultado la suma de ambos. Después escriba la
función fibo que haga una llamada a misuma y que, dado el parámetro n en la
entrada, nos devuelva los n primeros miembros de la sucesión de Fibonacci.

MATLAB nos permite guardar todas las variables en un fichero para poder
recuperarlas posteriormente. Para ello basta con teclear:

>> save <nombref>


con lo que todas las variables se guardan el fichero cuyo nombre (sin
extensión) se haya especificado. Posteriormente se pueden recuperar los datos
con:
>> load <nombref>
load y save también pueden usarse sin especificar el nombre de un fichero; en
ese caso MATLAB envía los datos a un fichero por defecto llamado
matlab.mat. Si sólo se quieren salvar algunas variables (digamos por ejemplo
x e y) basta con hacer:
>> save <nombref> x,y
UNCP – FACULTAD DE INGENIERÍA MECÁNICA
MG. ARTURO GAMARRA MORENO

Para más opciones sobre load o save teclee help load o help save desde la
línea de comandos de MATLAB.

Anda mungkin juga menyukai