Você está na página 1de 32

MATLAB

AULA 3

Dr. Reinel Beltrn Aguedo

reinelbeltran71@gmail.com

Tipos de Dados em MatLab


Array
Char
a

Numeric

Uint8
(8 bit unsigned integer,
from 0 to 255,
e.g., image gray scales)

Structure
image.width = 64
image.name = aula3

Double
e.g., 3.2567
(8 bytes)

Cell

Doubles e Uint8
a = 1:5
a=
1 2

Double
A maioria das funes o
argumento de entrada
double
return double

Necessidade de converter
uint8 para double antes de
realizar operao matemtica

b = uint8(a)
b=
1 2 3

whos
Name
a
b

Size
1x8
1x8

Bytes Class
40 double array
5 uint8 array

b*a'
Error using *
MTIMES is not fully supported for integer classes. At
least one input must be scalar.
To compute elementwise TIMES, use TIMES (.*)
instead.

double(b)*a
ans =
55

Tipo de Dados Char


>> a = 'hello';
>> whos
Name Size
a
1x5
>> a(1)
ans =
h

Bytes Class
10
char

Attributes

>> b=[a,' again']


b=
hello again
>> whos
Name
a
b

Size

1x5
1x11

Bytes Class
10 char
22 char

Attributes

Tipo de Dados Struct


>> aula.nome='Joo';
>> aula.idade=23;
>> aula.disciplina='Matlab';
>> aula.entidade='FUCAPI';
>> aula.ano=2016;
>> aula

aula =
nome: 'Joo'
idade: 23
disciplina: 'Matlab'
entidade: 'FUCAPI'
ano: 2016

>> whos
Name
Size
Attributes

aula

1x1

Bytes Class

928 struct

Arrays de Estruturas
>> aula(1)=aula;
>> aula(2).nome='Pedro;

>> aula(1)

>> aula(2).ano=2016;
ans =

>> aula(2).entidade='FUCAPI';

nome: 'Joo'
idade: 23
disciplina: 'Matlab'
entidade: 'FUCAPI'
ano: 2016

>> aula(2).disciplina='Matlab';
>> aula(2).idade=20;
>> whos
Name

Size

Bytes Class

aula

1x2

1538 struct

Attributes

>> aula(2)
ans =
nome: 'Pedro'
idade: 20
disciplina: 'Matlab'
entidade: 'FUCAPI'
ano: 2016

Fluxo de controle

Estruturas if-else-end
for ndice = comea:incremento:para
declaraes
end
>> for a=1:10

>> for m=1:10


x(m)=m^2;
end
>> x(3)
ans =
9

a<=3; C(a)=a^2;
a=3:7; C(a)=a+5;
a=7:10; C(a)=a;
end
>> stem(C)
Plot a sequncia
discreta de C

Estruturas if-else-end
Matlab tem quatro tipos de afirmaes if,
elseif, else,end
Elas fazem o controle de fluxo baseadas
no teste lgico.
Em sua forma bsica:
If teste
declaraes
end

function retorno=posneg(ent)
if all(ent>0)
retorno=1;
elseif all (ent<0)
retorno=-1;
else
retorno=0;
end
All: True if all elements of a
vector are nonzero.

O teste uma expresso em que h 1(verdadeiro) ou 0(falso) executado


entre o if e end e retorna se o teste der verdadeiro, quando falso so
ignoradas as declaraes.
Testes adicionais podem ser feitos usando elseif e else.

Estrutura switch, case, otherwise


Forma bsica
switch teste
case resultado1
declarao
case resultado2
declarao
...
otherwise
declarao
end

A expresso em switch case s


pode ser um escalar ou uma string.

M-file switchx.m
switch x
case 1
disp('x is 1');
case {2,3,4}
disp('x is 2, 3 or 4');
case 5
disp('x is 5');
otherwise
disp('x is not 1, 2, 3, 4 or 5');
end
>> x=5;
Pressione o boto run:
>> x is 5

While
while teste
declarao
end

n = 1;
while sum(1:n)<=1000
n = n+1;
end

As declaraes so executadas repetidamente enquanto o


valor de teste for igual a 1, por exemplo, achar o primeiro

inteiro n para qual 1+2+ +n maior que 1000.

Grficos

Plotagem de Grficos
axis ajusta a escala do grfico s coordenadas dos pontos plotados.
Sintaxe: axis([xmin xmax ymin ymax])
>> x1=-1; y1=-1; x2=1; y2=-1; x3=-1; y3=1; x4=1; y4=1;
>> plot(x1,y1,'o',x2,y2,'o',x3,y3,'o',x4,y4,'o')
>> axis([-2 2 -2 2])
>> axis square %forma quadrada >> axis normal ou
>> x=[-1 1 -1 1] ; y=[-1; -1; 1; 1] ; plot(x,y,'.r');axis([-2 2 -2 2])
2

1.5

1.5

0.5

0.5

-0.5

-0.5

-1

-1

-1.5
-2
-2

-1.5

-1

-2
-2

-1

subplot trabalha com multiplicidade de grficos


>> renda= [3.2 4.1 5.0 5.6];
>> gastos= [2.5 4.0 3.35 4.9];
>> subplot(2,1,1); plot(renda)
>> subplot(2,1,2); plot(gastos)

Plotagem
de Grficos

Comando subplot
>> t = 0:.1:2*pi;
subplot(2,2,1)
plot(cos(t),sin(t))
subplot(2,2,2)
plot(cos(t),sin(2*t))
subplot(2,2,3)
plot(cos(t),sin(3*t))
subplot(2,2,4)
plot(cos(t),sin(4*t))

O primeiro ndice o nmero


de eixos na vertical, o segundo
o nmero de eixos na
horizontal e o ltimo o nmero
de ordem ou a posio.

subplot 221
plot(1:10)
subplot 222
plot(0,*)
subplot 212
plot([1 0 1 0])

Propriedades de Grficos
Colocar rtulos em grficos: xlabel, ylabel, title
>> xlabel(eixo x'); ylabel(eixo y'); title(pontos no plano')
Inserir texto em ponto de sua escolha no grfico
>> gtext('P1'); gtext('P2'); gtext('P3'); gtext('P4')
help plot : Especificaes das caractersticas
do grfico
>> t = 0:.1:2*pi;
>> plot(t,sin(t),t,sin(1.05*t))
>> gtext('frequency = 1');
>> gtext('frequency = 1.05');axis([0 max(t) -1 1])

Pode-se especificar o estilo de linha, o smbolo que


marca o ponto e cor do grfico ainda pelo prompt (>>).
>> x=[4 5 6; 1 2 3]; y=(x.^2)
>> plot(x,y,'-.or')
>> plot(x,y,'-hk')

Propriedades de Grficos
>> t = 0:.1:2*pi; plot(t,sin(t),t,sin(1.05*t))
>> gtext('frequency = 1');
>> gtext('frequency = 1.05');
>> axis([0 max(t) -1 1])

>> dt = 2*pi/10;
t = dt:dt:10*dt;
x = cos(t);
y = sin(t);
plot(x,y)
axis equal off
for i = 1:10
text(x(i),y(i),int2str(i))
end

Comando plot3
Grfico tridimensional
>> x1=3; y1=4; z1=5;
>> plot3(x1,y1,z1,'*')

>> th=[0:.01:2]*2*pi;
x=cos(th);
y=sin(th);
z=th;
plot3(x,y,z)

Grficos tridimensionais

Grficos tridimensionais

Coordenadas polares
>> th=0:2*pi/100:2*pi;
rho=3*th;
polar(th,rho)

Plotagem de Grficos
Buscar:
fplot
figure
hold
text

Exerccios de Fixao
% TRABALHANDO COM NMEROS COMPLEXOS
a = [1 2;3 4] + i*[5 6;7 8]
realz = real(z)
imagz = imag(z)
modz = abs(z)
fasez = angle (z)

% MULTIPLICAO DE POLINMIOS
% x3 = (x^2 + 3x + 2).(x^2 - 2x + 1)
x3 = conv([1 3 2],[1 -2 1]) % Como ele faz isto?

% Determinao das razes de um polinmio


roots([1 3 2])
roots([1 -2 1])
roots(x3)

% RECURSOS GRFICOS
y = [0 2 5 4 1 0];
plot(y)
help pi
t = 0:.4:4*pi
y = sin(t)
z = cos(t);
plot(t, y, ., t, z "-.")

title(Funes)
xlabel("t")
ylabel("Seno e Cosseno")
text(3, 0.5, Seno)
% Aps o prximo comando, selecione a posio que deseja colocar
% o texto Cosseno com o mouse
gtext(Cosseno)

Exerccios

1 - Para as matrizes A e B, definidas a baixo, execute as seguintes


operaes e interprete os resultados.

1 2 3
A 0 1 2

3 1 1

3 1 0
B 0 1 1

3 7 0

a) A+B

b) A*B

c) A.*B

d) A.^2

e) A^2

f) A*A

g) inv(A)

h) inv(A)*A

i) A\A

j) A/A

k) A/A eye(3)

l) A*inv(A) eye(3)

2 Utilizando as funes zeros, ones e eye construa as seguintes


matrizes:

0
0
A
0
0

0 0 0
0 0 0

0 0 0
0 0 0

1 1 1
B 1 1 1

1 1 1

1
C
1

1 0
D

0
1

3 A partir das matrizes A e B do exerccio 2 e D = [A B]


verifique quais so as operaes vlidas.
a) A*D

b) D*A

c) D*A

e) A*B*D

f) A*D

g) D(:,1:3)*A

h) D(1:3,:)*A

d) A*D*B

4 A partir de um conjunto 500 de valores aleatrios com


distribuio normal (mdia 10 e desvio padro 2) determine a
percentagem de valores:

a) superiores a 10
b) entre 8 e 12;
c) entre 6 e 14;
d) entre 6 e 14;
e) superiores a 15.
5- Represente graficamente a funo de densidade de probabilidade
da distribuio normal reduzida, no intervalo de -3 a 3.

f ( x)

x2
1 2
e

6 A partir de um conjunto de 100 valores aleatrios com mdia 500 e desvio padro
100, representando uma srie de valores anuais de precipitao entre 1900 e
1999, elabore um programa que:
a) Represente graficamente esta srie temporal (Figura 1).
b) Conte o nmero de ocorrncias em que a precipitao excedeu o valor mdio
mais duas vezes o desvio padro (valores considerados anmalos).
c) Represente no grfico, atravs de crculos pretos, os valores anteriores.
d) Utilizando a funo hist, construa um histograma, com 20 classes, que
represente a distribuio da precipitao (Figura 2).
14

750
700

12

650
10

Precipitao

600
550

500
6

450
400

350
2

300
250
1900

1920

1940

1960

1980

2000

0
250

300

350

400

450

Ano

Figura 1

Figura 2

500

550

600

650

700

7 Plotar a funo seno entre pi e pi. Colocar ttulo, e as etiquetas nos eixos.
8 Crie o vetor x=[0 36 72 108 144 180 216 252 288 324] atravs do comando for.
9 Plotar 360 pontos de um perodo da funo y=sen(2*pi*x/360), usando o for.

10 Construa o vetor y = [64 32 16 4 2 1] , usando o while.

FIM