4.1 Operaciones Aritméticas(CONTENIDO)
Escalar | Matriz | Vector | Descripción |
+ | + | + | Adición |
- | - | - | Sustracción |
* | * | .* | Multiplicación |
/ | / | ./ | División hacia la derecha |
\ | \ | \. | División hacia la izquierda |
^ | ` | .' | Transposición |
Ejemplos:
Precisión utilizada - Aproximadamente 16 dígitos significativos en computadoras utilizando aritmética flotante IEEE. El rango aproximado es 10^-308 a 10^308.
Formatos de salida:
4/3
a) format short
1.3333
b) format short e
1.3333e+00
c) format long
1.33333333333333
d) format long e
1.33333333333333e00
e) format bank
1.33
f) format hex
3ff5555555555555
4.2 Operadores relacionales (CONTENIDO)
< |
memor que |
<= | menor o igual a |
> | mayor que |
>= | mayor o igual a |
== | igual a |
=~ | no igual a |
Ejemplos:
if n< maxn
...
if n>=0, break, end
4.3 Operadores lógicos(CONTENIDO)
& |
And |
| | Or |
~ | Not |
Ejemplo:
if (a>b) & flag
...
4.4 Caracteres especiales (CONTENIDO)
[ ] |
Se utilizan para formar vectores y matrices |
( ) | Define precedencia en expresiones aritméticas. Encierra argumentos de funciones en forma usual |
, | Separador de elementos de una matriz, argumentos de funciones y declaraciones en líneas con declaraciones múltiples |
; | Termina renglones de una matriz, separador de declaraciones |
% | Comentario |
Ejemplos:
[6.0 9.0 3.4 ]
sqrt(2)
for i=1:n, a(i)=0, end
for i=1:n; a(i)=0; end
% inicia vector a en 0
Condicionales adicionales aplicadas a matrices:
- Declaración any
Regresa el valor 1 (verdadero) si cualquiera de los elementos de la
matriz satisface la condición.
Sintaxis:
if any (x<0.1)
declaracion 1;
...
declaración n;
end
- Declaración all
Regresa el valor 1, si todos los elementos de la matriz satisfacen
la condición.
Sintaxis:
if all (A<0.1)
declaración 1,
...
declaración n
end
4.5 Control de flujo (CONTENIDO)
4.5.1 Declaración FOR simple
Sintaxis
for variable=incio:paso:final
declaración 1;
...
declaración n;
end
for variable=inicio:final
declaración 1;
...
declaración n;
end
Ejemplo:
for i=1:n
c(i)=a(i)*b(i);
end
o
for i=1:n; c(i)=a(i)*b(i); end
4.5.2 Declaración FOR anidada.
Sintaxis
for variable 1 = inicio1:paso1:fin1
for variable2 = inicio2:paso2:fin2
declaración 1;
...
declaración n;
end
end
Ej.
y=1
for t1=0:0.1:1
for t2=1:-0.1:0
y(1)=sin(t1*t2)
end
i=i+1;
end
4.5.3 Declaración WHILE
Sintaxis:
while expresion
proposición 1;
...
proposición 2;
end
Ejs.
e=1.0;
while (1.0+e)>1.0001
e=e/2.0;
end
it=1; t=0; wo=2.0*pi*60.0;
while it<=npts, ut=sin(wo*t);t=t+dt;end
4.5.4 Declaraciones IF, ELSE, ELSEIF
y BREAK
Sintaxis
a) if expresión
proposición 1;
...
proposición n;
end
b) if expresión
proposición 1;
...
proposición n;
else
proposición 1;
...
proposición m;
end
c) if expresión
proposición 1;
...
proposición n;
elseif
proposición 1;
...
proposición m;
else
proposición 1;
...
proposición r;
end
d) if expresión, break, end
Ejs:
if dv(i) > maxer
maxer=dv(i);
nmaxe=i;
end
sum=0.0; y=1;
while i<=so
n=input(`Introduzca n, interrumpe con valor negativo `);
if n<0, break, end;
if n==0
sum=sum+n;
elseif n<=10
sum=sum+n/2;
else
sum=sum+n/10;
end
end
4.6 Algebra Matricial (CONTENIDO)
Declaraciones
Creación de una matriz
Ej.
Modificación individual de elementos
Ejs:
Modificaciones adicionales de una matriz
Ej.
- Conversión de una matriz en un vector
- Modificación de los elementos
- Generación de vectores con :
Ejs.
- Acceso a submatrices contiguas y no contiguas
Ej.
Si la matriz original A es de 10*10, entonces:
A(1:3,5) |
matriz de 3x1 que tiene los tres primeros elementos de la columna 5 de A |
A(1:3, 5:9) | matriz de 3x4 que tiene los tres primeros renglones y las columnas de 5 a 9 de A. |
A(:,5) | quinta columna de A |
A(1:5,:) | primeros cinco renglones de A |
A(:,[4 6])=B(:,1:2) | remplaza la cuarta y sexta columnas de A con las dos primeras de A |
- Matrices vacias
La declaración
x = [ ]
asigna una matriz de dimensión 0x0 a x
Para la matriz A considerada previamente
A(:,[3,5]=[ ] borra columnas 3 y 5 de A
A([3,5 ],:)=[ ] borra renglones 3 y 5 de A
- Declaración de matrices complejas
A=[1 2; 3 4] + i*[5 6 ; 7 8]
o
A=[1 2; 3 4] + i*[5 6 ; 7 8]
o
A=[1+5i 2+6i; 3+7i 4+8i]
A =
1.0000 + 5.0000i 2.0000 + 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i
Generación de tablas
- Valores y vectores característicos: eig(A)
v - Vectores característicos
d - valores característicos
Exponencial de una matriz: expm(A)
poly(A) - Ecuación característica
de la matriz A
Ej.
roots(p) - raices de la ecuación característica
OTRAS FUNCIONES
tril(A) Matriz triangular inferior
triu(A) Matriz triangular superior
pascal Triangulo de Pascal
tocplitz Tocplitz
Declaración function
Sintaxis:
function nombre_1=nombre_2(parametro_1, ..., parametro_n)
Ejs:
function y=promedio(x)
function i=inodal(t,v)
function xpunto=vdpol(t,x)
xpunto=zeros(2,1);
xpunto(1)=x(1).*(1-x(2).^2)-x(2);
xpunto(2)=x(1);
ode23 Método de Runge-Kutta de tercer/cuarto
orden
ode45 Método de Runge-Kutta de cuarto/quinto
orden
to=0; tf=10;
[t,x]=ode23(`edif',to,tf,xo);
[t,x]=ode23(`deriv',to,tf,xo);
ode45
[t,x]=ode23(`deriv',to,tf,xo,to1,trace);
ode45
trace => 0 - no resuntados intermedios
1 - resultados intermedios
default tol: ode23 -> 1.0e-03
ode45 -> 1.oe-06
4.8 Archivos de E/S (CONTENIDO)
- Declaración fopen
Sintaxis
id = fopen(`nombre.dat', `permiso')
donde permiso puede ser:
`r' |
Abre archivo para lectura |
`r+ | Abre archivo para lectura y escritura |
`w' | Borra el contenido del archivo existente o crea un nuevo archivo y lo abre para escritura |
`w+' | Idem que `w' únicamente que el archivo se abre para lectura y escritura |
`a' | Crea y abre un nuevo archivo o abre un archivo |
`a+' | Idem que `a' únicamente que el archivo es abierto para lectura y escritura |
Ejemplo
fid = fopen(`archivo.dat','r')
fid = -1, error
0, lectura/escritura normal
[fid, mensaje = fopen(`archivo.dat','r')
Declaración fclose
Sintaxis
status = fclose(fid)
o
status = fclose (`all') - cierra todos los archivos abiertos
Declaración fread
Lee un archivo abierto con una precisión indicada
Sintaxis
fread(fid,registros,'precision')
registros
`char' o `uchar'
`short' o `long'
`float' o `double'
Ejemplo:
A = fread(fid,10,'float')
Declaración fwrite
Sintaxis
fwrite(fid,A,'short')
Declaración fprintf
Salida con formato
Ejs:
fprintf(fid,'titulo\n');
fprintf(fid,'%f %12.7f\n', y);
Formato
%s - cadena decimal
%d - número decimal
%f - punto flotante
% g - formato g
4.9 Variables globales (CONTENIDO)
- Son variables, de las cuales una sola copia es compartida por el
programa principal y sus funciones.
Sintaxis:
global variable1, ..., variable_N
Ej.
function x=ccdifs(t,x)
global ka,kb
xp=[x(1)-ka*x(1)*x(2); -x(2)+kb*x(1)*x(2)];
...
global ka,kb
ka=0.01
kb=0.02
[t,x]=ode23('ccdifs',0,10,[1:1]);
4.10 Vectorización de algoritmos
y estructuras (for, while) MATLAB (CONTENIDO)
- Permite incrementar la velocidad de proceso de MATLAB
Sintaxis
variable=inicio:incremento:final
Ej.
i=1, wo=2*pi*fo;
for t=0:dt:per
f(i)=sin(wo*t);
i=i+1;
end
ó
t=0:dt:per;
fi=sin(wo*t);
4.11 Gráficos (CONTENIDO)
4.11.1 Gráficos en dos dimensiones
- Cada función acepta los datos de entrada en forma de vectores
y matrices y autom!ticamente escala los ejes para acomodarlos.
plot crea un dibujo de vectores o
columnas de matrices
loglog crea un dibujo usando escalas
logarítmicas para ambos ejes
semilogx crea un dibujo usando una
escala logarítmica para el eje x,
y una escala lineal para el eje y
semilogy crea un dibujo usando una
escala logarítmica para el eje y,
y una escala lineal para el eje x
title incluye un título para una
gráfica
xlabel incluye una etiqueta para eje x
ylabel incluye uan etiqueta para eje y
text despliega un texto en una
posición especificada
gtext incluye texto en la gráfica
utilizando el ratón
grid activa líneas en forma de malla
plot
Sintaxis:
a) plot(y)
b) plot(x,y)
c) plot(x,y,'tipo_línea')
d) plot(x1,y1,'tipo_línea_1',x2,y2,'tipo_línea_2', ...
, xn,yn,'tipo_línea_n')
a) Dibuja las columnas de y contra su índice
Tipos de línea
Símbolo Color
y amarillo
m magenta
c cyan (azul claro)
r rojo
g verde
b azul
w blanco
k negro
Símbolo Estilo de línea
. punto
o circulo
x marca
+ mas
* asterisco
- sólido
: punteado
-. segmento punto
-- segmento
Ej.
t=0:pi/200:2*pi;x=sin(t);y1=sin(t+0.5);y2=sin(t+1.0);...
plot(x,y1,'r-',x,yz,'g--'); title('Angulo difuso'); xlabel('x=sin(t)');
...
ylabel('y=sin(t+)')
hold Permite adicionar líneas al dibujo previo
Ej.
plot(x); hold on; plot(y',':');plot(yz,'-.')
loglog
Sintaxis
a) loglog(x,y)
b) loglog(x,y,'tipo_línea')
c)loglog(x1',y1','tipo_línea_1',...,
xn,yn,'tipo_línea_n')
Ej.
x=logspace(-1,3); loglog(x,exp(x))
donde logspace tiene las formas:
logspace(a,b)
logspace(a,b,n)
a,b exponentes de los límites. Es decir, 10^a y 10^b
semilog(x), semilog(y)
Sintaxis
a) semilogx(x,y)
b) semilogy(x,y)
Ej.
x=0:.1:20; semilogy(x,10.^x)
Archivo peaks
Archivo m que genera una matriz de datos
Los datos están basados en una función de dos variables
x,y.
El tamaño de la matriz depende del argumento de peaks
z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...
- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...
- 1/3*exp(-(x+1).^2 - y.^2)
Ej.
M=peaks(20);
crea una matriz de 20x20. Si el argumento no se define, el orden=49
Ej.
peaks
plot(peaks)
plot(peaks,rot90(peaks))
donde:
rot90 puede tener 2 formas:
rot90(A) - rota la matriz A 90 grados en sentido contrario a las manecillas
del reloj.
rot90(A,k) - rota la matriz A k*90 grados en sentido contrario a las
manecillas del reloj.
Ej.
fill Dibuja el area interior de una curva
en determinado color
Sintaxis:
a) fill(x,y,'c')
b) fill(x1,y1,'c1',...,xn,yn,cn)
Ej.
t=0:0.5:2*pi; x=sin(t); fill(t,x,'b')
t=0:0.5:2*pi; x=sin(t); y=cos(t); fill(y,x,'r')
subplot Dibuja la pantalla en mxn subdivisioens,
numeradas por el parámetro p, de izquierda a derecha, iniciando
por el renglón superior
Sintaxis:
subplot(m,n,p)
Ejemplo:
vt=smvars(:,1);
it=smvars(:,2);
rang=smvars(:,3);
ikd=smvars(:,4);
subplot(2,2,1);
plot(vt)
subplot(2,2,2)
plot(it)
suplot(2,2,3)
plot(rang)
subplot(2,2,4)
plot(ikd)
bar Crea una gráfica de barras
Sintaxis:
a) bar(y);
b) bar(x,y);
c) [xb,yb]=bar(y); => plot(xb,yb)
d) [xb,yb]=bar(x,y); => plot(xb,yb)
Ej.
x=-2.8:0.2:2.8
bar(x,exp(-x.*x)
Nota: Los valores de x deben estar igualmente espaciados
stairs Misma que bar, únicamente sin líneas internas
fplot Dibuja la gráfica de una función
Sintaxis:
a) fplot(`función', [inicio,final])
b) fplot(`función', [inicio,final],n)
c) fplot(`función', [inicio,final],n,ángulo)
d) [x,y]=fplot(`función', [inicio,final]) => plot(x,y)
n - número de puntos
ángulo - ángulo entre segmentos sucesivos de la función
Ej.
fplot(`sin',[0,pi])
fplot(`tanh',[-2 2])
function y=func(x)
y=200*sin(x(:))./x(:);
fplot(`func',[-30 30],60,2)
polar Dibujo en coordenadas polares
Sintaxis:
a) polar(ángulo,radio)
b) polar(ángulo, radio, `tipo_línea')
Ej.
t=0:0.01:2*pi;
polar(t,sin(5*t))
colormap Colorea con sombreado el interior
de una curva o polígono
colormap(colorbase)
donde colorbase es:
gray
hot
cool
copper
pink
Ej.
t=0:0.05:2*pi; x=sin(t); y=cos(t); colormap(hot(130)); ...
Nota: 130 es opcional el rango 0-255
fill(y,x,x) => sombreado horizontal
fill(y,x,y) => sombreado vertical
4.11.2 Gráficos en 3 dimensiones
plot3 Dibuja líneas y puntos en 3
dimensiones
Sintaxis:
a) plot3(x,y,z)
b) plot3(x,y,z)
c) plot3(x,y,z,'tipo_línea)
d) plot3(x1,y1,z1,'tipo_línea',...,xn,yn,zn,'tipo_línea')
Ejes de referencia
Ej.
t=0:0.05:10*pi; plot3(sin(t),cos(t),t)
contour, contour3 Genera dibujos compuestos
de líneas de valores de datos constantes obtenidos de una matriz
de entrada
Sintaxis:
a) contour(z)
b) contour(z,n)
c) contour(x,y,z)
d) contour(x,y,z,n)
Ej.
contour(peeks)
contour(peeks,30)
contour3 Misma función de contour
en 3 dimensiones
Sintaxis:
a) contour3(z)
b) contour3(z,n)
c) contour3(x,y,z)
d) contour3(x,y,z,n)
Ej.
contour3(peaks,30)
meshgrid Genera arreglos X y Y para dibujos
en 3 dimensiones
Sintaxis:
a) [X,Y] = meshgrid(x,y)
b) [X,Y] = meshgrid(x) => meshgrid(x,y)
Ej. Evalue y dibuje la funcion z=x*exp(-x^2-y^2) sobre el rango -2<=x<=2,
-2<=y<=2
[X,Y]=meshgrid(-2:2:2); z=x.*exp(-x^2-y^2); ...
mesh(Z)
x=-8:0.5,8; y=x; [x,y]=meshgrid(x,y);...
R=sqrt(x.^2+y.^2)+0.001; z=sin(R)./R;...
mesh(z)
mesh, meshc y meshz
Dibujan
una superficie de malla tridimensional, crando una perspectiva del dibujo,
sobre y bajo el plano de referencia.
Sintaxis:
a) mesh(x,y,z,c)
b) mesh(x,y,z)
c) mesh(x,y,z,c)
d) mesh(x,y,z)
e) mesh(z,c)
f) mesh(z)
g) meshc(...) => mismo que mesh
h) meshc(...) => mismo que mesh
meshc Añade un plano de contorno debajo del dibujo
meshz Añade un plano de referencia o cortina al dibujo
Ejemplo:
[x,y] = meshgrid(-3:2:3); z=peaks(x,y); meshc(x,y,z)
[x,y] = meshgrid(-3:2:3); z=peaks(x,y); meshz(x,y,z)
surf, surfc Crean
superficies sombreadas en 3 dimensiones
Sintaxis:
a) surf(x,y,z,c)
b) surf(x,y,z)
c) surf(x,y,z,c)
d) surf(x,y,z)
e) surf(z,c)
f) surf(z)
g) surfc(...) => misma sintaxis que surf
Ej.
[x,y]=meshgrid(-3:.2:3); z=peaks(x,y); surf(x,y,z)
k=5; n=2^k-1; [x,y,z]=sphere(n); c=hadamard(2^k);...
surf(x,y,z,c); colormap(hot)
donde:
hadamard: matriz hadamard
compuesta de 1's y -1's, empleada en procesamiento de señales
y análisis numérico
Ej. (matriz de 4*4)
1 1 1 1
1 -1 1 -1
1 1 -1 -1
1 -1 -1 1
sphere Genera una esfera
[x,y,z] = sphere(n)
n - número de meridianos
Ej.
[x,y,z]=sphere(20);
mesh(x,y,z)
o con :
colormap(hot)
surfl superficie sombreada tridimensioanl
con efecto de reflexión de luz
Sintaxis:
a) surfl(z)
b) surfl(z,s)
c) surfl(x,y,z)
d) surfl(x,y,z,s)
s - dirección de la luz
Ej.
[x,y]=meshgrid(-3:0.01:3);
z=peaks(x,y);
surfl(x,y,z)
shading Establece las propiedades de sombreado
con color
Sintaxis
shading faceted
shading interp
shading flat
shading flat - cada segmento de la superficie tiene un valor constante determinado por el color de los puntos extremos del segmento o sus esquinas
shading interp - el color en cada segmento varia linealmente e interpolo los valores extremos o esquinas
shading faceted - utiliza sombreado "flat" con líneas de malla negras superpuestas
Para el ejemplo anterior, añadiendo:
shading interp
y posteriormente:
colormap(gray);
axis Escala y apariencia de los ejes
Sintaxis:
a) axis([xmin, xmax, ymin, ymax])
b) axis([xmin, xmax, ymin, ymax, zmin, zmax])
c) axis(`auto')
d) axis(`ij')
e) axis(`xy')
f) axis(`square')
g) axis(`equal')
h) axis(`off')
i) axis(`on')
donde:
axis(`auto') realiza el escalamiento de ejes a
su modo de autoescalamiento
por default
axis(`ij') dibuja nuevamente la gráfica.
El eje y es vertical y es
numerado de arriba hacia abajo.
El eje j es horizontal y es
numerado de izquierda a
derecha.
axis(`xy') regresa la forma de ejes
cartesianos que existe por
default. El eje x es horizontal y
se numera de izquierda a
derecha. El eje y es vertical y se
numera de abajo hacia arriba
axis(`square') determina que la región de los
ejes es cuadrada
axis(`equal') indica que los factores de
escalamiento y marcas
incrementales a lo largo de los
ejes x y y son iguales.
axis(`off') desactiva las etiquetas de los
ejes y las marcas
axis(`on') activa las etiquetas de los ejes y
las marcas
Para el ejemplo último:
...
axis([-3 3 -3 3 -8 8])
fill3 colorea polígonos de 3 dimensiones
a) fill3(x,y,z,'c')
b) fill3(x1,y1,z1,...,xn,yn,zn)
Ej.
colormap(hot)
fill3(rand(3,4), rand(3,4), rand(3,4), rand(3,4))
donde:
rand matrices y números aleatorios
distribuidos uniformemente
Sintaxis:
a) rand(n) - matriz de nxn
b) rnad(m,n) - matriz de mxn
Ej.
fill3(rand(20), rand(20), rand(20), rand(20))
load carga en el area de trabajo un archivo
(imagen, sonido, datos, etc)
Sintaxis
a) load archivo
b) load archivo.ext
donde:
ext - extensión
Ej.
load clown
image crea un objeto imagen y lo despliega
Sintaxis:
a) image(x)
b) image(x,y,x)
c) despliega la matriz c como una imagen
d) especifica los límites de los datos de la imagen en los ejes
x e y. En b), x e y son vectores
Ej.
load clown
colormap(map)
image(x)
brighten hace más brillante o más
obscura la imagen
Sintaxis:
a) brighten(alfa)
b) brighten(map,alfa)
donde:
0<alfa<1 más brillante
-1<alfa<0 más obscuro
Del ejemplo anterior:
...
brighten(0.6)
ó brighten(-0.6)
sound convierte un vector en sonido (en computadoras
sparc y macintosh)
Sintaxis
a) sound(y)
b) sound(y,Fs)
donde:
Fs frecuencia especificada en Hz
Ej.
load train
sound(y,Fs)
t=(0:length(y)-1)/Fs;
plot(t,y)
4.12 INDICE ALFABETICO (CONTENIDO)
axis, all, any, bar, break, brighten, clf, for, colormap, conj, contour, contour3, det, diag, else, elseif, eig, expm, fclose, fill, fill3, fft, fftn, function, fopen, fplot, fread, fwrite, grid, gtext, hadamard, hold, if, ifft, ifftn, imag, image, inv, loglog, load, lu, mesh, meshc, meshz, meshgrid, ode23, ode45, peaks, plot, plot3, poly, reshape, rot90, sphere, tril, triu, pascal, polar, real, toplitz, rand, reshape, semilog, semilogy, shading (flat interp faceted), size, sound, stairs, subplot, surf, surfc, surfl, text, title, xlabel, ylabel, while, zeros.