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

6/7/2016

Inicio

Operadoresrelacionales

MATLAB

Bsico

Operadoresrelacionales

Clculosaritmticos
Variablesescalares
Vectoresymatrices
Entrada/salida
Grficos
bidimensionales

Losoperadoresrelacionalessonsmbolosqueseusanparacomparardosvalores.Sielresultadodela
comparacinescorrectolaexpresinconsideradaesverdadera,encasocontrarioesfalsa.Porejemplo,8>4
(ochomayorquecuatro)esverdadera,serepresentaporelvalor1,encambio,8<4(ochomenorquecuatro)es
falsa,serepresentaporelvalor0.Enlaprimeracolumnadelatabla,sedanlossmbolosdelosoperadores
relacionales,ellasegunda,elnombrededichosoperadores,yacontinuacinsusignificadomedianteunejemplo.
Operador

nombre

ejemplo

significado

Sentencias
condicionales

<

menorque

a<b

aesmenorqueb

Sentenciasiterativas

>

mayorque

a>b

aesmayorqueb

==

iguala

a==b

aesigualab

~=

noiguala

a~=b

anoesigualab

<=

menorqueoiguala

a<=5

aesmenorqueoigualab

>=

mayorqueoiguala

a>=b

aesmenorqueoigualab

Funciones

Ejemplos

MATLABnodisponedeltipodedatoboolean(true,false),silaexpresinesverdaderadacomoresultado1,si
esfalsadacomoresultado0.
>>5>4
ans=1
>>5>6
ans=0

Elcarcter~seobtienemanteniendopulsadalateclaAltypulsandoeneltecladonumricolasteclas126.
CorrespondealcarcterASCIIdecimal126.
Sedebetenerespecialcuidadoennoconfundireloperadorasignacinconeloperadorrelacionaliguala.Las
asignacionesserealizanconelsmbolo=,lascomparacionescon==.
Sidosescalaresaybsecomparanelresultadopuedeserverdadero(1)ofalso(0)deacuerdoconlatabla
anterior.
Siaybsonvectoresdelamismadimensin,secomparacadaelementoa(i)conb(i)elresultadoesqueel
elemento(i)delvectorresultadou(i)puedecontenerun10.
Sisecomparandosmatrices(solamentematricesdelamismadimensinsepuedencomparar)lacomparacinse
haceelementoaelementoyelresultadoesotramatrizdelamismadimensinconunosycerosdeacuerdoconel
resultadodelacomparacin.
>>a=[1569411714]
a=1569411714
>>b=[8209219710]
b=8209219710
>>u=a>=b
u=
1011011

Unvectorounamatrizcomouquecontieneunosycerosesuntipoespecialdevectoromatrizdenominado
lgicoyseutilizamuchoenMATLABcomovamosaverenestapgina.

Losoperadoreslgicos
&AND(elresultadoesverdaderosiambasexpresionessonverdaderas)
|OR(elresultadoesverdaderosialgunaexpresinesverdadera)
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/condicional/condicional.html

1/8

6/7/2016

Operadoresrelacionales

~NOT(elresultadoinviertelacondicindelaexpresin)
ANDyORtrabajancondosoperandosyretornanunvalorlgicobasadasenlasdenominadastablasdeverdad.
EloperadorNOTactasobreunoperando.Estastablasdeverdadsonconocidasyusadasenelcontextodela
vidadiaria,porejemplo:"sihacesolYtengotiempo,iralaplaya","siNOhacesol,mequedarencasa","si
llueveOhaceviento,iralcine".LastablasdeverdaddelosoperadoresAND,ORyNOTsemuestranenlas
tablassiguientes
EloperadorlgicoAND,&
x

resultado

EloperadorlgicoOR,|
x

resultado

EloperadorlgicoNOT,~
x

resultado

LosoperadoresANDyORcombinanexpresionesrelacionalescuyoresultadovienedadoporlaltimacolumna
desustablasdeverdad.Porejemplo:
(a<b)&(b<c)

esverdadero,siambassonverdaderas.Sialgunaoambassonfalsaselresultadoesfalso.Encambio,laexpresin
(a<b)|(b<c)

esverdaderasiunadelasdoscomparacionesloes.Siambas,sonfalsas,elresultadoesfalso.
Laexpresin"NOaesmenorqueb"
~(a<b)

esfalsasi(a<b)esverdaderoyesverdadera,silacomparacinesfalsa.Portanto,eloperadorNOTcambiael
estadodeverdaderoafalsoydefalsoaverdadero.
MATLABdisponedefuncionesquesonequivalentesalosoperadoreslgicos.Estasson:
and(x,y)equivalenteax&y
or(x,y)equivalenteax|y
not(x)equivalentea~x
Losoperadoreslgicosencombinacinconlosrelacionalessepuedenaplicartambinavectores,
>>a=[1537]
>>b=[0287]
>>u=(a>b)&(a>4)
u=
0100
>>u=(a>b)|(a>4)
u=
1101

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/condicional/condicional.html

2/8

6/7/2016

Operadoresrelacionales

Accesoaloselementosdeunvector
Yahemosestudiadocomoseaccedealoselementosdeunvectorounamatrizatravsdesusndices,enesta
pginavamosavernuevasformasdeaccederdichoselementoscuandocumplendeterminadascondiciones.
Paraobtenerloselementosdelvectoraquesonmenoresque10
>>a=[1569411714]
a=1569411714
>>u=a<10
u=0111010
>>c=a(u)
c=
6947

Comovemoselvectoru=a<10contienenunosyceroscomoresultadodelacomparacindecadaunodelos
elementosdelvectoracon10.Siesmenordevuelve1siesmayoroigualdevuelve0.Sinembargo,c=a(u)crea
unvectorformadoporaquelloselementosdelvectoraquesecorrespondencon1enelvectoru.
Seaelvectorx=[4,0,5,3,0,3,7,1,6],vamosacontarcuantoselementosdelvectorxsonpositivos,negativoso
nulos
>>x=[4,0,5,3,0,3,7,1,6]
x=405303716
>>u=x<0
u=100100010
>>ne=sum(u)
ne=3
>>pos=sum(x>0)
pos=4
>>cero=sum(x==0)
cero=2

Productodeunvectorporunvectorlgico
Vamosacalcularelproductoelementoaelementodelvectoraporelvectorlgicou,queutilizaremosenlos
siguientesapartados
>>a=[15,6,9,4,11,7,14]
a=1569411714
>>u=[0,1,1,1,0,1,0]
u=0111010
>>a.*u
ans=
0694070

Representarlapartepositivadeunafuncin
Representarlafuncinf(x)definidadelsiguientemodo
cos(x) cos(x) > 0
f (x) = {
0 cos(x) 0

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/condicional/condicional.html

3/8

6/7/2016

Operadoresrelacionales

x=0:pi/30:3*pi
y=cos(x)
y=y.*(y>0)
plot(x,y)
set(gca,'XTick',0:pi/2:3*pi)
set(gca,'XTickLabel',{'0','pi/2','pi','3pi/2','2pi','5pi/2','3pi'})

Laexpresin(y>0)devuelveunvectorcuyoselementosson1cuandocos(x)espositivoy0encasocontrario.El
productoelementoaelementoy.*(y>0)conservainalteradoslosvalorespositivosylosotrosloshacecero.

Representarunafuncinescaln
2x0 x < 1

21 x < 3
f (x) =
x + 53 x < 5

0x 5

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/condicional/condicional.html

4/8

6/7/2016

Operadoresrelacionales

x=0:0.01:6
y=(2*x).*(0<=x&x<1)+2*(1<=x&x<3)+(x+5).*(3<=x&x<5)
plot(x,y)
ylim([0.12.1])

Evitandoladivisinentrecero
Supongamosquequeremosdibujarlagrficadelafunciny=sin(x)/xdesde4a4.Perocuandoxescero
tenemosunadivisinentrecero.Unmododeevitaresteproblemaessustituirx=0porx=eps.Siescribimoseps
enlaventanadecomandosobtenemosunnmeromuypequeo2.2204e016.

x=4*pi:pi/30:4*pi
x=x+(x==0)*eps
y=sin(x)./x
plot(x,y)

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/condicional/condicional.html

5/8

6/7/2016

Operadoresrelacionales

Laexpresin(x==0)devuelveununocuandox=0,entoncesxtomaelvalorfinalx=epsqueevitaladivisinentre
0.

Evitandoelinfinito
Vamosadibujarlafunciny=tan(x)desde3/2a3/2.Elproblemaesquetan(x)seaproximaacuandox=
/2,3/2,...
x=3*pi/2:pi/100:3*pi/2
y=tan(x)
y=y.*(abs(y)<100)
plot(x,y)
set(gca,'XTick',3*pi/2:pi/2:3*pi/2)
set(gca,'XTickLabel',{'3pi/2','pi','pi/2','0','pi/2','pi','3pi/2'})

abs(y)<100devuelveunvectorqueescerosolamentecercadelasasntotas(cuandolatangenteesmuygrandeen
valorabsoluto),yununoenlosdemscasos.Sesugiereponerunsmbolocomentario%delantedelatercera
lneaparaanularla,guardarelscriptyprobarelefecto.

FuncionesMATLAB

xor(a,b)

ORexclusivo.Devuelve1siunoperandoes
verdaderoyelotroesfalso.Devuelve0silosdos
sonverdaderosolosdossonfalsos.

>>xor(7,0)
ans=1
>>xor(7,5)
ans=0

all(a)

Devuelve1sitodosloselementosdelvectorson
distintosdecero.Devuelve0siunooms
elementossoncero

>>a=[53117815]
>>all(a)
ans=1
>>b=[36114013]
>>all(b)
ans=0

Devuelve1sihayelementosdelvectorqueson
distintosdecero.Sitodosloselementosdel
vectorsoncerodevuelvecero.

>>a=[50140013]
>>any(a)
ans=1
>>b=[000000]
>>any(b)
ans=0

any(a)

Devuelvelosndicesdeloselementosdelvector
distintosdecero
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/condicional/condicional.html

>>a=[074280039]
>>find(a)

6/8

6/7/2016

Operadoresrelacionales

find(a)
find(a>d)

Siaesunvectordevuelvelosndicesdelos
elementosquesonmayoresqued(sepuede
utilizarcualquierotrooperadorrelacionaldistinto
aa>d)

ans=234589
>>find(a>4)
ans=259

Vamosutilizarlafuncinfindenelsiguienteejemplo:
Lastemperaturasmximasdel1al28defebrerohansido:
15,14,10,12,6,8,12,16,18,20,17,15,13,11,9,7,5,4,6,8,12,13,15,19,21,23,16,14
Determinarelnmerodedasylasfechasenlaquelatemperaturamximadeldaesmayoroiguala15grados
centgrados
Comohemosvisto,T>=15esunvectorcuyoselementostomanelvalorde1sisecumplelacondiciny0en
casocontrario.
>>T=[151410126812161820171513119754681213151921231614]
>>length(T)
ans=28
>>dias=sum(T>=15)
dias=11
>>fechas=find(T>=15)%ndicesdeloselementosdelvectorTqueson>=que15
fechas=
1891011122324252627
>>length(fechas)
ans=11

Enelcasodelafuncinallsepuedeemplearensentenciasdeestetipo:Sitodosloselementosdelvectorason
mayoresqueuno,haceralgunatarea.Delmismomodosepuedeemplearlafuncinany.
ifall(a>1)
haceralgo...
end

Ejemplo
Ensiguientevectorguardalasedadesdevariaspersonas:edad=[45,47,15,23,7,60,35,28,32,10,41].Determinar
Elnmerototaldepersonas,
Quienessonadultos(marcarconununo)yelnmerodeadultosmayoresde20aos,
Quienessonniosyelnmerodenios,quetengan10aosomenos.
Quienessonjvenesyelnmerodejvenes,mayoresde10aosyhasta20aosinclusive
>>edad=[45,47,15,23,7,60,35,28,32,10,41]
>>length(edad)
ans=11
>>adultos=edad>20
adultos=11010111101
>>n_adultos=sum(adultos)
n_adultos=8
>>ninhos=edad<=10
ninhos=00001000010
>>n_ninhos=sum(ninhos)
n_ninhos=2
>>jovenes=edad>10&edad<=20
jovenes=00100000000
>>n_jovenes=sum(jovenes)
n_jovenes=1
>>n_ninhos+n_adultos+n_jovenes
ans=11

Creamosunvectordedatosdelospesosdelaspersonas:peso=[70,83,45,60,25,55,90,73,65,35,78]
Cuantosadultospesanmsde65kg?
>>edad=[45,47,15,23,7,60,35,28,32,10,41]
>>peso=[70,83,45,60,25,55,90,73,65,35,78]
>>edad>20
ans=11010111101
>>peso>65
ans=11000011001
>>edad>20&peso>65
ans=11000011001
>>sum(edad>20&peso>65)
ans=5

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/condicional/condicional.html

7/8

6/7/2016

Operadoresrelacionales

Utilizarfindparacrearunvectoradultosdeedadesdelosadultos
>>edad=[45,47,15,23,7,60,35,28,32,10,41]
>>find(edad>20)
ans=124678911
>>adultos=edad(find(edad>20))
adultos=4547236035283241
>>length(adultos)
ans=8

Determinarelpesodelterceradultoenelvectoradultos
>>edad=[45,47,15,23,7,60,35,28,32,10,41]
>>peso=[70,83,45,60,25,55,90,73,65,35,78]
>>indices=find(edad>20)
indices=124678911
>>peso(indices(3))
ans=60

Dadoelvectorv=1:16eliminartodosloselementosquesonmltiplosdetres.
>>v=1:16
>>v(rem(v,3)==0)=[]
v=1245781011131416

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/basico/condicional/condicional.html

8/8

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