Sie sind auf Seite 1von 16

Programación en MATLAB

Al igual que en los lenguajes de alto nivel, MATLAB permite crear programas utilizando
programación estructurada. Estas notas no pretenden ser una guía al usuario, ya que la
capacidad de MATLAB está muy por encima de estas simples nociones previas. Se
recomienda el uso de la función help para información más detallada con respecto a los
comandos que se tratarán aquí y a otros muchos más.
Es conveniente cuando se realiza un programa que el usuario escriba una serie de
comentarios que el programa en sí no interpretará, pero que servirán al usuario para
recordar que hace cada parte del programa cuando lo utilice en un futuro o cuando otro
usuario vaya a utilizar el programa. MATLAB entiende que cualquier texto que se escriba a
continuación del símbolo % es un comentario.
Para instrucciones simples y básicamente individuales, se puede escribir la orden en la
ventana de MATLAB directamente (por ejemplo, si queremos dividir 7 por 3, llega con
escribir en la pantalla 7/3 Y MATLAB funciona como una calculadora). Para conjuntos de
instrucciones más complejas, se debe crear un fichero con extensión .m (por ejemplo fic.m),
así, cada vez que el usuario escriba fic en la ventana MATLAB, se ejecutarán todas las
instrucciones contenidas en ese fichero. Incluso, como veremos al tratar el apartado de
funciones, ese fichero puede, a su vez, llamar a otros ficheros auxiliares que contengan
nuevas instrucciones.

I. Operaciones básicas.
Matlab puede usarse para realizar las mismas operaciones escalares que se harían con una
calculadora convencional, para operaciones vectoriales y matriciales y para tomar
decisiones lógicas. Para todo ello se pueden definir diferentes operadores.

Operadores aritméticos.
Sirven para operaciones aritméticas más o menos complejas

Símbolo Operación
+ Suma de escalares, vectores o matrices
- Resta de escalares, vectores o matrices
* Producto usual de escalares o de matrices
.* Producto término a término
/ Cociente usual de escalares o matrices
./ Cociente de matrices término a término
^ Potencia de escalares o matriz elevada a un escalar
= igual

Operadores lógicos
Sirven para operaciones lógicas, es decir, cuando deseamos comparar variables, se
necesitan operadores cuyo resultado sea booleano (cierto o falso).
Operador Función que desempeña
< Menor (complejos sólo afecta a partes reales)
<= Menor o igual (sólo afecta a partes reales)
> Mayor (sólo afecta a partes reales)
>= Mayor o igual (sólo afecta a partes reales)
== Igual lógico
∼= Desigualdad

Además se tienen los llamados operadores relacionales:

Operador Función que desempeña


-A Negación Lógica (NOT) o complementario de A
A&B Conjunción lógica (AND) o intersección de A y B
A|B Disyunción lógica (OR) o unión de A y B
xor(A,B) OR exclusivo (XOR) o diferencia simétrica de A y B

Funciones matemáticas.

La librería MATLAB dispone de una gama muy completa de funciones predefinidas


que se corresponden con las funciones matemáticas más utilizadas:

Funciones trigonométricas e hiperbólicas

Función Inversa Hiperbólica Hiperbólica Inversa

sin(Z) asin(Z) sinh(Z) asinh(Z)


cos(Z) acos(Z) cosh(Z) acosh(Z)
tan(Z) atan(Z) tanh(Z) atanh(Z)
sec(Z) asec(Z) sech(Z) asech(Z)
csc(Z) acsc(Z) csch(Z) acsch(Z)
cot(Z) acot(Z) coth(Z) acoth(Z)

Funciones exponenciales

exp(Z) Función exponencial de base e


log(Z) Función Logaritmo neperiano
log10(Z) Función Logaritmo decimal
sqrt(Z) Función Raíz cuadrada

Funciones aleatorias
Cuando se quiere generar un número aleatorio pueden utilizarse la funcione rand.

x=rand

así x tomará cualquier valor comprendido en el intervalo (0,1). Todos los números son
equiprobables.
Ejemplo: Programa que simula el lanzamiento de una moneda al aire para obtener cara o
cruz.

if rand < .5
'cara'
else
'cruz'
end

Funciones específicas de variable numérica

abs(Z) Módulo o valor absoluto


angle(Z) Argumento
ceil(x) Redondea los decimales al mayor entero más cercano
ceil(Z) Aplica la función ceil a real (Z) y a imag(Z)
conj(Z) Complejo conjugado
fix(x) Elimina la parte decimal del real x
fix(Z) Aplica la función fix a real (Z) y a imag(Z)
floor(x) Redondea los decimales al menor entero más cercano
floor(Z) Aplica la función floor a real (Z) y a imag(Z)
imag(Z) Parte imaginaria
real(Z) Parte real
rem(a,b) Da el resto de la división entre los reales a y b
rem(Z1,Z2) Resto de la división de los términos de Z1 y Z2
round(x) El entero más próximo al real x
round(Z) Aplica la función round a real (Z) y a imag(Z)
sign(x) Signo del real x (1 si x>0, -1 si x<0)
sign(Z) Función signo

Funciones Matriciales

expm(Z) Función exponencial matricial por defecto


expm1(Z) Función exponencial matricial en M- fichero
expm2(Z) Función exponencial matricial vía series de Taylos
expm3(Z) Función exponencial matricial vía autovalores
logm(Z) Función logarítmica matricial
sqrtm(Z) Función raíz cuadrada matricial
max(x) Máximo de los elementos de x
min(x) Mínimo de los elementos de x
gcd(x) Máximo común divisor de los elementos de x
lcm(x) Mínimo común múltiplo de los elementos de x
maple(`igcd(x)´) Máximo común divisor de los elementos de x
funm(Z, ‘función’) Aplica la función a la matriz.
II. Operaciones recursivas: Bucles.

Algunas veces se pretende repetir una operación o conjunto de operaciones un número


determinado de veces, para este tipo de tarea se utilizan los llamados bucles. Veremos
diferentes tipos:

Bucles simples

Son extremadamente útiles. Permiten repetir un número determinado de veces un conjunto


de instrucciones. Su sintaxis es la siguiente:

for var = inicio:paso: final


Instrucciones que deben ejecutarse
end

Vemos que el bucle está controlado por tres argumentos: i) inicio. Indica donde comienza
la variable que controla el bucle; ii) final. Indica hasta donde llega la variable que controla
el bucle; iii) paso. Indica en cuanto se incrementa la variable que rige el bucle entre dos
pasadas de bucle sucesivas.

Ejemplo: Haremos un programa que calcula el valor de la función y = a * x 2 + b para todos


los valores de x entre –10 y 10 con un espaciado en x de 0.05.

for x=-10:0.05:10
f=a*x*x+b;
end

en este caso inicio es –10, final es 10 y paso es 0.05

La ejecución del bucle puede interrumpirse en cualquier momento mediante la


instrucción break.

Bucles condicionales
Permiten repetir un conjunto de instrucciones, siempre y cuando se satisfaga una condición
lógica.
Su sintaxis es la siguiente:

while condición
Instrucciones que deben ejecutarse mientras la condición sea cierta.
end

Ejemplo: Haremos un programa que calcula el valor de la función y = a * x 2 + b para todos


los valores de x entre –10 y 10 con un espaciado en x de 0.05. Es el ejemplo anterior pero
en este caso usando while/end en lugar de for/end.
x= -10;
while x<= 10
y=a*x*x+b;
x=x+0.05;
end

la primera linea x= –10 fija la condición inicial, la condición x<= 10 determina la


condición final y x= x+0.05 determina el paso. En este caso ambos bucles son análogos. En
general, el bucle for/end se utiliza cuando las condiciones inicial, final y el incremento
están perfectamente definidos desde el principio y el while/end cuando el bucle se debe
parar si surge cualquier causa durante el cálculo.

Ejemplo: Haremos un programa que calcula el valor de la función y = a * x 2 + b para todos


los valores de x mayores o iguales a –10 con un espaciado en x de 0.05, siempre y cuando
la función y no supere el valor 1000. En este caso no sabemos, a priori, cual es el valor final
de x, por lo que un bucle while/end es más adecuado.

x= -10;
y=a*x*x+b;
while y<= 1000
x=x+0.05;
y=a*x*x+b;
end

III. Operadores condicionales.

Seleccionan entre dos conjuntos alternativos de instrucciones dependiendo de que se


verifique una condición lógica (cuyo resultado es cierto o falso). Si es cierta se llevara a
cabo uno de los dos conjuntos de instrucciones y si no lo es se realizarán las del otro
conjunto. Su sintaxis es de la forma:

if condición
Instrucciones que deben ejecutarse si la condición es cierta.
else
Instrucciones a ejecutar si no se verifica la condición anterior
end

Cuando no hay instrucciones que ejecutar si la condición no se cumple, la sintaxis anterior


se reduce a if … end.

También se puede usar para seleccionar entre varios conjuntos de instrucciones pero en este
caso se necesita más de una condición lógica. La sintaxis queda como:

if condición_1
Instrucciones a ejecutar cuando se verifica la condición 1
elseif condición_2
Instrucciones a ejecutar cuando no se verifica la condición 1 y sí la
condición_2
elseif condición_3
Instrucciones a ejecutar cuando no se verifican las condiciones
anteriores y sí la condición_3

else
Instrucciones a ejecutar cuando no se verifican las condiciones
anteriores
end

Podemos imponer más de una condición o condiciones complejas utilizando los operadores
relacionales (condiciones cuyo resultado es cierto o falso) combinados con operadores
lógicos.
Además de los operadores vistos en la sección I, cabe destacar el uso de any (existe
alguno) y el all (todos), que se suelen aplicar a vectores, devolviendo 1 (verdadero) cuando
algún elemento cumple la condición o cuando la cumplen todos los elementos
respectivamente.
Otras funciones útiles con resultados lógicos son insempty (cierto si el vector está vacío),
isequal (cierto si las matrices son idénticas), isreal, insnan, isfinite, isinf, etc.

Otras estructuras condicionales : swich/case


Permite seleccionar conjuntos alternativos de instrucciones dependiendo del valor de un
argumento común. Dicho argumento debe ser un escalar o una cadena de caracteres. Su
sintaxis es:
switch argumento
case conjunto_1
Instrucciones a ejecutar cuando argumento esta contenido en conjunto_1
case conjunto_2
Instrucciones a ejecutar cuando argumento esta contenido en conjunto_2
case conjunto_3
Instrucciones a ejecutar cuando argumento esta contenido en conjunto_3

otherwise
Instrucciones a ejecutar cuando argumento no pertenece a ningún
conjunto previo
end

IV. Instrucciones de entrada y salida.


Cualquier programa debe permitir una serie de operaciones sencillas pero esenciales,
tales como leer un dato desde el teclado, escribir un dato en la pantalla y leer/escribir datos
de/en un fichero

Si se pretende solicitar una variable por teclado, previa impresión de un mensaje en


pantalla se usa el comando input, así, en los siguientes ejemplos se piden diferentes tipos
de variable:

x1=input('Introduce un mes ','s')


Solicita un mes: enero, febrero, ...., de tal forma que x1 se identificará con ese més a
partir de ese momento. 's' indica que la variable es un string de caracteres.
x2=input('Introduce un numero ')
Solicita un número, de tal forma que x2 se identificará con ese número a partir de ese
momento.

Otros comandos de utilidad son:

error('mensaje') Envía un mensaje a pantalla, informando que ha ocurrido un error y


detiene la ejecución del programa, devolviendo el control al teclado.

echo on/off Activa o desactiva la escritura de cada instrucción del fichero sobre la
pantalla

pause (10) Detiene la ejecución del fichero hasta que se pulse alguna tecla o transcurre
el nº indicado de segundos (10 en este caso).

Entrada y salida de ficheros

Se puede leer/escribir datos de/en un fichero mediante los siguientes comandos

FUNCIONES FSCANF, SSCANF, FPRINTF Y SPRINTF

Estas funciones permiten leer y escribir en ficheros ASCII, es decir, en ficheros


formateados.

La forma general de la función fscanf es la siguiente:

[var1,var2,...] = fscanf(fi,'cadena de control',size)


donde fi es el identificador del fichero (devuelto por la función fopen), y size es un
argumento opcional (si no se quiere se omite) que puede indicar el tamaño del vector o
matriz a leer. La cadena de control va encerrada entre apóstrofos simples, y contiene los
especificadores de formato para las variables:

%d para variables enteras


%s para cadenas de caracteres
%f para variables de punto flotante
%lf para variables de doble precisión

Las funciónes sscanf y fscanf son muy similares pero la entrada de caracteres no proviene
de un fichero sino de una cadena de caracteres.
La función fprintf dirige su salida formateada hacia el fichero indicado por el
identificador. Su forma general es:

fprintf(fi,'cadena de control',var1,var2,...)

La cadena de control contiene los formatos de escritura como muestran los ejemplos
siguientes:

fprintf(fi,'El número de ecuaciones es: %d \n',num)


fprintf(fi,'El determinante es: %lf10.4 \n',n1)

Donde \n indica un salto a la siguiente línea y %lf10.4 es una variable de doble precisión
que se representa con 4 cifras decimales y 10 cifras antes del punto.

De forma análoga, la función sprintf convierte su resultado en una cadena de caracteres que
devuelve como valor de retorno, en vez de enviarlo a un fichero. Un ejemplo:

resultado = sprintf('El cuadrado de %f es %12.4f\n',n,n*n)

donde resultado se forma por concatenación de caracteres. Esta función constituye el


método más general de convertir números en cadenas de caracteres, por ejemplo para
ponerlos como títulos de figuras.

FUNCIONES FREAD Y FWRITE

Las funciones fread y fwrite son análogas a fscanf y fprintf, pero en vez de leer o escribir
en un fichero de texto (ASCII), lo hacen en un fichero binario, que no es legible
directamente por el usuario. Aunque dichos ficheros no se pueden leer y/o modificar con un
editor de textos, tienen la ventaja de que las operaciones de lectura y escritura son mucho
más rápidas, eficientes y precisas.

FUNCIONES FOPEN Y FCLOSE

Antes de leer/escribir ficheros es necesario abrirlos previamente, del mismo modo, una vez
usados, los ficheros deben cerrarse. Las funciones fopen y fclose sirven para abrir y cerrar
ficheros, respectivamente.
La función fopen tiene la forma siguiente:

fi= fopen('filename','c')
donde fi es un valor de retorno que sirve como identificador del fichero y c es un carácter
(o dos) que indica el tipo de operación que se desea realizar. Las opciones más importantes
son las siguientes:

'r' lectura (de read)


'w' escritura reemplazando (de write)
'a' escritura a continuación (de append)
'r+' lectura y escritura

Ejemplo: Supongamos que en un fichero tenemos 5 datos numéricos y en otro otros 5,


crearemos un programa que vaya cogiendo uno a uno los datos del primer fichero, los
multiplique por los del segundo y escriba tanto los datos de esos dos ficheros como el
resultado en un tercer fichero.

%Ejemplo de uso de ficheros

f_entrada1=input('Fichero entrada 1','s') % Pide nombre de 1er fichero


f_entrada2=input('Fichero entrada 2','s') % Pide nombre de 2do fichero

f_salida=input('Fichero salida','s') % Pide nombre de 1er fichero

f1=fopen(f_entrada1,'r'); %Abre ficheros


f2=fopen(f_entrada2,'r');
f3=fopen(f_salida,'w');

for i=1:5
x=fscanf(f1,'%f ',[1 1]); %lee elemento de fichero 1
y=fscanf(f2,'%f ',[1 1]); %lee elemento de fichero 2

z=x*y; %multiplica

fprintf(f3, '%f %f %f \n',x,y,z); %escribe en fichero salida


% el \n significa salto de linea
end

fclose(f1);
fclose(f2);
fclose(f3);

V. Matrices
Se habla en general de una matriz como un conjunto de elementos identificables con una
serie de índices. No debe confundirse una matriz en el sentido matemático como un
conjunto de M filas y N columnas. Realmente, esto es un ejemplo de matriz de orden 2 (se
identifica cada elemento por 2 índices). Así, un vector es una matriz de orden 1 (sólo tiene
un índice) y pueden definirse matrices del orden que se desee.
Hay diversas operaciones que se pueden realizar con matrices, dada una matriz A, las
operaciones más comunes se recogen en la siguiente tabla:
Operación Significado
inv(A) inversa de la matriz A
eig(A) autovalores de la matriz A
A' traspuesta de la matriz A
diag(A) elementos de la diagonal principal
sum(A) suma de los elementos de cada una de las columnas
A(i,j) Elemento ij de la matriz

Además de este uso de matrices con operaciones matemáticas clásicas, las matrices
constituyen un elemento importante en programación, ya que permiten realizar operaciones
recursivas de una forma sencilla en función de los diferentes índices.

VI. Funciones

Como se vio en el apartado de introducción, existe un fichero de extensión .m que lleva las
órdenes a ejecutar, algunas veces, por comodidad y estructuración del programa, ciertas
instrucciones no se encuentran en ese fichero, sino en otros auxiliares que se llaman desde
el fichero principal.

Para el correcto uso de funciones, debe tenerse en cuenta tanto la forma de llamarlas desde
el programa principal, como su sintaxis dentro del programa función:

Programa función: Una función se define mediante un m- fichero (m-file), cuyo nombre
coincide con el de la función. La primera línea ejecutable es la palabra function. Su
sintaxis es

function [argumentos_salida]= nombre_función (argumentos_entrada)

seguida de las instrucciones necesarias. Cuando hay más de un argumento de salida, éstos
deben ir entre corchetes y separados por comas.

La función puede finalizarse en cualquier punto utilizando la instrucción return. Las


variables definidas en la función (salvo los argumentos) son locales. Para que el valor de
una variable sea compartido por varias funciones se emplea la instrucción global, cuya
sintaxis es global variable, y debe aparecer en todas las funciones que la compartan.

Llamada a función desde programa principal:


Se utiliza la sintaxis
[argumentos_salida]= nombre_función (argumentos_entrada)

Ejemplo: Programa que lee de un fichero datos relativos a la fecha (dia y mes) y valores de
temperatura y se pretende que escriba en otro fichero los días transcurridos desde el
principio del año y la temperatura (NOTA: no considera años bisiestos).
f_entrada=input('Fichero entrada ','s') % Pide nombre de fichero de datos
f_salida=input('Fichero salida ','s') % Pide nombre de fichero de datos
f1=fopen(f_entrada,'r'); %Abre fichero
f2=fopen(f_salida,'w'); %Abre fichero

% Llamada a Primera funcion: Calcula los dias que tiene cada mes
[dias_mes]=calendario; % dias_mes es un vector que identifica el numero
% del mes con el numero de dias que tiene

for n=1:100 %leera 100 tripletas de datos dia, mes y T


dia=fscanf(f1,'%f ',[1 1]) %lee dia de fichero
mes=fscanf(f1,'%f ',[1 1]) %lee mes de fichero
T=fscanf(f1,'%f ',[1 1]) %lee temperatura

% Calcula el numero de dias desde ppio del año


[t0]=t_en_dias(mes,dia,dias_mes)
fprintf(f2,’%f %f \n’,t0,T);
end

fclose(f1);
fclose(f2);

end

El fichero t_en_dias.m es de la forma

function [t]=t_en_dias(mes,dia,dias_mes)

t=dia;
for m=1:mes-1
t=t+dias_mes(m);
end

end

y el fichero calendario.m es:

function [dias_mes]=calendario

dias_mes(1)=31;
dias_mes(2)=28;
dias_mes(3)=31;
dias_mes(4)=30;
dias_mes(5)=31;
dias_mes(6)=30;
dias_mes(7)=31;
dias_mes(8)=31;
dias_mes(9)=30;
dias_mes(10)=31;
dias_mes(11)=30;
dias_mes(12)=31;

end

VII. Conexión con sistema operativo.

Existe una serie de instrucciones MATLAB que permiten comunicarse con el sistema
operativo, algunas de las más usuales se resumen en la siguiente tabla.

Comando Resultado
what Muestra todos los m- ficheros del directorio actual
ls Muestra todos los ficheros del directorio actual
type fichero.ext Muestra el contenido del fichero fichero.ext
delete fichero.ext Borra el archivo fichero.ext
cd Cambia de directorio
pwd Muestra el nombre del directorio actual
which fichero.ext Muestra el nombre del directorio donde se encuentra
fichero.ext

VIII. Representación Gráfica

Gráficos bidimensionales (2-D)

Las instrucciones básicas que utiliza Matlab para dibujar la gráfica de una función de una
variable son los siguientes:

plot(X) Representa los puntos (k,Xk). Si X es una matriz, hace lo mismo para cada columna
de la matriz. Si X es un vector complejo, representa Real(X) frente a IMAG(X).
plot(X,Y) Representa el conjunto de puntos (X,Y). Si X o Y son matrices, representa por
filas o columnas los datos de X frente a los datos de Y, dependiendo si el otro vector es fila
o columna. Para valores complejos de X e Y, se ignoran las partes imaginaria. La gráfica de
plot(X,Y,S) con la opciones definidas en S. Usualmente, S se compone de dos caracteres
entre comillas simples(' '), el primero de los cuales fija el color de la línea del gráfico, y el
segundo fija el carácter a usar en el graficado. Los valores posibles de colores y caracteres
son, respectivamente, los siguientes:

plot(X,Y,S) y S podrá contener:

y amarillo . puntos
m magenta o círculos
c cyan x x-marcas
r rojo + signos más
g verde - sólido
b azul * estrellas
w blanco : dos puntos
k negro -- semisólidos

plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3) Combina, sobre los mismos ejes, los gráficos definidos


para las tripletas (Xi, Yi. Si). Se trata de una forma de representar varias funciones sobre el
mismo gráfico.

Titulos, etiquetas, mallas y textos

title(’texto’) Añade el texto como título del gráfico en la parte superior del mismo en
gráficos 2-D y 3-D
xlabel(‘texto’) Sitúa el texto al lado del eje x en gráfico 2-D y 3-D
ylabel(‘texto’) Sitúa el texto al lado del eje y en gráficos 2-D y 3-D
zlabel(‘texto’) Sitúa el texto al lado de eje z en un gráfico 3-D
text(x,y, ‘texto’) Sitúa el texto en el punto (x,y) dentro del gráfico 2-D
text(x,y,z, ‘texto’) Sitúa el texto en el punto (x,y,z) en el gráfico 3-D
grid Sitúa rejillas en los ejes de un gráfico 2-D o 3-D. La opción grid on coloca las rejillas
y
grid off las elimina. La opción grid permuta entre on y off
hold Permite mantener el gráfico existente con todas sus propiedades, de modo que el
siguiente gráfico que se realice se sitúe sobre los mismos ejes y se superponga al existente.
La opción hold on activa la opción y hold off la elimina. La opción hold permuta entre on y
off. Válido para 2-D y 3-D

Algunos de los comandos que permiten manipular los ejes de un gráfico, la colocación del
mismo dentro de la pantalla, su apariencia, su presentación desde distintos puntos de vista,
etc.

axis([xmin xmax ymin ymax]) Sitúa los valores máximo y mínimo para los ejes X e Y en
el gráfico corriente
axis auto Sitúa los ejes en la escala automática por defecto (la dada por xmin=min(x),
xmax=max(x) e y libre)
axis (axis) Congela el escalado de ejes en los límites corrientes, de tal forma que al situar
otro gráfico sobre los mismo ejes (con hold en on), la escala no cambie
axis ij Sitúa coordenadas con el origen en la parte superior izquierda del gráfico
axis(‘square’) Convierte el rectángulo de graficado en un cuadrado, con lo que las figuras
se abomban
axis equal Sitúa el mismo factor de escala para ambos ejes
axis normal Elimina las opciones square y equal
axis off Elimina las etiquetas y marcas de los ejes y las rejillas, manteniendo el título del
gráfico y los textos situados en él con text y gtext
axis on Coloca de nuevo las etiquetas, marcas y rejillas de los ejes
subplot(m,n,p) Divide la ventana gráfica en mxn subventanas y coloca el gráfico corriente
en la ventana p-ésima, empezando a contar por la parte superior izquierda y de izquierda a
derecha hasta acabar la línea, para pasar a la siguiente
ginput(n) Permite recuperar las coordenadas de n puntos de un grafico mediante ratón o
teclado

Gráficos logarítmicos y semilogarítmicos

Los comandos que habilita Matlab para representar gráfico con escalas logarítmicas son los
siguientes:

loglog(X,Y) Realiza los mismos gráficos que plot(X,Y), pero con escala logarítmica en los
dos ejes. El comando loglog presenta las mismas variantes y admite las mismas opciones
que el comando plot
semilogx(X,Y) Realiza los mismos gráficos que plot(X,Y) , pero con escala logarítmica en
el eje x, y escala normal en el eje y (escala semilogarítmica).
semilogy(X,Y) Realiza los mismos gráficos que plot(X,Y), pero con escala logarítmica en
el eje y, y escala normal en el eje x (escala semilogarítmica).

Gráficos en coordenadas polares

Matlab tambien puede trabajar con cordenadas. Su sintaxis es la siguiente:

polar(angulo,radio).

Ejemplo, si se quiere dibujar la función dada en polares ρ=sin(5θ) con θ∈[0,2π], se


hace.

angulo=0:pi/600:2*pi;
radio=sin(5*angulo);
polar(angulo,radio)

Gráficos tridimensionales (3-D)

Los comandos básicos que utiliza Matlab para dibujar gráficos que generan una línea en
tres dimensiones son los siguientes:

plot3(X,Y,Z) Representa el conjunto de puntos (X,Y,Z), donde X,Y y Z son vectores fila.
X,Y y Z pueden ser matrices de la misma dimensión, en cuyo caso se hace una gráfica por
cada tripleta de filas y sobre los mismos ejes. Para valores complejos de X, Y y Z matlab
ignora las partes imaginarias.

plot3(X,Y,Z,S) Gráfica de plot(X,Y,Z) con la opciones definidas en S (color y traza).


Usualmente, S se compone de dos caracteres entre comillas simples, el primero de los
cuales fija el color de la línea del gráfico, y el segundo fija el carácter a usar en el
graficado. Los valores posibles de colores y caracteres se han descrito al explicar el
comando plot.

plot3(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3) Combina, sobre los mismos ejes, los gráficos


definidos para las cauatripletes (Xi, Yi. Zi, Si). Se trata de una forma de representar varias
funciones sobre el mismo gráfico.

Otro gráficos
Existen algunos tipos de gráficos que pueden ser interesantes para ciertas representaciones:

contour si se considera f(x,y) una función que depende de dos coordenadas, por ejemplo
una topografía donde para cada punto x,y se tiene una altura, se pueden representar las
curvas de nivel mediante
contour(x,y,f)
Resultado

pcolor si se considera el ejemplo anterior y se quiere representar una escala de colores en


lugar de las líneas de nivel se usa el comando
pcolor(x,y,f)
Resultado

mesh Si se quiere ver la topografía en 3D se usa el comando


mesh(x,y,f)

Resultado
patch dado dos conjuntos de coordenadas X e Y, la función
patch(X,Y,C)
conecta cada pareja de coordenadas Xi,Yi con sus vecinos, formando un polígono, cuyo
interior colorea. C representa el color. Este comando es especialmente adecuado para
representación da mapas.

quiver Si se tiene un campo vectorial 2D, donde a cada punto del espacio X,Y le
corresponde un vector U,V. Se puede representar ese campo mediante:
quiver(X,Y,U,V)

quiver3 Es equivalente al anterior, pero en 3D.


quiver3(X,Y,Z,U,V,W)