Sunteți pe pagina 1din 21

Introduccin al Matlab

El propsito de estas notas es hacer una rpida introduccin al matlab. Son


slo unas pequeas
muestras para dar idea de como funciona este programa. Para un estudio ms
serio deben
consultarse otras referencias. En particular las que damos al final de esta
pgina.
El nombre de Matlab viene de Matrix Laborator como el nombre indica
matlab es especialmente fuerte
en el tratamiento de matrices. Estos fueron sus or!genes" a los que se han ido
incorporando sucesivamente
ms capacidades" sobretodo grficas.
Matlab es una potente calculadora" por e#emplo calcula la suma de dos
n$meros

>> 2+2
ans =
4
%unque el e#emplo es sencillo a vemos como actua matlab" se escriben las
instrucciones en
la l!nea de comandos && despu's de pulsar la tecla (ntro aparece el
resultado ms aba#o como variable ans.
El resultado no aparece visible en la pantalla si ponemos punto coma ) al
final de las instrucciones" como en

>> A=rand(6); B=inv(A); B*A;
Si quitamos los puntos comas de esta $ltima expresin veremos el
resultado. Para
escribirla de nuevo podemos usar la flecha hacia arriba del teclado" que nos
recupera
los comandos escritos anteriormente en la sesin.

>> A=rand(6), B=inv(A), B*A
A =
0.1338 0.4514 0.6831 0.0164
0.7176 0.1536
0.2071 0.0439 0.0928 0.1901
0.6927 0.6756
0.6072 0.0272 0.0353 0.5869
0.0841 0.6992
0.6299 0.3127 0.6124 0.0576
0.4544 0.7275
0.3705 0.0129 0.6085 0.3676
0.4418 0.4784
0.5751 0.3840 0.0158 0.6315
0.3533 0.5548
B =
-18.9422 -0.1768 -27.4583 8.2189
14.1721 17.0665
10.6427 -0.8112 14.3231 -3.3853
-9.0470 -7.7695
5.3157 -0.9261 7.4863 -1.8170
-2.6566 -5.1051
4.6141 -0.4972 6.8101 -3.2198
-2.1772 -3.1550
-9.7318 1.3315 -15.5596 3.3890
7.9718 9.3641
13.0642 0.4891 20.4944 -4.6187
-10.9522 -12.7382
ans =
1.0000 0.0000 0.0000 0.0000
0.0000 0.0000
0.0000 1.0000 0.0000 0
0.0000 0
-0.0000 -0.0000 1.0000 0.0000
-0.0000 -0.0000
-0.0000 -0.0000 0.0000 1.0000
-0.0000 0.0000
0.0000 0.0000 -0.0000 0.0000
1.0000 0.0000
0.0000 -0.0000 0.0000 0
0.0000 1.0000
*bs'rvese la rapide+ con que se han calculado estas matrices %,rand-./
encuentra una matri+ .x. de
n$meros aleatorios -cada uno entre 0 1/" inv-%/ calcula su inversa luego
comprobamos que 23%
es la matri+ identidad. Los n$meros negativos que aparecen son debido al
redondeo -en este caso
ser!an n$meros mu pequeos" pero negativos/.
4eamos como mane#a matab los n$meros5

>> pi
ans =
3.1416
>> !r"a# $!n%
>> pi
ans =
3.14159265358979
%unque nos da el valor de pi con distinto n$mero de decimales en realidad
matlab traba#a internamente
con doble presicin" pero nos muestra distintos formatos. Para ver los distintos
formatos basta con usar el help5

>> &'$p !r"a# (apar'(' '$ ()adr! d' $a d'r'(&a -->)
*+'"p$!, 10*pi 10*'-p(1)
!r"a# s&!r#
31.4159
!r"a# $!n%
31.41592653589793
!r"a# s&!r# '
3.1416'+001
!r"a# $!n% '
3.141592653589793'+001
!r"a# s&!r# %
31.416
!r"a# $!n% %
31.4159265358979
!r"a# &'-
4036a7a2955385'
!r"a# .an/
31.42
!r"a# ra#
35500113
27.1828
27.18281828459045
2.7183'+001
2.718281828459045'+001
27.183
27.1828182845905
403.2'(d2dd96d44
27.18
2528093
1234A5 67235 6(a$'d
i-'d p!in# !r"a#
8i#& 5 di%i#s.
1234A5 92:;
6(a$'d i-'d p!in#
!r"a# 8i#& 15
di%i#s.
1234A5 67235 *
1$!a#in% p!in#
!r"a# 8i#& 5
di%i#s.
1234A5 92:; *
1$!a#in% p!in#
!r"a# 8i#& 15
di%i#s.
1234A5 67235 ; B's#
! i-'d !r $!a#in%
p!in# !r"a# 8i#& 5
di%i#s.
1234A5 92:; ; B's#
! i-'d !r $!a#in%
p!in# !r"a# 8i#& 15
di%i#s.
1234A5 7*<
7'-ad'(i"a$ !r"a#.
1234A5 + 5&'
s=".!$s +, - and
.$an/ ar' prin#'d

!r p!si#iv',
n'%a#iv' and >'r!
'$'"'n#s.

?"a%inar= par#s ar'
i%n!r'd.
1234A5 BA:@ 1i-'d
!r"a# !r d!$$ars
and ('n#s.
1234A5 3A5
Appr!-i"a#i!n .=
ra#i! ! s"a$$
in#'%'rs.
A$$ (!"p)#a#i!ns in 4A59AB ar' d!n' in d!).$' pr'(isi!n.
6ada n$mero se guarda en memoria como un vector de 7 btes" lo que da
una mantisa de unos 18 1.
d!gitos decimales. %l ser 7 btes , .9 bits de memoria" cada bit es como si
fuera una ca#ita donde se almacenan
los ceros o unos corrspondientes al n$mero en binario. :e estas ca#itas o bits"
una de ellas corresponde al
signo -; </" 11 bits al exponente el resto" esto es 8= bits a la mantisa. >n
n$mero x ser por tanto
-= si%n! - "an#isa - 10
*
Los =
11
,=097 posibles exponentes E se distribuen entre <10=? E 10=9"
siendo el n$mero ms
grande posible del orden de -=<eps/3=
10=?
1,7977- 10
?07
el n$mero ms
pequeo del orden de
=
<10==
2,25-10
<?07
. La mantisa de 8= bits nos da un epsilon mquina del
orden de eps,=
<8=
2,22-10
<1.
.
@ecordenmos que el epsilon mquina eps se define como el n$mero ms
grande eps tal que la mquina no
distingue entre 1 1;eps.
El n$mero real ms grande" ms pequeo epsilon mquina
respectivamente" se obtienen con

>>r'a$"in
>>r'a$"a-
>>'ps
6on matlab podemos ir escribiendo los comandos uno tras otro" pero
cuando tenemos que hacer un pequeo
programa o escribir muchos comandos suele resultar ms $til escribir un
fichero con las instrucciones
luego hacer que matlab los e#ecute. Estos son los ficheros .m que no son ms
que ficheros de texto
a los que luego ponemos la extensin .m . Matlab lleva incorporado un editor
que podemos usar para
este propsito. 2uscamos en Aile <& BeC <& M<file escribimos en el editor
que aparece

!r"a# $!n%
pri"'r!=2.1;
s'%)nd!=2.1
!r n=1,40
#'r('r!=4*pri"'r!-3*s'%)nd!
pri"'r!=s'%)nd!;
s'%)nd!=#'r('r!;
'nd
que luego guardamos en matlab con el nombre diferencias.m " a que lo que
hace este programita es
calcular los sucesivos t'rminos de la sucesin a
n;=
,9 a
n
? a
n;1
empe+ando con
a
1
,=.1 a
=
,=.1
En este caso" como no hemos puesto punto coma despu's de la l!nea de
tercero" los resultados
se irn escribiendo en la pantalla" unos deba#o de otros a medida que se van
calculando.

2.10000000000000
2.10000000000000
2.10000000000000
2.09999999999999
2.10000000000002
2.09999999999991
2.10000000000036
2.09999999999854
2.10000000000582
2.09999999997672
2.10000000009313
2.09999999962747
2.10000000149012
2.09999999403954
2.10000002384186
2.09999990463257
2.10000038146973
2.09999847412109
2.10000610351563
2.09997558593750
2.10009765625000
2.09960937500000
2.10156250000000
2.09375000000000
2.12500000000000
2
2.50000000000000
0.50000000000000
8.50000000000000
-23.50000000000000
1.045000000000000'+00
2
-
4.075000000000000'+00
2
1.640500000000000'+00
3
-
6.551500000000000'+00
3
2.621650000000000'+00
4
-
1.048555000000000'+00
5
4.194325000000000'+00
5
-
1.677719500000000'+00
6
6.710888500000000'+00
6
-
El resultado es sorprendente DD
Esperar!amos ver que a
n
,=.1" para todo n. EPor qu' aparece
este extrao
comportamientoF
En realidad la ecuacin en diferencias a
n;=
,9 a
n
? a
n;1
tiene
por solucin

donde
siendo 6
1
6
=
dos constantes cualesquiera. Las condiciones
iniciales a
1
,a
=
,=.1
determinan la solucin con constantes 6
1
,1" 6
=
,0. Pero
debido a que =.1 en
base dos tiene una fraccin peridica que se repite
indefinidamente" a que
al calcular
tercero,tercero,93primero<?3segundo"
resulta que si eps es un n$mero mu pequeo comparable al
epsilon mquina
a
?
,tercero,=.1;eps
al iterar ahora de nuevo con
a
=
,=.1" a
?
,=.1;eps"
como nuevas condiciones iniciales" resulta que la constante
6
=
a no es 0.
Lo que hace que la solucin errnea aumente
exponencialmente enmascare
completamente la solucin prevista. Es un claro e#emplo de
inestabilidad
num'rica.
!No te fes de los
ordenadores!
2.684354350000000'+00
7
1.073741845000000'+00
8


6omentarios al programa5

1/ Si aadimos la instruccin fprintf-G H1..IfJn G"segundo/)
aparecer una pantalla ms ordenada con los resultados en columna.
=/

!r"a# $!n%
pri"'r!=2.1;
s'%)nd!=2.1;
i=!p'n(Ar's)$#ad!s.#-#A,A8A);
!r n=1,40
#'r('r!=4*pri"'r!-3*s'%)nd!;
pri"'r!=s'%)nd!;
s'%)nd!=#'r('r!;

prin#(i,AB16.7CnA,s'%)nd!);
'nd
($!s'(i)
Este programa abre un fichero de
texto
llamado resultados.txt donde se
escribirn
los clculos en columna.
2uscar en
>> &'$p prin#
para ms informacin sobre este
otros
comandos parecidos.
?/
a(1)=2.1;
a(2)=2.1;
!r n=1,18
a(n+2)=4*a(n+1)-
3*a(n);
'nd
Este otro programa tiene una estructura ms
apropiada para
Matlab a que va incrementando las componentes
de un
vector a.
Kue luego se puede usar " por e#emplo" para
representar
grficamente como
>>p$!#(a)
4er
>>8&!s
para observar
las variables que estn en memoria como van
cambiando.
En matlab ha unos aadidos llamados Loolboxes que incorporan ms
funciones posibilidades.
>na de ellas" que se incorpora en todas las versiones de Matlab para
estudiantes" se llama
Smbolic Loolbox. 6on ella podemos traba#ar con el n$mero de d!gitos de
mantisa que deseemos" esta funcin es
vpa. 2uscar en help vpa. El e#emplo siguiente nos da los 700 primeros d!gitos
de pi5

>> vpa(pi,800)
ans =
?.1918M=.8?87MIM?=?79.=.9??7?=IM80=7791MI1.M?MM?I81087=0MI9M998M=?0I71.90.=7.=07MM7.=
70?97=8?
9=11I0.IM7=19707.81?=7=?0..9I0M?799.0M88087==?1I=8?8M9071=797111I980=7910=I01M?78=110
888M.99.
==M97M89M?0?71M.99=7710MI8..8M??99.1=79I8.97=??I7.I7?1.8=I1=01M0M198.978..M=?9.0?97.1
0989?=..
97=1??M?.0I=.0=9M191=I?I=987I00..0.?188771I97718=0M=0M.=7=M=890M1I18?.9?.I7M=8M0?.001
1??08?08
977=09..8=1?7919.M81M91811.0M9??08I=I0?.8I8M8M1M8?0M=17.11I?71M?=.11IM?1081178970I99.
=?IMM.=I
9M8.I?81778I8=I=97M1==IM?717?011M9M1=M7??.I??.=990.8..9?07.0=1?M9M9.?M8==9I?I1M0I0=1I
M7.0M9?I
0=II08?M=1I1I.=M?1I.I8=?79.I97179.I..M9081?=0008.71=I198=.?8.07=II78II1?9=I8II7M.0M1I
?.?I1I7I
=19.7990M01==9M8?9?019.89M878?I1080IM==IM.7M=87M=?89=01MM8.11=1=M0=1M.07.90?991718M71
?.=MII9I
I1?0MM.0817I0I=11?9MMMMMM7?I=MI709MM8108MI?1I?=71.0M.?17.
6omo otro e#emplo" calculemos con mantisa ? la suma de los primeros =0
t'rminos
de la serie armnica" esto es
($'ar a$$
s)"a=1
!r n=2,20
s)"a=vpa(vpa(s)"a,3)+vpa(10n,3),3)
'nd
*$ r's)$#ad! D)' !.#'n'"!s 's s)"a =3.60. E' n! &a.'r (a$()$ad! (!n
's#a "an#isa !.#'ndrFa"!s
>> s)"a =3.59773965714368
s)"a=0;
#i(
!r "=1,20
!r
n=1,1000*"

s)"a=s)"a+10n
;
'nd
#(")=#!(;
'nd
p$!#(#)
El programita de aqu! arriba utili+a una grfica para representar el tiempo
que ha tardado Matlab en sumar distintas sumas
parciales de esta serie armnica. E6ul es la suma de la serie armnica
infinitaF Lodos sabemos que diverge" esto es" que si vamos sumando ms
ms t'rminos las sumas parciales se hacen tan grandes como queramos. Na
una manera divertida de pensar en la
suma de los t'rminos de una serie. Se puede pensar que tenemos una pulguita
que va dando saltitos" cada ve+" en este caso" primero
de un metro" luego de medio" luego de una tercera parte" as! sucesivamente.
Esto es que en el salto n avan+ar!a una distancia 1On.
Kue esta serie diverge significa que si el n$mero de saltos es suficientemente
grande nuestra amiga llegar!a de la %utnoma
a Madrid" a la Luna" ... llegar!a tan le#os como queramos. DDPero si la
calculamos con el ordenador esta suma ser!a finita DD
ENas pensado en cul ser!a la sumaF
Lal como hemos dicho Matlab est mu adaptado al clculo con vectores
matrices" por e#emplo en las
siguientes instrucciones
>> -=G0 , 0.1 , 1H
significa que x es un vector cuas componentes empie+an en 0" se van
incrementando de 0.1 en 0.1
terminan en 1. Luego
>>==sin(-)
es un vector cuas componentes son los senos de las anteriores"
>>disp(G-A =A >AH)
muestra los traspuestos de estos vectores. El resultado se puede ver como
sigue5

>> -=G0,0.1,1H; ==sin(-); >=(!s(-);
>>
A------------------------------------------------
------- A
>> A -
s'n!(-) (!s(-) A, disp(G-A =A
>AH)
ans =
- s'n!(-)
(!s(-)
------------------------------------------------
----------
0 0
1.00000000000000
0.10000000000000 0.09983341664683
0.99500416527803
0.20000000000000 0.19866933079506
0.98006657784124
0.30000000000000 0.29552020666134
0.95533648912561
0.40000000000000 0.38941834230865
0.92106099400289
0.50000000000000 0.47942553860420
0.87758256189037
0.60000000000000 0.56464247339504
0.82533561490968
0.70000000000000 0.64421768723769
0.76484218728449
0.80000000000000 0.71735609089952
0.69670670934717
0.90000000000000 0.78332690962748
0.62160996827066
1.00000000000000 0.84147098480790
0.54030230586814
En Matlab podemos escribir un con#unto de instrucciones que forman un
fichero.m" pero tambi'n podemos
utili+ar una function. Na una diferencia entre ambos a que en un fichero.m
los datos las variables son como
si las hubi'rmos escrito desde la consola. En una funcin las variables son
internas" no cambian ni afectan las
externas. Por cierto que conviene muchas veces limpiar las variables externas
con la instruccin
>>($'ar a$$
si no queremos tener clculos confusos. Para limpiar la pantalla usaremos
>>($(
>n e#emplo de funcin ser!a el programita siguiente" que calcula los =0
primeros t'rminos de la serie exponencial


)n(#i!n GsH=s'ri'(-)
#'r"=1; s)"a=1;
!r n=1,20
#'r"=#'r"*-0n;
s)"a=s)"a+#'r";
'nd
s=s)"a
La funcin se llama desde la consola como
>>s'ri'(-),
Por e#emplo5

>>s'ri'(1)
s)"a=2.71828182845905
@esultado que a da todas las cifras decimales correctas del numero e hasta
la precisin de Matlat" como se puede
comprobar fcilmente. 6on esta funcin podemos comprobar por e#emplo que
al sumar una suma alternada afecta
en mucho el error de redondeo" a que

>> '-p(-8)-s'ri'(-8)
ans = -0.13229825662640
Mientras que

>> 10s'ri'(8)-'-p(-8)
ans =3.152568231321777'-008
Grficos con Matlab
Pueden verse en los siguientes e#emplos5
>n comando $til en matlab es ginput. 4er &&help gineput -tambi'n gtext/.
%ba#o el pequeo
programita dibu#a ,x-x<1/sin x" luego sobre la figura" permite tomar . puntos
con el ratn" que
al final muestra en la consola.

>> =A-*(--1)*sin(-)A; '>p$!#();
G-,=H=%inp)#(6); G-,=H
>> &'$p p$!#
4arious line tpes" plot smbols and colors ma be obtained
Cith
PL*L-P"Q"S/ Chere S is a character string made from one
element
from an or all the folloCing ? colunms5
elloC . point < solid
m magenta o circle 5 dotted
c can x x<marR <. dashdot
r red ; plus << dashed
g green 3 star
b blue s square
C Chite d diamond
R blacR v triangle -doCn/
S triangle -up/
T triangle -left/
& triangle -right/
p pentagram
h hexagram
2#r!s '+'"p$!s,





I'n#ana d' (!"and!s d' "a#$a.

($!s' a$$
)=-8,0.5,8; v=);
GJ,IH="'s&%rid(),v
);
3=sDr#(J.*J+I.*I)
+'ps;
K=sin(3).03;
"'s&(K)

x,U<?50.95?V)
,x)
close
subplot-="="1/
figure-gcf/" fi,U<
.3pi5piO=05.3piV)
plot?-fi.3cos-fi/"fi.3sin-f
i/"fi"GrG/
UP"QV,meshgrid-x"/)
W,superficie-P"Q/)
subplot-="="=/
mesh-W/
subplot-="="?/
surf-W/
subplot-="="9/
contour?-W"1./

>>G- = >H=p'a/s;
>>(!n#!)r(-,=,>,A/A)
>>p(!$!r(-,=,>)
>>s&adin% in#'rp
>>L=p'a/s;
>> i%)r' (2); GM,&H=(!n#!)r(L,10);
>> ($a.'$(M,&)
produce las siguientes figuras5


>> &'$p '$)n
Lrigonometric.
sin < Sine.
sinh < Nperbolic sine.
asin < (nverse sine.
asinh < (nverse hperbolic
sine.
cos < 6osine.
cosh < Nperbolic cosine.
acos < (nverse cosine.
acosh < (nverse hperbolic
cosine.
tan < Langent.
tanh < Nperbolic tangent.
atan < (nverse tangent.
atan= < Aour quadrant
inverse tangent.
atanh < (nverse hperbolic
tangent.
sec < Secant.
sech < Nperbolic secant.
asec < (nverse secant.
asech < (nverse hperbolic
secant.
csc < 6osecant.
csch < Nperbolic
Exponential.
exp < Exponential.
log < Batural logarithm.
log10 < 6ommon -base 10/ logarithm.
log= < 2ase = logarithm and dissect
floating point number.
poC= < 2ase = poCer and scale floating
point number.
sqrt < Square root.
nextpoC= < Bext higher poCer of =.
6omplex.
abs < %bsolute value.
angle < Phase angle.
complex < 6onstruct complex data from real
and imaginar parts.
con# < 6omplex con#ugate.
imag < 6omplex imaginar part.
real < 6omplex real part.
unCrap < >nCrap phase angle.
isreal < Lrue for real arra.
cplxpair < Sort numbers into complex
con#ugate pairs.
@ounding and remainder.
cosecant.
acsc < (nverse cosecant.
acsch < (nverse hperbolic
cosecant.
cot < 6otangent.
coth < Nperbolic
cotangent.
acot < (nverse cotangent.
acoth < (nverse hperbolic
cotangent.
fix < @ound toCards +ero.
floor < @ound toCards minus infinit.
ceil < @ound toCards plus infinit.
round < @ound toCards nearest integer.
mod < Modulus -signed remainder after
division/.
rem < @emainder after division.
sign < Signum.
4er tambi'n
>>&'$p sp'()n (B'ss'$ , %a""a, Air=).
>>&'$p ")n
>>")n$is# (L'#a d' 3i'"ann, N!$in!"i!s !r#!%!na$'s)
(ardi!id',
>>'>p!$ar(A1+(!s(#)A
)
Otros comandos tiles de matlab:

>> da#'
>> (a$'ndar
>> ($'ar -, ($'ar a$$ $i"pia $a varia.$' -, $i"pia #!das $as
varia.$'s
>> ($!s' , ($!s' a$$ (i'rra $a i%)ra a(#)a$, (i'rra #!das $as i%)ras
>> a-is(G"in- "a-- "in= "a-=H) 'n()adra i%)ra 'n 's#' "ar(!
>> .r'a/ sa$' d' d'n#r! d' )n OiP ! d' )n O8&i$'P
>> ($( $i"pia $a pan#a$$a
M!n#r!$ M (Q M!n#r!$ L) a(a.a (!n $a '+'()(iQn d'
)n (R$()$! d' "a#$a. ('n (as! n'('sari!).
Un juego: Vamos a mandar mensajes secretos
Xulio 6'sar se comunicaba con sus gobernadores generales con mensa#es
codificados. Nac!a corresponder a cada
letra del abecedario la tercera siguiente. El mensa#e parec!a una sopa de letras
ininteligible. Para decodificar no hab!a
ms que proceder al rev's. %qu! tenemos en cuenta que las letras s!mbolos
del teclado tienen asignados n$meros
enteros del 0 al 1=I" cdigo %S6((. El comando char asigna este n$mero a las
letras mientras que rem (p,q) es el
resto de dividir p entre q -clase de restos/. El resultado es el siguiente5

S #'-#!=A4' 'n(an#a 's#' ()rs!A
#'-#! =
4' 'n(an#a 's#' ()rs!
S s'(r'#!=(&ar(r'"(#'-#!+3,128))
s'(r'#! =
N&T&DdD8dT&v8&T-)vr
S d'(!dii(a=(&ar(r'"(s'(r'#!-3,128))
d'(!dii(a =
4' 'n(an#a 's#' ()rs!
>n programita de regalo5 tetris.m
Anlisis de una Onda Seno
Para poder generar ondas senosoidales que involucren parmetros tales como amplitud, frecuencia,
frecuencia de muestreo, tiempo y ngulo de fase, hay que definir la funcin senosoidal. El siguiente es el
cuerpo de la funcin.
function [x]=senosoidal(amplitud,frecuencia,fm,tiempo,fase)
%SENOSOIDA crea una senosoidal
% SENOSOIDA(amp,fr,p!,samp,t) crea una senosoidal
% amp = amplitud
% fr = frecuencia
% p! = fase
% samp = frecuencia de muestreo
% t = tiempo de muestreo
% "op#ri$!t (c) %&&' (# Antonio )uintero
% *+e,ision- ./. * *Date- %&&'0%&0&1 .2-.%-31 *
for n=&-fm4tiempo5.
an$ulo=%4pi4frecuencia0fm6
x(n7.)=amplitud4sin((an$ulo4n)7fase)6
% "omo los ,ectores empie8an en ., x arranca una
% posici9n despu:s
end
Para verificar que la funcin senosoidal qued guardada en la carpeta Work, escribir pwd, esta funcin
devuelve todo el pat! de la funcin (!"#$%&$'(p)"Work"senosoidal.m* y al escribir dir debe aparecer la
funcin senosoidal.m
+iempre es importante tener en cuenta el teorema fundamental de muestreo el cual dice que para
representar digitalmente una se,al que contiene componentes de frecuencia hasta - ./ es necesario usar
una frecuencia de muestreo de al menos 0- muestras por segundo.
1amos ahora a anali/ar dos ondas senosoidales que solo var2an en su frecuencia, las dos se,ales van a
tener los siguientes parmetros! una amplitud de 3.), 4333 de frecuencia de muestreo durante 4 segundo
y con un ngulo de fase 35 las dos ondas solo se van a diferenciar en sus frecuencias, una es a 663 ./ y
la otra es a 664 ./5 se pide! graficar las ondas hasta nyquist y graficar sus correspondientes espectros.
7ota! Para poder representar digitalmente estas se,ales, la frecuencia de muestreo deber2a ser como
m2nimo para 663 ./, 883 ./ y para 664 ./, 880 ./, para nuestro e9emplo se esta tomando solo la mitad
de la frecuencia de muestreo, la cual es )33 ./, esta frecuencia corresponde a la frecuencia de 7yquist.
$ una variable x1 se asigna el resultado de la funcin senosoidal con todos sus parmetros
;; x.=senosoidal(&/<,''&,<&&,.,&)6
$ una variable x2 se asigna el resultado de la funcin senosoidal con todos sus parmetros
;; x%=senosoidal(&/<,''.,<&&,.,&)6
$ una variable x se asigna el resultado de la suma de las dos ondas senosoidales
;; x=x.7x%6
$ una variable xx se asigna el resultado de la multiplicacin de las dos ondas senosoidales
;; xx=x./4x%6
Para poder graficar todas las ondas con sus resultados, se utili/a el comando subplot(cantidad de
figuras, posicin, numero de la figura), seguido del comando plot(figura) y un t2tulo para el grfico.
;; su(plot(',.,.),plot(x.),$rid on,8oom,title(=Onda Seno ''& >8=)
;; su(plot(',.,%),plot(x%),$rid on,8oom,title(=Onda Seno ''. >8=)
;; su(plot(',.,3),plot(x),$rid on,8oom,title(=Onda Seno ''& >8 7 Onda Seno ''. >8=)
;; su(plot(',.,'),plot(xx),$rid on,8oom,title(=Onda Seno ''& >8 4 Onda Seno ''. >8=)
:rficas de cada onda (663, 664, 663;664, 663<664*
&os siguientes son los sonidos que resultaron de la anterior prctica!
663
664
663;664
663<664
El siguiente paso corresponde al anlisis de los espectros de cada una de estas ondas.
Primero se asigna a una variable espx el valor absoluto de la transformada rpida de =ourier de la funcin
seno a 663 ./ almacenada anteriormente en la variable x1
;; espx.=a(s(fft(x.))6
+eguidamente se hace el mismo proceso para las otras ondas generadas.
;; espx%=a(s(fft(x%))6
;; espx=a(s(fft(x))6
;; espxx=a(s(fft(xx))6
$hora se grafican las respuestas en una sola grfica
;; su(plot(',.,.),plot(espx.),$rid on,8oom,title(=Espectro Onda Seno ''& >8=)
;; su(plot(',.,%),plot(espx%),$rid on,8oom,title(=Espectro Onda Seno ''. >8=)
;; su(plot(',.,3),plot(espx),$rid on,8oom,title(=Espectro de la Onda Seno ''& >8 7 Onda Seno ''. >8=)
;; su(plot(',.,'),plot(espxx),$rid on,8oom,title(=Espectro de la Onda Seno ''& >8 4 Onda Seno ''. >8=)
:rficas de los espectros de cada onda (663, 664, 663;664, 663<664*
&as grficas e-presan las simetr2as de las energias de todas las ondas.
.ay otra manera de graficar los espectros por medio de la funcin stem(varible), esta funcin muestra la
figura en forma de barras de tal manera que en algunos casos es ms fcil observar que sucede en la
grfica.
En la siguiente figura se muestra un /oom hecho en cada grfica con el fin de poder establecer en que
valores estn e-actamente los espectro.
;; su(plot(',.,.),stem(espx.),$rid on,8oom,title(=Espectro Onda Seno ''& >8=)
;; su(plot(',.,%),stem(espx%),$rid on,8oom,title(=Espectro Onda Seno ''. >8=)
;; su(plot(',.,3),stem(espx),$rid on,8oom,title(=Espectro de la Onda Seno ''& >8 7 Onda Seno ''. >8=)
;; su(plot(',.,'),stem(espxx),$rid on,8oom,title(=Espectro de la Onda Seno ''& >8 4 Onda Seno ''. >8=)
:rficas de los espectros de cada onda (663, 664, 663;664, 663<664*
>a con todos estos datos, se podr2a preguntar cul es la frecuencia de anlisis, definida por la frecuencia
de muestreo sobre la longitud de la se,al y su intervalo de muestreo, definida a su ve/ como la unidad
sobre la frecuencia de muestreo.

S-ar putea să vă placă și