Вы находитесь на странице: 1из 16

INTRODUCCIN A MATLAB

1.

OBJETIVOS
Conocer la operacin y el uso del Matlab
Comprender como se genera y grafican seales continuas y discretas en el tiempo
Revisar las diferentes modalidades que existen para graficar una seal.

2.

CDIDOS Y GRAFICAS
IX. SEALES CONTINUAS (Hacer esta parte de la
prctica en un archivo *.m)
T=0.05
t=[-1:T:1]
% %''''''''''''''''''''''''''''
%
x=exp(-t)
plot(t,x,'*y')

a)

% hold on

T=0.05;
% Separacin temporal entre muestras
t = [-1:T:1]; % Define los intervalos
x = exp(-x); % Funcin real decreciente
plot(t,x,'*b') % Grafica
grid
% Aade cuadricula al grafico

% %help plot %ms detalles del comando plot escriba


%%
%%
% % %-------------------------%%

% w=exp(t);
% plot(t,w,'-r')
%

2.5

%
% % %clf

% hold on
%%
% % % plot(t,w,':r')

1.5

% % grid;
%

% %------------------------%
% %figure(2)
%

0.5

%- - -x1(t)=e-2t y x2(t)=e-t/2 - - -

0
-1

% x1=exp(-2*t)

-0.8

% x2=exp(-t/2)

b)

% plot(t,x1,'-b',t,x2,'--g')

T=0.05;
t = [-1:T:1];
w = exp(t);
plot(t,w,':r')
grid

% hold on
% %-----------------------------------------% % abs(t)
% %x3= exp(-2*abs(t))
% % plot(t,x3,':m')

-0.6

-0.4

-0.2

0.2

0.4

0.6

% Separacin temporal entre muestras


% Define los intervalos
% Funcin real decreciente
% Grafica
% Aade cuadricula al grafico

0.8

8
7
3

6
5

2.5

3
1.5

2
1

1
0
-1

0.5

0
-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.2

0.4

0.6

0.8

d)
-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

abs(t)
x3= exp(-2*abs(t))
plot(t,x3,':m')
grid

c)
figure(1)
x1=exp(-2*t);
x2=exp(-t/2);
plot (t,x1,'-y',t,x2,'--g')

1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
-1

-0.8

-0.6

-0.4

-0.2

% subplot(2,1,1)
X. SEALES DISCRETAS (Hacer esta parte de la prctica

y=exp(j*pi*n/5-pi/3);

en un archivo *.m)

% stem(n,y1, 'g');
% % hold on

n=[-10:10]

% subplot(2,1,2)

x=(.9).^n

% y2=exp(0*j*pi*n/5-pi/3);

% stem(n,x,'r')

% stem(n,y2, 'r');

% axis([-10 10 -0.4 0.4] )

% w=(1.11).^n;

% hold on

% stem(n,w,'y')
%

z=x.*y;

% x3=(0.9).^abs(n);

stem(n,z);

% stem(n,x3);

%%

0.6

0.8

% subplot(2,1,1)

% v1=cos(pi*n/5-pi/3);

% stem(n,v1imp,'r')

% stem(n,v1,'y')

% hold on

% hold on

%%

%%

% v2=sin(pi*n/5+pi/4);

% v1par(find(n= =0)) %Sin punto y coma al final

% stem(n,v2,'r')

% stem(n,v1par,'y')

% hold on

% hold on

% v1imp(find(n= =0))

% stem(n,v1imp,'y')

%%

% hold on

%%

%%%

% subplot(2,1,2)

% u=[zeros(1,10) ones(1,11)] %Escaln unitario discreto

% v1par=0.5*(v1+fliplr(v1));

% stem(n,u);

% stem(n,v1par,'y')

% hold on

% e=x.*u;

% stem(n,e);

% v1imp=0.5*(v1-fliplr(v1));

1?
n=[-10:10]
%
x=(.9).^n
stem(n,x,'r')

1.2
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-10

-8

-6

-4

-2

2?
3.

PROGRAMACIN DE ARCHIVOS M EN MATLAB

10

%Ficheros .m (script: almacenan comandos o secuencias

clear all

de comandos)

type mimat %lista el fichero mimat.m


whos
mimat %ejecuta mimat

PATH BROWSER: ESTABLECER EL CAMINO DE

whos

BSQUEDA (SEARCH PATH)

MATLAB puede llamar a una gran variedad de funciones,

B = [A A+32; A+48 A+16]

tanto propias como programadas por los usuarios. A veces

help sum

puede incluso haber funciones distintas que tienen el

sum(B) % !! Se trata de una matriz "magica".

mismo nombre. Interesa saber cules son las reglas que


determinan qu funcin o qu fichero *.m es el que se va a
ejecutar cuando su nombre aparezca en una lnea de
comandos del programa. Esto queda determinado por el

%=======================
%

FICHEROS .m (como simples contenedores de

camino de bsqueda (search path) que el programa utiliza

secuencias de comandos)

cuando encuentra el nombre de una funcin.

%%En la ventana de matlab seleccionar del menu File

El search path de MATLAB es una lista de directorios que

New->M-File

se puede ver y modificar a partir de la lnea de comandos,

%%Copiar en el fichero:

o utilizando el Path Browser. Para modificar desde la linea


de comandos se ejecuta:

%miplot calcula un cero del seno proximo a 4

path(path, 'direccin a incluir')

%y el minimo de la funcion entre 4 y 6

Si queremos por ejemplo que nuestra disquetera sea

fplot('sin',[0,2*pi]);

tomada como uno de los directorios de trabajo:

z = fzero('sin',4);

path(path,'a:\')

hold on; plot(z,0,'r*'); hold of

El comando path hace que se escriba el search path de

m = fmin('sin',4.0,6.0);

MATLAB (el resultado depende de en qu directorio est

hold on; plot(m,sin(m),'go'); hold of

instalado MATLAB):

disp ('

cero en rojo, minimo en verde');

path
%%almacenarlo como miplot.m y ejecutar:

MATLABPATH

miplot
c:\matlab\toolbox\local

axis ( [0 6.2832 -1.50 1.50] )

c:\matlab\toolbox\matlab\datafun

% Se ejecutan secuencialmente los comandos contenidos

c:\matlab\toolbox\matlab\elfun

en el fichero

.... (por brevedad se omiten muchas de las lneas de


salida)

%=======================

c:\matlab\toolbox\matlab\dde

%FICHEROS .m (incluyendo programacion)

c:\matlab\toolbox\matlab\demos

%%En la ventana de matlab seleccionar del menu File

c:\matlab\toolbox\wintools

New->M-File
%%Copiar en el fichero:

Ejemplos de ficheros .m
%%En la ventana de matlab seleccionar del menu File

% calculo de la precision.

New->M-File

% bucle realizando la suma 1.0 + 2^(-k), incrementando k

%%Copiar en el fichero:

% cuando el resultado (>1 para bajo k) se hace igual a 1,


% hemos llegado al menor numero, eps, que constituye la
menor distancia

A = [ ...
16.0

3.0

2.0

13.0

5.0

10.0

11.0

8.0

9.0

6.0

7.0

4.0

15.0

14.0

12.0
1.0 ];

%donde los 3 puntos significan que la 1a linea contina

% entre un numero real y el siguiente real (segun


representacion de la maquina)
%Epsilon
ep=1
while ((1.0 + 2^(-ep)) > 1.0)
ep = ep+1;

%%almacenar con el nombre mimat.m

end

%%Ejecutar secuencialmente:

% Resultados:

disp ('numero de bits en la mantisa : ')

matlab.mat

disp (ep-1)

clear

disp ('epsilon del computador : ')

whos

disp (2^(-(ep-1)))

load mimat %carga de mimat.dat el workspace


whos
A

%%almacenarlo como epsilon.m


%%ejecutar:
epsilon

%=======================

eps

%% Polinomios: ejecutar secuencialmente


clear all

%=======================

raices=[1 2]

% FICHERO .m para definir una nueva funcion

p=poly(raices) %genera un polinomio a partir de sus


raices

utilizable
% desde el entorno Matlab, con argumentos de entrada
y salida.
%% En la ventana de matlab seleccionar del menu File
New->M-File
%% Copiar en el editor del fichero:

P=poly2sym(p) %Calculo simbolico


solve(P)

%calculo de raices del polinomio

(simbolico) P
roots(p)
dif(P)
int(P)

function [b,p] = mihorner(a,x0)


% forma de definir una funcion [b p] = mihorner(a,x0).
% el nombre de la funcion sera el del archivo que la
guarde. horner.m en este caso
% HORNER se aplica a un polinomio a (vector fila)
% dando como resultado el cociente b (vector fila) de
dividirlo por (x-x0)
% y el resto p=a(x0): a(x)=(x-x0)*b + p
% variables de entrada: a, x0

% Ajustes por polinomios:


x=0:.1:2
y=polyval(p,x)
alea=(rand(1,length(x))-0.5)*0.1 %vector de
numeros aleatorios entre (-0.5 y 0.5)*0.1
yr=y+alea %datos con error aleatorio
[pf s]=polyfit(x,yr,2) %ajusta a datos yr y
almacena en pf
rp=roots(p) %calcula raices de p

% variables de salida: b, p

rpf=roots(pf)

yt=polyval(pf,x)

b(size(a,2) - 1) = a(size(a,2));

plot(x,y,'b-',x,yr,'ro',x,yt,'b*')

for k=(size(a,2) -2) : -1 : 1

b(k) = a(k+1) + x0*b(k+1);

pf

end
p = a(1) + x0*b(1);

%=======================

%%almacenarlo como mihorner.m (opcion por defecto)


%%ejecutar:

%Solucion de ecuaciones
solve ('x^2=9')
[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')

clear all

[u,v] = solve('a*u^2 + v^2 = 0','u - v = 1')

dividendo = [1 2 3 -2]
x0=2

str=poly2str(p,'x')

%el divisor es (x-x0)

[cociente resto]= mihorner(dividendo,x0)


%=======================
%Ficheros .mat (almacenan variables del workspace)
mimat %ejcuta mimat.m
save mimat A %almacena en mimat.dat la variable A
dir
% observese que se ha creado el fichero mimat.dat
% "save", sin mas, almacena todo el workspace en

%Solucion de Eq. diferenciales


S = dsolve('Dx = y', 'Dy = -x', 'x(0)=0', 'y(0)=1')
S.x

S es una estructura con dos

elementos S.x S.y


S.y
%=======================
% Transformada de Fourier
clear all
Fs=100
t=(1:100)/Fs
s1=sin(2*pi*t*5);

s2=sin(2*pi*t*15);

figure;

s3=sin(2*pi*t*30);

w=(0:255)/256*(Fs/2);

s=s1+s2+s3;

plot(w,abs(S(1:256)))

plot(t,s)
S=ft(s,512);

%=======================

Tipos de datos
MATLAB es un programa preparado para trabajar con vectores y matrices. Como caso particular tambin trabaja con
variables escalares (matrices de dimensin 1). MATLAB trabaja siempre en doble precisin, es decir guardando cada dato en 8
bytes, con unas 15 cifras decimales exactas. Ya se ver ms adelante que tambin puede trabajar con cadenas de caracteres
(strings) y, desde la versin 5.0, tambin con otros tipos de datos: Matrices de ms dos dimensiones, matrices dispersas,
vectores y matrices de celdas, estructuras y clases y objetos. Algunos de estos tipos de datos ms avanzados se vern en la
ltima parte de este manual.
3.3.1. NMEROS REALES DE DOBLE PRECISIN
Los elementos constitutivos de vectores y matrices son nmeros reales almacenados en 8 bytes (53 bits para la mantisa y 11
para el exponente de 2; entre 15 y 16 cifras decimales equivalentes). Es importante saber cmo trabaja MATLAB con estos
nmeros y los casos especiales que presentan.
MATLAB mantiene una forma especial para los nmeros muy grandes (ms grandes que los que es capaz de representar), que
son considerados como infinito. Por ejemplo, obsrvese cmo responde el programa al ejecutar el siguiente comando:
>> 1.0/0.0
Warning: Divide by zero
ans =
Inf
As pues, para MATLAB el infinito se representa como inf Inf. MATLAB tiene tambin una representacin especial para los
resultados que no estn definidos como nmeros. Por ejemplo, ejectense los siguientes comandos y obsrvense las
respuestas obtenidas:
>> 0/0
Warning: Divide by zero
ans =
NaN
>> inf/inf
ans =
NaN
En ambos casos la respuesta es NaN, que es la abreviatura de Not a Number. Este tipo de respuesta, as como la de Inf, son
enormemente importantes en MATLAB, pues permiten controlar la fiabilidad de los resultados de los clculos matriciales. Los
NaN se propagan al realizar con ellos cualquier operacin aritmtica, en el sentido de que, por ejemplo, cualquier nmero
sumado a un NaN da otro NaN. MATLAB tiene esto en cuenta. Algo parecido sucede con los Inf.
MATLAB dispone de tres funciones tiles relacionadas con las operaciones de coma flotante. Estas funciones, que no tienen
argumentos, son las siguientes:
Captulo 3: Operaciones con matrices y vectores pgina 29
eps devuelve la diferencia entre 1.0 y el nmero de coma flotante inmediatamente superior.
Da una idea de la precisin o nmero de cifras almacenadas. En un PC, eps vale
2.2204e-016.
realmin devuelve el nmero ms pequeo con que se puede trabajar (2.2251e-308)
realmax devuelve el nmero ms grande con que se puede trabajar (1.7977e+308)
3.3.2. OTROS TIPOS DE VARIABLES: INTEGER, FLOAT Y LOGICAL
Como ya se ha comentado, por defecto MATLAB trabaja con variables de punto flotante y doble precisin (double). Con estas
variables pueden resolverse casi todos los problemas prcticos y con frecuencia no es necesario complicarse la vida
declarando variables de tipos distintos, como se hace con cualquier otro lenguaje de programacin. Sin embargo, en algunos
casos es conveniente declarar variables de otros tipos porque puede ahorrarse mucha memoria y pueden hacerse los clculos
mucho ms rpidamente.
MATLAB permite crear variables enteras con 1, 2, 4 y 8 bytes (8, 16, 32 y 64 bits). A su vez, estas variables pueden tener
signo o no tenerlo. Las variables con signo representan nmeros en intervalos
"casi" simtricos respecto al 0; las variables sin signo representan nmero no negativos, desde el 0 al nmero mximo.
Los tipos de los enteros con signo son int8, int16, int32 e int64, y sin signo uint8, uint16, uint32 y
uint64. Para crear una variable entera de un tipo determinado se pueden utilizar sentencias como las siguientes:
>> i=int32(100); % se crea un entero de 4 bytes con valor 100
>> j=zeros(100); i=int32(j); % se crea un entero i a partir de j
>> i=zeros(1000,1000,'int32'); % se crea una mariz 1000x1000 de enteros
Las funciones intmin('int64') e intmax('int64') permiten por ejemplo saber el valor del entero ms pequeo y ms grande (en
valor algebraico) que puede formarse con variables enteras de 64 bits:

>> disp([intmin('int64'), intmax('int64')])


-9223372036854775808 9223372036854775807
La funcin isinteger(i) devuelve 1 si la variable i es entera y 0 en otro caso. La funcin class(i) devuelve el tipo de variable que
es i (int8, int16, ...), mientras que la funcin isa(i, 'int16') permite saber exactamente si la variable i corresponde a un entero
de 16 bits.
MATLAB dispone de dos tipos de variables reales o float: single y double, que ocupan respectivamente
4 y 8 bytes. Por defecto se utilizan doubles. Las funciones single(x) y double(y) permiten realizar conversiones entre ambos
tipos de variables.
Las funciones realmin y realmax permiten saber los nmeros double ms pequeo y ms grande (en valor absoluto) que
admite el computador. Para los correspondientes nmeros de simple precisin habra que utilizar realmin ('single') y
realmax('single'). La funcin isfloat(x) permite saber si x es una variable real, de simple o doble precisin. Para saber
exactamente de qu tipo de variable se rata se pueden utilizar las funciones isa(x, 'single') isa(x, 'double'). Obsrvese el
ejemplo siguiente, en el que se ve cmo con variables single se reduce el tiempo de CPU y la memoria:
>> n=1000; AA=rand(n); A=single(AA);
>> tic, Bs=inv(A); toc
Elapsed time is 1.985000 seconds.
>> tic, Bd=inv(AA); toc
Elapsed time is 4.296000 seconds.
Quizs las variables ms interesantes aparte de las variables por defecto, las double sean las variables logical, que slo
pueden tomar los valores true (1) y false (0). Las variables lgicas surgen
Aprenda Matlab 7.0 como si estuviera en Primero pgina 30 como resultado de los operadores relacionales (==, <, <=, >, >=, ~=,
ver Apartado 3.6, en la pgina
38) y de muchas funciones lgicas como any y all que se aplican a vectores y matrices, y que se vern en el Apartado 4.6, a
partir de la pgina 46.
La funcin logical(A) produce una variable lgica, con el mismo nmero de elementos que A, con valores 1 0 segn el
correspondiente elementos de A sea distinto de cero o igual a cero.
Una de las aplicaciones ms importantes de las variables lgicas es para separar o extraer los elementos de una matriz o
vector que cumplen cierta condicin, y operar luego selectivamente sobre dichos elementos. Obsrvese, el siguiente ejemplo:
>> A=magic(4)
A=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> j=A>10
j=
1001
0100
0001
0110
>> isa(j,'logical')
ans =
1
>> A(j)=-10
A=
-10 2 3 -10
5 -10 10 8
9 7 6 -10
4 -10 -10 1
3.3.3. NMEROS COMPLEJOS: FUNCIN COMPLEX
En muchos clculos matriciales los datos y/o los resultados no son reales sino complejos, con parte real y parte imaginaria.
MATLAB trabaja sin ninguna dificultad con nmeros complejos. Para ver como se representan por defecto los nmeros
complejos, ejectense los siguientes comandos:
>> a=sqrt(-4)
a=
0 + 2.0000i
>> 3 + 4j

ans =
3.0000 + 4.0000i
En la entrada de datos de MATLAB se pueden utilizar indistintamente la i y la j para representar el nmero imaginario unidad
(en la salida, sin embargo, puede verse que siempre aparece la i). Si la i o la j no estn definidas como variables, puede
intercalarse el signo (*). Esto no es posible en el caso de que s estn definidas, porque entonces se utiliza el valor de la
variable. En general, cuando se est trabajando con nmeros complejos, conviene no utilizar la i como variable ordinaria,
pues puede dar lugar a errores y confusiones. Por ejemplo, obsrvense los siguientes resultados:
>> i=2
i=
2
>> 2+3i
ans =
2.0000 + 3.0000i
>> 2+3*i
Captulo 3: Operaciones con matrices y vectores pgina 31
ans =
8
>> 2+3*j
ans =
2.0000 + 3.0000i
Cuando i y j son variables utilizadas para otras finalidades, como unidad imaginaria puede utilizarse tambin la funcin
sqrt(-1), o una variable a la que se haya asignado el resultado de esta funcin.
La asignacin de valores complejos a vectores y matrices desde teclado puede hacerse de las dos formas, que se muestran en
el ejemplo siguiente (conviene hacer antes clear i, para que i no est definida como variable; este comando se estudiar ms
adelante):
>> A = [1+2i 2+3i; -1+i 2-3i]
A=
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i
>> A = [1 2; -1 2] + [2 3; 1 -3]*I % En este caso el * es necesario
A=
1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i
Puede verse que es posible definir las partes reales e imaginarias por separado. En este caso s es necesario utilizar el
operador (*), segn se muestra en el ejemplo anterior.
MATLAB dispone asimismo de la funcin complex, que crea un nmero complejo a partir de dos argumentos que representan
la parte real e imaginaria, como en el ejemplo siguiente:
>> complex(1,2)
ans =
1.0000 + 2.0000i
Es importante advertir que el operador de matriz traspuesta ('), aplicado a matrices complejas, produce la matriz conjugada y
traspuesta. Existe una funcin que permite hallar la matriz conjugada
(conj( )) y el operador punto y apstrofo (.') que calcula simplemente la matriz traspuesta.
3.3.4. CADENAS DE CARACTERES
MATLAB puede definir variables que contengan cadenas de caracteres. En MATLAB las cadenas de texto van entre apstrofos
o comillas simples (Ntese que en C van entre comillas dobles: "cadena").
Por ejemplo, en MATLAB:
s = 'cadena de caracteres'
Las cadenas de texto tienen su ms clara utilidad en temas que se vern ms adelante y por eso se difiere hasta entonces una
explicacin ms detallada.
Archivos de Comandos
Cuando un archivo de comandos es invocado, MATLAB simplemente ejecuta los comandos encontrados en dicho archivo. Las
instrucciones en un archivo de comando operan globalmente en los datos en el espacio de trabajo. Los comandos son
utilizados para hacer anlisis, resolver problemas, disear secuencias largas de comandos que se conviertan en
interactivas. Por ejemplo, suponga que el archivo fibo.m contiene los siguientes comandos de MATLAB:
% Un archivo-M para calcular los elementos de la serie de Fibonacci
f = [1 1]; i = 1;

while f(i) + f(i+1) < 1000


f(i+2) = f(i) + f(i+1);
i = i + 1;
end
plot(f)
Si escribimos fibo en una ventana de MATLAB seguido de "enter" vemos que MATLAB calcula los primeros 16 nmeros de
Fibonacci, y luego grafica estos.
Luego que la ejecucin del archivo es completada, las variables f y i permanecen en el espacio de trabajo.
Los programas de demostraciones incluidos en MATLAB son ejemplos de cmo usar comandos para hacer tareas ms
complicadas. Para utilizar este escriba demos en el "prompt" de MATLAB.

Archivos de Funciones
Un archivo -M que contiene la palabra function al principio de la primera lnea, es un archivo de funcin. En una funcin, a
diferencia de un comando, se deben de pasar los argumentos. Las variables definidas y manipuladas dentro de la funcin son
locales a esta y no operan globalmente en el espacio de trabajo. Los archivos de funciones se utilizan para extender a
MATLAB, i.e., crear nuevas funciones para MATLAB utilizando el lenguaje propio de MATLAB.
El archivo mean.m contiene las instrucciones:
function y = mean(x)
% Valor medio.
% Para vectores, mean(x) retorna el valor medio de los elementos del vector x.
% Para matrices, mean(x) es un vector fila conteniendo el valor medio de cada columna.
[m, n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
35
(Las lineas que comienzan con "%" son interpretadas como comentarios por MATLAB). La existencia de este archivo en el
disco duro define una nueva funcin en MATLAB llamada mean. Si z es un vector de los enteros desde 1 a 99, por ejemplo,
z = 1:99;
entonces, el valor promedio es encontrado escribiendo
mean(z)
que resultara
ans =
50
Veamos algunos detalles de mean.m:
La primera lnea declara el nombre de la funcin, los argumentos de entrada, y los argumentos de salida. Sin esta lnea sera
un archivo de comando.
% indica que el resto de la lnea es un comentario.
Las primeras lneas documentan el archivo -M y aparecen en la pantalla cuando escribimos help mean.
Las variables m, n, e y son locales a mean y no existen en el espacio de trabajo.
(O si existen, permanecen sin cambios.)
No es necesario asi gnar los enteros de 1 al 99 en la variable x. Utilizamos mean con una variable llamada z.
Este vector que contena los enteros de 1 a 99 fue pasado copiado a mean donde se convirti en una variable local llamada
x.
Ejemplo
% Ejemplo de un archivo-m
% Creacin del vector x usando el comando for
n=5;
for i=1:n
x(i)=i^2;
end
x
% Fin del archivo-m
Este ejemplo es un archivo -m tipo comando. Para ejecutarlo, en la lnea de comandos se debe escribir el nombre del archivo:
>>ejemplo
x=

1 4 9 16 25
36
Ejemplo
% Calcula el promedio de los elementos de un vector y dibuja dicho vector
% Sintaxis : promedio(x) donde x es el vector a promediar
function p = promedio(x)
n=length(x);
p=0;
for i=1:n
p=p+x(i);
end
p=p/n;
plot(x);
Para ejecutar la funcin, se hace la llamada en la lnea de comandos incluyendo el parmetro. La funcin promedio usa por
parmetro un vector. Este vector debe ser definido previamente.
>>A=[1 2 4 3 7 5 6 1 2 0 8 5];
>>promedio(A)
ans =
3.6667
MatLab presenta las imgenes en una ventana de figuras. Al observar el contenido de dicha ventana luego de ejecutar la
funcin promedio, se tiene:
37
Esta imagen es el resultado del comando plot(x) al ejecutar la funcin promedio.
MatLab posee un conjunto de archivos-m incorporados (built-in). Puede agregrsele archivos -m definidos por el usuario
almacenando los mismos en el directorio principal de MatLab. Los comentarios incluidos en estos scripts y funciones se
visualizan al usar el comando help seguido del nombre del archivo.
>>help promedio
Calcula el promedio de los elementos de un vector y dibuja dicho vector Sintaxis: promedio(x) donde x es el vector a
promediar
Para ver el contenido de un archivo-m se usa el comando type seguido del nombre del archivo.
Entrada/salida
Cuando vamos a reservar un vuelo introducimos en el programa la fecha y las ciudades de origen y destino. El programa
informtico nos proporciona las horas de partida del avin de la ciudad de origen y otra informacin relevante para el
viajero. Se selecciona la fecha en un control del tipo date y las ciudades de origen y destino en un control de
tipo list desplegable ordenadas alfabticamente.
En MATLAB podemos cambiar el valor de los parmetros de entrada con el editor de script, guardar de nuevo el script
modificado y correrlo. Pero es mucho ms fcil utilizar el comado input tal como hemos visto al final de la
pgina Variables.
a=input('primer coeficiente, a: ');
str=input('mensaje: ','s');
MATLAB imprime los resultados de los clculos y los guarda bien en una variable o en ans, si no se especifica. En
muchos casos esto es suficiente, pero en programas ms largos es necesario identificar o describir el resultado de un
determinado clculo. MATLAB dispone de una funcin fprintf muy verstil para mostrar distintos datos con formato,
alternativamente se puede utilizar la funcin disp.
La funcin disp
La funcin disp de MATLAB se utiliza para mostrar un escalar, un mensaje (string), un vector o una matriz.
En la lnea de comandos escribimos
>> disp('resultado')
resultado
>> y=22;
>> disp(y)
22
>> x=1:0.5:3;
>> disp(x)
1.0000 1.5000 2.0000 2.5000 3.0000
>> A=[1 2 3; 4 5 6; 7 8 9];

>> disp(A)
1
2
4
5
7
8

3
6
9

La funcin disp imprime una matriz A, vamos a ver ahora como imprime una tabla de valores (abscisa, ordenada).
Creamos el script prueba.
x=0:5 %vector fila
y=3*x.^2-5 %vector fila
res(:,1)=x'; %columna 1 de la matriz
res(:,2)=y'; %columna 2 de la martiz
%esto es equivalente a poner res=[x' y']
disp('tabla funcin')
disp('abscisa ordenada')
disp(res)
En la ventana de comandos corremos el script prueba
>> prueba
x=
0
1
2
3
4
5
y=
-5 -2
7 22 43 70
tabla funcin
abscisa ordenada
0 -5
1 -2
2
7
3 22
4 43
5 70
La funcin fprintf
Es otra funcin para mostrar un mensaje o un resultado, pero que permite mezclar texto y valores numricos de las
variables y tambin se puede ajustar el formato de los nmeros. Esta funcin tiene muchas posibilidades por lo que
empezaremos con las ms sencillas.
fprintf('texto %5.2f texto adicional', variable)
En medio del texto se ha intercalado un valor numrico que contiene una variable con el formato %-5.2f,

% es el smbolo que indica formato

-, alinea el nmero hacia la izquierda

+, imprime el signo (+ si es positivo y - si es negativo)

0, aade ceros

5, indica cinco caracteres que es el ancho del campo donde ese imprime el valor numrico, si el nmero es ms corto
se aaden espacios o ceros delante del nmero.

2, indica la precisin, indica el nmero de dicimales que se mostrarn a la derecha del punto decimal

f, indica que se utilizar la notacin (entero.decimal) por ejemplo 17.09

e, indica que se utilizar la notacin exponencial, por ejemplo1.709e+001

i, indica entero

g, formato corto
Vamos a calcular el alcance de un proyectil disparado con velocidad de 46.325 m/s haciendo un ngulo de 32 mediante
la siguiente frmula.
x= v 0 2 sin(2) g
Escribimos el script prueba para probar la funcin fprintf
ang=32;
v0=46.325;
x=v0*v0*sind(2*ang)/9.8;
fprintf('velocidad %2.4f m/s, ngulo de tiro %i, alcance %5.2f m\n',v0,ang,x)
El carcter \n al final del texto en la funcin fprintf indica una nueva lnea, probar el efecto al quitarlo. Las variables que
guardan los datos v0, ang y x se ponen al final en el mismo orden que se citan en el texto separadas por comas. Se sugiere
al lector que pruebe otros formatos
Corremos el script en la ventana de comandos

>> prueba
velocidad 46.3250 m/s, ngulo de tiro 32, alcance 196.82 m
La funcin sprintf
La funcin sprintf es similar a printf salvo que imprime en una variable. Se utiliza en combinacin con la funcin
grfica text para mostrar valores de una variable en un grfico
%cdigo para dibujar un grfico
plot(Vr,Pr,'r')
text(1,1.35,sprintf('presin %1.3f',p))
Vamos a ver como funciona en la ventana de comandos. Guardamos el valor que imprime sprintf en la variablestr.
>> str=sprintf('el valor de pi es %1.3f',pi)
str =
el valor de pi es 3.142
Al final de fprintf se pone el carcter \n que indica una nueva lnea, no es necesario en la funcin sprintf
3.1.
Entrada y salida de datos
Existe un comando para introducir informacin en un programa cuando estamos en modo de ejecucin. Este comando es:
v=input(Cadena de Caracteres) input realiza dos tareas:
Imprime en pantalla la cadena de caracteres que lleva como argumento.
Los datos que el usuario teclea en respuesta al letrero, los introduce en la variable v.
Para que un programa en modo de ejecucin pueda escribir letreros, avisos, etc. por pantalla, se utiliza el comando:
disp(Cadena de Caracteres) que escribe la cadena de caracteres que tiene como argumento en pantalla.
Para escribir el valor de una variable, se utiliza el comando: disp(v) que muestra en pantalla el valor de la variable v.
Para escritura de texto y/o datos en pantalla, se puede utilizar la funcin: sprintf(formato, variables).
Ejemplos:
>> n=input(teclea el nmero de elementos)
>>disp(este valor no es adecuado)
3.2.

Operadores

Ya hemos estudiado operadores de tipo aritmtico. En este momento puede ser de utilidad conocer otros tipos de operadores:
Operadores relacionales:
< Menor
<= Menor o igual
>= Mayor o igual
> Mayor
== Igualdad
~= Desigualdad
find(A) Devuelve los ndices de los elementos no nulos
find(A condicin) Devuelve los ndices de los elementos de A que cumplen la condicin
Operadores lgicos
~A Negacin lgica
A & B Conjuncin lgica (and)
A | B Disyuncin lgica (or)
xor(A,B) or exclusivo, vale 1 si A o B, pero no ambos, valen 1
Todos estos operadores actan elemento a elemento en matrices y vectores.
Las dimensiones y nmero de elementos de las tablas deben coincidir.
Ejemplo:

>> A=1:9; P=(A>2)&(A<6)


P= 0 0 1 1 1 0 0 0 0
3.3.

Sentencias de control

El uso de aplicaciones recursivas y condicionales es muy habitual en matemticas. Para ello si utilizan las bifurcaciones y los
bucles.
Las bifurcaciones permiten realizar una u otra operacin segn se cumplan o no ciertas condiciones. Los bucles repiten
operaciones sobre datos distintos.
Algunas de las sentencias de las que dispone Matlab para este tipo de trabajos son las siguientes:
Sentencia for:
Permite ejecutar de forma repetitiva un comando o grupo de comandos. La forma general de un bucle for es:
for variable=expresin
comandos
end
Por ejemplo:
for i=1:3;v(i)=1;end;v
111
>>
As, un bucle for siempre empieza por la sentencia for y termina con la end. En su interior incluye todo un conjunto de
comandos que se separan por comas. En algunos casos es bueno poner puntos y comas para evitar repeticiones en las
salidas.
Por supuesto puede utilizarse en ficheros .m (figura 2).

Figura 2
Sentencia if:
Mediante esta estructura se pueden ejecutar secuencias de comandos si se cumplen determinadas condiciones. Su sintaxis
es:
If condicin
comandos
end
De forma ms general:

If condicin
comandos 1
else
comandos 2
end
que ejecuta comandos 1 si la condicin 1 es cierta y comandos 2 si es falsa.
Como en el caso de for, se pueden anidar sentencias if:
If condicin 1
comandos 1
elseif condicin 2
comandos 2
elseif condicin 3
comandos 3
...
else
end
Mediante el siguiente ejemplo se imprime en pantalla una frase, de tres posibles, segn sea el valor de la variable n:
N=input(introduce un nmero natural)
If n=0,
disp(n es cero)
elseif rem(n,2)==0
disp(n es par)
else
disp (n es impar)
end
Sentencia while:
Tambin dispone de la sentencia haz mientras que ejecuta un bucle mientras una condicin sea cierta. Su sintaxis es:
while condicin
comandos
end
En el interior (comandos) se incluyen todo tipo de comandos que se separan por comas y que se ejecutan mientras la
condicin sea cierta.

10100
Como ejemplo calcularemos el mayor nmero factorial que no exceda a
n=1;
while prod(1:n)<1.e100,
n=n+1;
end,
n
Este otro ejemplo tiene como salida el vector 1 2 3 4 5 6.
v=1:9;
i=1;
while v(i)<7
disp(v(i))
i=i+1;
end

Continue
Esta sentencia hace que se pase inmediatamente a la siguiente iteracin del bucle for o while, saltndose todas las sentencias
que existan entre el continue y el final del bucle en esa iteracin.
Break
Hace que se termine la ejecucin de un bucle for o while.
4. Fuentes de Informacin
Direccin web
http://www.google.com.bo/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CBwQFjAAahUKEwjvmsnP_rfHAhXJcT4KHTLoAJk&url=http%3A%2F
%2Fwww2.caminos.upm.es%2FDepartamentos%2Fmatematicas%2FFdistancia%2FPIE%2Fmatlab%2Ftemasmatlab
%2FTEMA%25207.pdf&ei=-PPVVe--Hcnj-QGy0IPICQ&usg=AFQjCNFh_0nngLeDP_zzvzsYixM9HfVmZw
http://www.sc.ehu.es/sbweb/energias-renovables/MATLAB/basico/vectores/salida.html
http://colos.inf.um.es/disegrafsimula/PaquetesMat/Matlab/Matlab_Intro1.html

5.

Conclusiones

En el presente laboratorio se simularon diferentes funciones con el objetivo de conocer las diferentes herramientas bsicas
del programa matlab pudiendo evidenciar que matlab es una poderosa herramienta de simulacin.
Departe del docente tuvimos mucha ayuda con su explicacin de algunas dudas que tuvimos en el grupo para as poder
tener ms conocimiento en cuanto a las instrucciones.
En cuanto a nosotros el conocimiento que tenamos sobre la codificacin era lo bsico que nos ensearon en una materia de
5 semestres, con la cual nos pudimos orientarnos en la mayora de las instrucciones no obstante nos faltaron en aplicarlo
para la segunda firma.
En la mayor parte de la clase tenamos que averiguar que ase cada instruccin a falta de ayudanta en la materia tuvimos que
recurrir al internet pero viendo que las pc estn en mal estado y llenos de virus se nos fue difcil por esa razn tardamos ms
de lo debido.

Вам также может понравиться