Você está na página 1de 209

The Language of Technical Computing

MATLAB

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

MATLAB
O Curso

Computao Programao Visualizao Simulink

Carlos Alexandre Mello cabm@cin.ufpe.br

MATLAB
O que ?
o Ferramenta de apoio Engenharia
Clculos Matemticos Desenvolvimento de Algoritmos Anlise, Explorao e Visualizao de dados Grficos de engenharia

MATLAB = Matrix Laboratory


o Toolboxes (M-files) o Simulink : simulao de sistemas dinmicos no-lineares

Desenvolvido pela Math Works

Carlos Alexandre Mello cabm@cin.ufpe.br

MATLAB
Tela de Entrada Comandos:
o helpwin o demo

Prompt: >>
o Sistema pronto para executar tarefas
Exemplo: >> v = [1 2 3; 4 5 6; 7 8 9]

Carlos Alexandre Mello cabm@cin.ufpe.br

Funes de Gerenciamento de Memria whos


o mostra a memria alocada

MATLAB

Carlos Alexandre Mello cabm@cin.ufpe.br

MATLAB
Help

O Help (Ajuda) do MatLab pode ser acessado de duas formas diferentes:


o Comando helpwin
O termo a ser pesquisado deve ser inserido aqui

Carlos Alexandre Mello cabm@cin.ufpe.br

MATLAB
Help

Help do MatLab:
o Comando help (usado no prompt):

Carlos Alexandre Mello cabm@cin.ufpe.br

Workspace - rea de Trabalho Exemplo:


o o o o >> a = 2; >> b = 3; >> c = a + b >> c = 5

MATLAB

Caso nenhuma varivel seja definida, o MatLab assume uma varivel padro chamada ans (de answer = resposta, em ingls) No exemplo anterior, teramos:
o >> a + b o >> ans = 5

Carlos Alexandre Mello cabm@cin.ufpe.br

Workspace - rea de Trabalho

MATLAB

Comentrios
o Qualquer texto precedido de %

Pontuao
o ; - Ponto e Vrgula
Suprime a visualizao de um resultado
Sem ponto e vrgula o resultado repetido na tela

Com ponto e vrgula o resultado apenas armazenado na memria

Carlos Alexandre Mello cabm@cin.ufpe.br

Variveis Especiais no MatLab

MATLAB

Valores Especiais:
o o o o o o o pi i,j inf NaN version computer flops 3.1415926535897.... Unidade Imaginria Infinito (n/0 = inf) Not-a-Number (inf/inf) Verso do MatLab Tipo de computador Contagem de operaes de ponto flutuante

Carlos Alexandre Mello cabm@cin.ufpe.br

10

Nmeros Complexos Representados pelas letras i ou j


o >> a=1 - 2i; o >> a = 1 - 2j;

MatLab

Uma das poucas variveis do MatLab que permite a notao com o uso da varivel i ou j justaposta sem o sinal da multiplicao
o 2i = 2*i o 2j = 2*j

Carlos Alexandre Mello cabm@cin.ufpe.br

11

Matemtica Elementar

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

12

Matemtica Elementar Operaes aritmticas:


o Adio:
a+b

MATLAB

o Subtrao
a-b

o Multiplicao
a*b

o Diviso
a/b ou b\a (b divide a)

o Potenciao
a^b

o Raiz Quadrada
sqrt(a)

Carlos Alexandre Mello cabm@cin.ufpe.br

13

Funes Matemticas Elementares

MATLAB

Funes trigonomtricas bsicas em Radianos


o sin, cos, tan, asin, acos, atan

Arredondamento
o ceil(x)
Arredondamento para cima

o floor(x)
Arredondamento para baixo

o fix(x)
Arredondamento na direo do zero

o round(x)
Arredondamento para o nmero inteiro mais prximo

Carlos Alexandre Mello cabm@cin.ufpe.br

14

Funes Matemticas Elementares

MATLAB

Nmeros Inteiros
o rem(x,y)
Resto da diviso de x por y

o sign(x)
Funo sinal: retorna o sinal de x; igual a 1, se x > 0, -1, se x < 0 e 0, se x = 0

o gcd(x,y)
Mximo Divisor Comum dos inteiros x e y

o lcm(x,y)
Mnimo Mltiplo Comum dos inteiros x e y

Carlos Alexandre Mello cabm@cin.ufpe.br

15

Vetores

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

16

MATLAB
Vetores

Vetores
o Matrizes com apenas uma linha o Conjunto de elementos que podem ser nmeros inteiros, reais, complexos ou caracteres
>> x = [1 2 3 4 5];

o Elementos separados por espaos em branco e delimitados por colchetes [ ]


>> y = [ matlab verso 5];

o Caracteres sempre entre apstrofos !!

Carlos Alexandre Mello cabm@cin.ufpe.br

17

MATLAB
Vetores

Endereamento Vetorial
o Todos os elementos de um vetor podem ser acessados por um ndice
>> x = [1 4 7]; x(1) = 1 x(2) = 4 x(3) = 7

o Cuidados:
O primeiro elemento tem ndice 1 No possvel acessar um elemento que no exista no vetor:
x(4) = ERRO !!!!

Carlos Alexandre Mello cabm@cin.ufpe.br

18

MATLAB
Vetores

Endereamento Vetorial
o Observao:
x = [matlab verso 5]
x(1) = m x(12) = o

Cada caractere um elemento do vetor !

o possvel acessar um bloco de elementos com o operador dois pontos (:)


>> x= [1 4 6 2 7 8 3]; >> x(1:4) = [1 4 6 2]
Todos os elementos de x do 1o. ao 4o.

Carlos Alexandre Mello cabm@cin.ufpe.br

19

MATLAB
Vetores

Endereamento Vetorial
o Pode-se acessar os elementos em ordem inversa
>> x= [1 4 6 2 7 8 3]; >> x(4:-1:1) = [2 6 4 1]
Todos os elementos de x do 4o. ao 1o. de -1 em -1 -1 = Passo !

O passo pode ser qualquer nmero inteiro positivo ou negativo

Carlos Alexandre Mello cabm@cin.ufpe.br

20

MATLAB
Vetores

Construo automtica de vetores


o >> a = 1:5 o >> a = (1:5)
Cria um vetor a com elementos 1, 2, 3, 4, 5

o >> a=1:2:5 o >> a=(1:2:5)


Cria um vetor a com elementos 1, 3, 5 Passo = 2

o Como antes, o passo pode ser negativo


>> a =(5:-1:1)*pi
Carlos Alexandre Mello cabm@cin.ufpe.br 21

MATLAB
Vetores

Construo automtica de vetores Dados 2 vetores quaisquer a e b:


o a = [1 2 5] o b = [3 4 0]

pode-se construir um terceiro vetor c atravs da juno de a e b


o o o c = [a b] c = [1 2 5 3 4 0] Se c = [b a], ento c = [ 3 4 0 1 2 5]
Carlos Alexandre Mello cabm@cin.ufpe.br 22

MATLAB
Vetores

Orientao de Vetores
o Transposio de Vetores Vetores Reais

Carlos Alexandre Mello cabm@cin.ufpe.br

23

MATLAB
Vetores

Orientao de Vetores
o Transposio de Vetores Vetores complexos

Operador ponto...

...gera a matriz transposta conjugada


Carlos Alexandre Mello cabm@cin.ufpe.br 24

MATLAB
Funes Matemticas Elementares

Vetores

Para um vetor:
o max(x)
Elemento mximo

o min(x)
Elemento mnimo

o mean(x)
Mdia

o median(x)
Mediana

o prod(x)
Produto dos elementos

o sum(x)
Soma dos elementos

o sort(x)
Ordenao dos elementos de forma decrescente
Carlos Alexandre Mello cabm@cin.ufpe.br 25

Vetores e Matrizes Vetores Especiais


o rand(1,n)
Cria um vetor de n elementos onde cada elemento um nmero aleatrio entre 0 e 1
Exemplo: rand(1,5)

MATLAB

Dica: Para gerar um nmero (UM nmero apenas, no um vetor !!) aleatrio entre 0 e X usa-se o comando rand da seguinte forma:
rand(1)*X Exemplo: rand(1)*10 Cria um nmero REAL entre 0 e 10 Exemplo: round(rand(1)*10) Cria um nmero INTEIRO entre 0 e 10

Carlos Alexandre Mello cabm@cin.ufpe.br

26

Matrizes

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

27

MATLAB
Matrizes

Definio de Matrizes Manipulao de Matrizes Sub-matrizes Comparao Dimenso Operaes

Carlos Alexandre Mello cabm@cin.ufpe.br

28

MATLAB
Matrizes Criao de Matrizes

Ponto-e-vrgula usado para separar as linhas da matriz CUIDADO!!!


o Todas as linhas da matriz devem ter o mesmo nmero de elementos!!!
29

Carlos Alexandre Mello cabm@cin.ufpe.br

MATLAB
Matrizes

Operaes Escalares
o Seja B um vetor ou uma matriz, so vlidas quaisquer operaes com escalares:
B-2 3*B - 4 B/2 B+5

Carlos Alexandre Mello cabm@cin.ufpe.br

30

MATLAB
Matrizes

Operaes entre Matrizes


o Adio e Subtrao so vlidas sempre que as matrizes envolvidas tiverem as mesmas dimenses o Multiplicao e Diviso devem obedecer s normas relacionadas as dimenses das matrizes:
Amxn*Bnxp = Cmxp Amxp/Bnxp=Cmxn A/B = inv(B)*A, se B for quadrada

Carlos Alexandre Mello cabm@cin.ufpe.br

31

MATLAB
Matrizes

Operaes entre Matrizes


o Operaes Pontuadas
Sejam A e B duas matrizes
A.*B -> Multiplica cada elemento de A pelo correspondente em B O mesmo acontece na diviso em A./B

o Exponenciao
A.^2 -> Eleva cada elemento de A ao quadrado (ou qualquer outra potncia) A^2 = A*A

Carlos Alexandre Mello cabm@cin.ufpe.br

32

MATLAB
Matrizes

Matrizes Especiais
o ones(m,n)
Cria uma matriz mxn onde todos os seus elementos so iguais 1

o zeros(m,n)
Cria uma matriz mxn onde todos os seus elementos so iguais 0

Carlos Alexandre Mello cabm@cin.ufpe.br

33

MATLAB
Matrizes

Manipulao de Matrizes
o Seja:

Elemento a(3,3)

o a(3,3)=0 faz com que o elemento da 3a. linha e 3a. coluna seja igual a zero

Carlos Alexandre Mello cabm@cin.ufpe.br

34

MATLAB
Matrizes

Manipulao de Matrizes
o a(:,3) l todos (:) os elementos da terceira coluna de a o a(3,:) l todos os elementos da terceira linha de a

Carlos Alexandre Mello cabm@cin.ufpe.br

35

Vetores e Matrizes

MATLAB

Vetores Lgicos
o Construo de Vetores a partir de vetores lgicos

Carlos Alexandre Mello cabm@cin.ufpe.br

36

Vetores e Matrizes

MATLAB

Dimenso de Vetores e Matrizes


o size(A)
Retorna um vetor [n_linhas n_colunas] Qualquer elemento do vetor pode ser acessado como um vetor qualquer
>> x = size(A) >> x = [2 3] x(1) = 2

x(2) = 3

o length(A)
Retorna apenas o nmero de linhas OU o nmero de colunas (o que for maior)
Corresponde a max(size(A))

Carlos Alexandre Mello cabm@cin.ufpe.br

37

Vetores e Matrizes

MATLAB

Matrizes Especiais
o rand(m,n)
Cria uma matriz mxn onde cada elemento um nmero aleatrio entre 0 e 1

Carlos Alexandre Mello cabm@cin.ufpe.br

38

Resolvendo Equaes Lineares


Vetores e Matrizes

MATLAB

AX = B
w + 2y + z = 3 2w -y + 2z = 1 Ax = B, logo: x = A\B y + 3z = 2

Carlos Alexandre Mello cabm@cin.ufpe.br

39

Funes Matriciais A Matriz Identidade I tal que A*A = I e A *A = I calculada no MatLab com a funo eye o eye(m)
Matriz identidade quadrada mxm
-1 -1

MATLAB

Carlos Alexandre Mello cabm@cin.ufpe.br

40

Funes Matriciais O inverso de uma matriz A calculado com a funo inv(A) Tambm possvel calcular o determinante de uma matriz A mxn com a funo det(A)

MATLAB

Carlos Alexandre Mello cabm@cin.ufpe.br

41

Potncias e Exponenciais Exemplo: A = [1 2 3; 4 5 6; 7 8 9]; X = A^2 Z = A.^2 Y = sqrtm(X) Y = sqrt(X)

MATLAB

X = A*A Z = [a i j ^2] X^(1/2) X.^(1/2)

Carlos Alexandre Mello cabm@cin.ufpe.br

42

Polinmios

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

43

MATLAB
Polinmios MATLAB representa polinmios como matrizes linha contendo os coeficientes ordenados de forma decrescente pela potncia. Por exemplo, o polinmio 3 p(x) = x - 2x - 5 representado no MATLAB como: Observe a presena p = [1 0 -2 -5] do coeficiente de >> r = roots(p) valor zero !!!
o Calcula as razes do polinmio

>> p2 = poly(r)
o Retorna os coeficientes do polinmio dadas as suas razes

Carlos Alexandre Mello cabm@cin.ufpe.br

44

MATLAB
Polinmios

polyval(p, n)
o Resolve o polinmio para o valor n

polyvalm(p,X)
o Resolve o polinmio p para uma matriz X o No caso, por exemplo:
p(X) = X^2 + 3*X + X*I onde I a matriz identidade

Carlos Alexandre Mello cabm@cin.ufpe.br

45

MATLAB

Polinmios

Multiplicao e diviso polinomial corresponde s operaes de convoluo e deconvoluo, implementadas pelas funes conv e deconv Exemplo: a(x)*b(x)
>> a = [1 2 3]; b = [4 5 6]; >> c = conv(a,b) >> c = [4 13 28 27 18]
comprimento de c = comprimento de a + comprimento de b-1

Carlos Alexandre Mello cabm@cin.ufpe.br

46

Convoluo e Deconvoluo
Polinmios

MATLAB

Exemplo: c(x)/a(x)

Quociente
= b(x)

Resto

Carlos Alexandre Mello cabm@cin.ufpe.br

47

Adio de Polinmios
Polinmios

MATLAB

No h funo direta para o clculo Alguns cuidados devem ser tomados:


o A(x)= x + 3x +4 2 o B(x)= 3x + 2x + 1 3 2 o C(x)=A(x)+B(x) = x + 3x + 5x + 5
3

Carlos Alexandre Mello cabm@cin.ufpe.br

48

Adio de Polinmios
Polinmios

MATLAB

No MatLab:
o o o A=[1 0 B=[3 2 C=A+B 3 4] 1] ERRADO

o B=[0 3 2 1] o C=A+B CERTO

Carlos Alexandre Mello cabm@cin.ufpe.br

49

Derivativa Polinomial
Polinmios

MATLAB

A funo polyder calcula a derivada de qualquer polinmio o Exemplo:


>> p = [1 0 -2 -5]; >> q = polyder(p) >> q = 3 0 -2

A funo tambm calcula a derivada do produto de funes:


>> c = polyder(a, b)

Carlos Alexandre Mello cabm@cin.ufpe.br

50

Derivativa Polinomial
Polinmios

MATLAB

A derivada da diviso de dois polinmios calculada chamando polyder com 2 argumentos de sada

Carlos Alexandre Mello cabm@cin.ufpe.br

51

Expanso em Fraes Parciais


Polinmios

MATLAB

A funo residue encontra a expanso em fraes parciais da razo de dois polinmios Exemplo:
-4 + 8s
-1 -1

=
-2

r1 s - p1

r2 + ... + s - p2

rn+ ks s - pn

1 + 6s + 8s

Carlos Alexandre Mello cabm@cin.ufpe.br

52

Expanso em Fraes Parciais


Polinmios

MATLAB

Exemplo (cont):

Carlos Alexandre Mello cabm@cin.ufpe.br

53

Expanso em Fraes Parciais


Polinmios

MATLAB

Exemplo (cont): Volta ao polinmio original

-4 + 8s
-1

-1 -2

1 + 6s + 8s

Carlos Alexandre Mello cabm@cin.ufpe.br

54

Representando Polinmios Graficamente

MATLAB

Para traar o grfico de um polinmio, pode -se usar a funo fplot:


o fplot (funo ou nome, [incio fim da plotagem])

Carlos Alexandre Mello cabm@cin.ufpe.br

55

Representando Polinmios Graficamente

MATLAB

Exemplo:

Carlos Alexandre Mello cabm@cin.ufpe.br

56

Funo de Funes MATLAB representa funes matemticas expressandoas em arquivos-M Por exemplo, considere a funo:
f(x) = 1/(x 2+ 2)

MATLAB

Essa funo pode ser salva em um arquivoM (nome.M) como: function y = nome(x) ... y=1./(x.^2 + 2); ...

Observe esses pontos !!

Carlos Alexandre Mello cabm@cin.ufpe.br

57

Funo de Funes

MATLAB

Quando definimos uma funo dentro de um arquivo-M no MatLab, precisamos utilizar o operador . (ponto) sempre que nos depararmos com operaes de *, /,\ e ^ que envolvam a varivel de entrada
o Como no h uma definio de tipos no MatLab, isso diz a ele que trabalhe com qualquer tipo que seja a varivel de entrada (nmero, matriz, vetor, etc).

Isso no mudar em nada sua funo !! s uma forma de trabalho do MatLab


Carlos Alexandre Mello cabm@cin.ufpe.br 58

Encontrando Zeros de Funes


Funes de Funo

MATLAB

Acha o zero da funo prximo ao ponto -0.2

Carlos Alexandre Mello cabm@cin.ufpe.br

59

Integrao Numrica
Funes de Funo

MATLAB

A rea abaixo de uma seo de uma funo F(x) pode ser determinada pela integrao numrica de F(x), processo chamado de quadratura
funo quad quad8 descrio regra de Simpson Adaptativa regra de Newton Cotes Adaptativa

Carlos Alexandre Mello cabm@cin.ufpe.br

60

Integrao Numrica
Funes de Funo

MATLAB

Por exemplo, para integrar a funo definida no arquivo de teste humps entre 0 e 1, usamos:

Integrao dupla: Funo dblquad


o >> dblquad (filename, xmin, xmax, ymin,ymax)
Problemas com a funo na atual verso do MatLab !!!

Carlos Alexandre Mello cabm@cin.ufpe.br

61

Grficos

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

62

Grficos Bidimensionais
Comando plot
>> x=linspace (0,2*pi,30); %Cria um vetor >> y=sin(x); >> plot(x,y) %Plota o grfico x versus y

Carlos Alexandre Mello cabm@cin.ufpe.br

63

Grficos Bidimensionais
>> z=cos(x); >> plot (x,y,x,z);

Carlos Alexandre Mello cabm@cin.ufpe.br

64

Grficos Bidimensionais
Comando plot:
o Estilos de linha, marcadores e cores: o plot(X,Y,s)
s = y,m,c,r,g,b,w,k (cores) s = ., o, x, +, *, s, d, v, ^, <, >, p, h s = -, :, -., --

Carlos Alexandre Mello cabm@cin.ufpe.br

65

Grficos Bidimensionais
Comando plot:
o Estilos de linha, marcadores e cores: Exemplo:
>> plot(x,y,b:p,x,z,c-, x,z,m+)

Carlos Alexandre Mello cabm@cin.ufpe.br

66

Grficos Bidimensionais

Carlos Alexandre Mello cabm@cin.ufpe.br

67

Grficos Bidimensionais
Legendas
>> xlabel(Varivel X); % Legenda do eixo horizontal >> ylabel (Varivel Y); % Legenda do eixo vertical >> title (Curvas); % Ttulo do Grfico

Carlos Alexandre Mello cabm@cin.ufpe.br

68

Grficos Bidimensionais

Carlos Alexandre Mello cabm@cin.ufpe.br

69

Grficos Bidimensionais
Manipulao de Grficos
>> x=linspace(0,2*pi,30); >> y=sin(x); >> z=cos(x); >> plot(x,y); >> hold on >> plot (x,z,m ) >> hold off

Carlos Alexandre Mello cabm@cin.ufpe.br

70

Grficos Bidimensionais
subplot
o subplot(m,n,p) divide a janela de figura em uma matriz mxn de pequenos eixos e seleciona o p-simo eixo para a atual plotagem

Exemplo:

Carlos Alexandre Mello cabm@cin.ufpe.br

71

Grficos Bidimensionais
subplot

Carlos Alexandre Mello cabm@cin.ufpe.br

72

Grficos Bidimensionais
loglog
o Equivalente ao comando plot, exceto pelo fato de escalas logartmicas serem usadas em ambos os eixos

semilogx
o Equivalente ao comando plot, exceto pelo fato de uma escala logartmica ser usada no eixo x

semilogy
o O mesmo para o eixo y

Carlos Alexandre Mello cabm@cin.ufpe.br

73

Grficos Bidimensionais
area(x,y)
o Equivalente a plot(x,y), exceto pelo fato de que a rea entre os valores 0 e y preenchida

pie(a,b)
o Cria grficos de pizza
>> a=[.5 1 1.6 1.2 .8 2.1] >> pie(a);

Carlos Alexandre Mello cabm@cin.ufpe.br

74

Grficos Bidimensionais
pie(a,b)
>> a=[.5 1 1.6 1.2 .8 2.1] >> pie(a,a==max(a)); % Traa o grfico e separa a % maior fatia

Carlos Alexandre Mello cabm@cin.ufpe.br

75

Grficos Tridimensionais
Comando plot3
>> t=linspace(0,10*pi); >> plot3(sin(t), cos(t),t); >> title(Hlice), xlabel(sen(t)),ylabel(cos(t)),zlabel(t)

Carlos Alexandre Mello cabm@cin.ufpe.br

76

Grficos Tridimensionais
Comando plot3: Grficos de linha

Carlos Alexandre Mello cabm@cin.ufpe.br

77

Grficos Tridimensionais
Grficos de Rede e de Superfcie
o O MatLab define uma superfcie de rede por meio de coordenadas z dos pontos correspondentes a uma grade retangular no plano xy o Ele forma o grfico unindo os pontos adjacentes com linhas e retas o O resultado parece-se com uma rede de pesca com os ns nos pontos correspondentes aos dados o Grficos em rede so teis para visualizao de matrizes grandes ou para a representao grfica de funes de duas variveis

Carlos Alexandre Mello cabm@cin.ufpe.br

78

Grficos Tridimensionais
Funo meshgrid
o [X,Y]=meshgrid(x,y) o Cria uma matriz X cujas linhas so cpias do vetor x e uma matriz Y cujas colunas so cpias do vetor y o Esse par de matrizes pode ser usado para calcular funes de duas variveis usando os recursos de matemtica vetorial do MatLab

Carlos Alexandre Mello cabm@cin.ufpe.br

79

Grficos Tridimensionais
Funo meshgrid
o Exemplo: Gerar pontos de dados espaados no plano xy entre -7,5 e 7,5
>> x=-7.5:.5:7.5; >> y=x; >> [X,Y]=meshgrid(x,y);

uniformemente

o X e Y so um par de matrizes representando uma grade retangular de pontos no plano xy o Qualquer funo z=f(X,Y) pode ser gerada usando-se esses pontos

Carlos Alexandre Mello cabm@cin.ufpe.br

80

Grficos Tridimensionais
Funo meshgrid
o Exemplo:
>> R=sqrt(X.^2+Y.^2); >> Z=sin(R)./R; >> mesh(X,Y,Z)

Carlos Alexandre Mello cabm@cin.ufpe.br

81

Grficos Tridimensionais
Funo surf
o Gera um grfico de superfcie da matriz Z, onde os espaos entre as linhas (chamados de retalhos) so preenchidos. >> surf(X,Y,Z)

Carlos Alexandre Mello cabm@cin.ufpe.br

82

Grficos Tridimensionais
Funo peaks
o Gera uma matriz com valores baseados em uma distribuio Gaussiana o til para demonstrar algumas caractersticas das funes mesh, surf, pcolor, contour

Carlos Alexandre Mello cabm@cin.ufpe.br

83

Grficos Tridimensionais
Funo contour
o Plota o contorno de uma matriz Z tratando os valores de Z como alturas sobre um plano >> [x,y,z]=peaks; >> contour(x,y,z,20);

Carlos Alexandre Mello cabm@cin.ufpe.br

84

Grficos Tridimensionais
Funo contour3
o Plota o contorno de uma matriz Z tratando os valores de Z como alturas sobre um plano em 3 dimenses >> [x,y,z]=peaks; >> contour3(x,y,z,20);

Carlos Alexandre Mello cabm@cin.ufpe.br

85

Grficos Tridimensionais
Funo pcolor
o Mapeia a altura em um conjunto de cores e apresenta a mesma informao do grfico de curvas de nvel contour na mesma escala
>> [x,y,z]=peaks; >>pcolor(x,y,z)

Carlos Alexandre Mello cabm@cin.ufpe.br

86

Grficos Tridimensionais
Funo pcolor

Carlos Alexandre Mello cabm@cin.ufpe.br

87

Grficos Tridimensionais
Uma vez que pcolor e contour mostram a mesma informao na mesma escala, pode ser til sobrepor os dois:
>> [x,y,z]=peaks; >> pcolor(x,y,z) >> shading interp % Remove a grade de linhas >> hold on >> contour(x,y,z,20,k) >> hold off

Carlos Alexandre Mello cabm@cin.ufpe.br

88

Grficos Tridimensionais

Carlos Alexandre Mello cabm@cin.ufpe.br

89

Grficos Tridimensionais
Manipulao de Grficos
o Funo view
Permite mudar o ngulo de observao de um grfico Uso: view(azimute, elev) padro: azimute=-37.5 e elev=30

Carlos Alexandre Mello cabm@cin.ufpe.br

90

Grficos Tridimensionais
- 37.5 30

0 0

90 0

- 37.5 10

Carlos Alexandre Mello cabm@cin.ufpe.br

91

Grficos Tridimensionais
Exemplo de Animao:
o Uso do comando For para grficos
>> [x,y,z]=peaks; >> mesh(x,y,z) >> for i=0:360 view(i,30) pause(0.1); end

Carlos Alexandre Mello cabm@cin.ufpe.br

92

Grficos Tridimensionais
Comando hidden
o Controla a remoo de linhas escondidas o Desativando-se o comando hidden voc pode olhar atravs da rede
>> mesh(peaks(20)+7) >> hold on >> pcolor(peaks(20)) >> hold off >> title(Rede com hidden ativado)

Carlos Alexandre Mello cabm@cin.ufpe.br

93

Grficos Tridimensionais

Carlos Alexandre Mello cabm@cin.ufpe.br

94

Grficos Tridimensionais
>> hidden off >> title(Rede com hidden desativado);

Carlos Alexandre Mello cabm@cin.ufpe.br

95

Grficos Tridimensionais
Funo surfl
o Desenha um grfico e acrescenta contrastes luminosos a partir de uma fonte de luz
>> colormap(gray); % Define as cores usadas >> surfl(peaks), shading interp;

Carlos Alexandre Mello cabm@cin.ufpe.br

96

Grficos Tridimensionais

Carlos Alexandre Mello cabm@cin.ufpe.br

97

Grficos Tridimensionais
>>colormap(cool)

Carlos Alexandre Mello cabm@cin.ufpe.br

98

Grficos Tridimensionais
colormap:
hsv, hot, gray, bone, copper, pink, white, flag, jet, prism, cool, lines, colorcube, summer, autumn, winter, spring

Carlos Alexandre Mello cabm@cin.ufpe.br

99

Grficos Tridimensionais
Grficos Tridimensionais de Funes
>> a=-10:.5:10; >> b=a; >> [X,Y]=meshgrid(a,b); >> Z= (X.^2).*Y; >> mesh(X,Y,Z)

Carlos Alexandre Mello cabm@cin.ufpe.br

100

Grficos Tridimensionais

Carlos Alexandre Mello cabm@cin.ufpe.br

101

Grficos Tridimensionais
>> colormap(gray); >> surfl(Z)

Carlos Alexandre Mello cabm@cin.ufpe.br

102

Grficos Tridimensionais
>> colormap(gray); >> surfl(Z); >> shading interp;

Carlos Alexandre Mello cabm@cin.ufpe.br

103

Simulink

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

104

Simulink
Mdulo para anlise de modelos e construo de funes Para execut-lo, digite
o >> simulink

dentro do MatLab

Carlos Alexandre Mello cabm@cin.ufpe.br

105

Simulink
Tela de Entrada

rea de Projeto

Ferramentas
Carlos Alexandre Mello cabm@cin.ufpe.br 106

Simulink
Para criar um sistema, basta arrastar um bloco das ferramentas para a rea de projeto As conexes entre os blocos so feitas atravs das entradas (>) e sadas (>) de cada bloco As conexes podem ser marcadas (clicando com o mouse) e deletadas (com del)

Carlos Alexandre Mello cabm@cin.ufpe.br

107

Simulink
Mdulos

Fontes

Carlos Alexandre Mello cabm@cin.ufpe.br

108

Simulink
Mdulos

Sadas

Carlos Alexandre Mello cabm@cin.ufpe.br

109

Simulink
Mdulos

Discreto

Carlos Alexandre Mello cabm@cin.ufpe.br

110

Simulink
Mdulos

Linear

Carlos Alexandre Mello cabm@cin.ufpe.br

111

Simulink
Mdulos

No-Linear

Carlos Alexandre Mello cabm@cin.ufpe.br

112

Simulink
Mdulos

Conexes

Carlos Alexandre Mello cabm@cin.ufpe.br

113

Simulink
Mdulos

Blocos e Ferramentas

Carlos Alexandre Mello cabm@cin.ufpe.br

114

Simulink
Exemplo 1:

Carlos Alexandre Mello cabm@cin.ufpe.br

115

Simulink
Exemplo 1: A simulao anterior deve ser executada
o Simulation -> Start

Ao terminar, o resultado pode ser visto no osciloscpio, clicando duas vezes nele

Carlos Alexandre Mello cabm@cin.ufpe.br

116

Simulink
Exemplo 1:

Carlos Alexandre Mello cabm@cin.ufpe.br

117

Simulink
Exemplo 2: A sada do sistema pode ser alterada para um novo formato:

Carlos Alexandre Mello cabm@cin.ufpe.br

118

Simulink
Exemplo 2: Aps a execuo do sistema, o resultado apresentado

Carlos Alexandre Mello cabm@cin.ufpe.br

119

Simulink
Exemplo 3: Soma de duas entradas:

Carlos Alexandre Mello cabm@cin.ufpe.br

120

Simulink
Clicando duas vezes em um bloco, abre-se uma janela com as opes que podem ser alteradas do bloco:

Carlos Alexandre Mello cabm@cin.ufpe.br

121

Simulink
Um mesmo bloco pode assumir diferentes funes:

Carlos Alexandre Mello cabm@cin.ufpe.br

122

Simulink
As propriedades de um bloco podem alterar suas prprias funes, como um somador, por exemplo

Carlos Alexandre Mello cabm@cin.ufpe.br

123

Simulink
Ao ser clicado duas vezes, suas propriedades permitem que o bloco tenha suas funes alteradas , incluindo o nmero de entradas

Carlos Alexandre Mello cabm@cin.ufpe.br

124

Simulink
Resultando num novo bloco

Carlos Alexandre Mello cabm@cin.ufpe.br

125

Simulink
Exemplo 4: Motor c.c. controlado por armadura (retirado do livro Engenharia de Controle Moderno, Ogata, pg 110)

Carlos Alexandre Mello cabm@cin.ufpe.br

126

Simulink
Exemplo 4: Em Diagrama de Blocos:

Carlos Alexandre Mello cabm@cin.ufpe.br

127

Simulink
Exemplo 4: No Simulink, para R=L=J=f=K=Kb=1, temos :

Carlos Alexandre Mello cabm@cin.ufpe.br

128

Simulink
Exemplo 4: Ao ser inicializado, a resposta do osciloscpio ser mostrada como abaixo:

Carlos Alexandre Mello cabm@cin.ufpe.br

129

Simulink
Exemplo 5: Eletrnica Digital: Ou-Exclusivo realizado com portas E, No e Ou o Diagrama:

Carlos Alexandre Mello cabm@cin.ufpe.br

130

Simulink
Exemplo 5: No Simulink

Carlos Alexandre Mello cabm@cin.ufpe.br

131

ToolBox de Sistemas de Controle


Os sistemas contnuos e discretos podem ser descritos na forma de uma funo de transferncia de zeros e plos As funes de transferncia so descritas por razes de polinmios o que facilmente tratado no MatLab atravs de vetores com os coeficientes dos polinmios

Carlos Alexandre Mello cabm@cin.ufpe.br

132

Programao no MatLab Arquivos-M de Comandos

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

133

Programao

MATLAB

No MatLab, os programas so escritos em arquivos de texto denominados Arquivos-M


o Arquivos-M: arquivos que contm cdigo do MatLab. Podem ser:
Funes Scripts (Arquivos-M de comandos)

Como so arquivos de texto podem ser criados usando editores de texto comum

Carlos Alexandre Mello cabm@cin.ufpe.br

134

Programao

MATLAB

Os Arquivos-M so interpretados pelo MatLab para a execuo de seus comandos Assim, para serem executados, os arquivos-M necessitam do MatLab no podendo operar isoladamente Diferente de outras linguagens como, C ou Pascal, onde seus programas so compilados

Carlos Alexandre Mello cabm@cin.ufpe.br

135

Programao

MATLAB

Interpretao
o Vantagem
Cdigo aberto Fcil de ser estudado

o Desvantagem
Necessidade do Programa-Pai

Carlos Alexandre Mello cabm@cin.ufpe.br

136

Programao

MATLAB

Arquivos-M
o Para problemas simples, mais fcil introduzir os comandos no prompt do MatLab o No entanto, se o nmero de comandos grande, ou se voc deseja mudar o valor de uma ou mais variveis e re-executar alguns comandos, pode tornar-se tedioso introduzir os comandos no prompt o Soluo:
Introduzir os comandos em um arquivo texto chamado Arquivo-M

Carlos Alexandre Mello cabm@cin.ufpe.br

137

Programao

MATLAB

Arquivos-M de Comando:
No aceitam argumentos de entrada til para automatizar passos que sejam executados muitas vezes

Aceitam argumentos de entrada til para expandir o MATLAB para suas aplicaes

Funes:

Carlos Alexandre Mello cabm@cin.ufpe.br

138

Criao de um Arquivo-M
Programao

MATLAB

Qualquer editor de textos Atravs do prprio MatLab:


o comando edit
edit filename edit

Carlos Alexandre Mello cabm@cin.ufpe.br

139

Criao de um Arquivo-M
Programao

MATLAB

Vantagens do uso do editor do MatLab


o Variao nas cores o Possibilidade de uso do Debbuger

Carlos Alexandre Mello cabm@cin.ufpe.br

140

Arquivos-M de Comandos
Programao

MATLAB

Mais simples forma de arquivo-M No aceitam argumentos de entrada ou sada Operam com dados do Workspace Quaisquer variveis criadas pelo script permanecem no workspace e podem ser usadas quando o script termina

Carlos Alexandre Mello cabm@cin.ufpe.br

141

Criao de Arquivos-M de Comandos


Programao

MATLAB

Edita um arquivo tipo M (editor de texto qualquer) Insere comandos e variveis Executa a partir do MatLab, bastando, para isso, digitar o nome do arquivo na linha de comando

Carlos Alexandre Mello cabm@cin.ufpe.br

142

Criao de Arquivos-M de Comandos


Programao

MATLAB

Exemplo de Script:
% Exemplo de um script % Soma de dois nmeros a = input (Entre com o primeiro nmero: ); b = input (Entre com o segundo nmero: ); soma = a + b Sada do Script

Carlos Alexandre Mello cabm@cin.ufpe.br

143

Programao

MATLAB

Em virtude da grande utilidade dos arquivos de comandos e funes, o MatLab possui diversas funes que so particularmente apropriadas para o uso em arquivos-M Essas funes tambm podem ser utilizadas no prompt do MatLab Veremos a seguir algumas dessas

Carlos Alexandre Mello cabm@cin.ufpe.br

144

Programao

MATLAB

disp(x)
o Apresenta algum resultado na tela do MatLab o Exemplo 1:
>> x= 2; >> disp(x); 2

o Exemplo 2:
>> disp(x); x

Carlos Alexandre Mello cabm@cin.ufpe.br

145

Programao

MATLAB

disp(x)
o Exemplo 3:
>> disp(Este o MatLab); Este o MatLab

o Exemplo 4:
>> x = 2; y = 4; >> disp(x+y); x+y >> disp(x+y) 6 Observe a diferena entre as duas formas no uso do apstrofo !!!!!!

Carlos Alexandre Mello cabm@cin.ufpe.br

146

Programao

MATLAB

input
o Solicita ao usurio algum dado de entrada o Exemplo 1:
>> x = input(Qual o valor de X: ) Qual o valor de X: 2 x=2
O valor 2 ser atribudo varivel x

Carlos Alexandre Mello cabm@cin.ufpe.br

147

Programao

MATLAB

pause
o Suspende a execuo de um programa at que alguma tecla seja pressionada

pause(n)
o Suspende a execuo por n segundos

Carlos Alexandre Mello cabm@cin.ufpe.br

148

Programao Exemplo de Script:


o Faa um Script que calcule as razes de um polinmio do segundo grau
a=input(Entre com o primeiro coeficiente :); b=input(Entre com o segundo coeficiente :); c=input(Entre com o terceiro coeficiente :); delta = b^2 - 4*a*c; x1=(-b + sqrt(delta))/(2*a); x2=(-b - sqrt(delta))/(2*a);

MATLAB

o e salve como baskhara.m no diretorio atual o Para execut-lo, basta digitar baskhara na workspace do MatLab
Carlos Alexandre Mello cabm@cin.ufpe.br 149

Operaes Relacionais e Lgicas

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

150

Operaes Relacionais e Lgicas

MATLAB

Operadores Relacionais
o o o o o o o < > <= >= = == ~= Menor que Maior que Menor ou igual a Maior ou igual a Igual a Igual a? Diferente de

Carlos Alexandre Mello cabm@cin.ufpe.br

151

Operaes Relacionais e Lgicas

MATLAB

Diferena entre = e ==
o = : Afirmao (atribuio de um valor)
A=2
A igual a 2 feita uma afirmao No h resposta do sistema

o == : Questionamento (dvida quanto a um valor)


A==2
A igual a 2 ??? feita uma pergunta O sistema responde com Verdadeiro ou Falso (1 ou 0)

Carlos Alexandre Mello cabm@cin.ufpe.br

152

Operaes Relacionais e Lgicas

MATLAB

Exemplo:

Carlos Alexandre Mello cabm@cin.ufpe.br

153

Operadores Lgicos

MATLAB

Combinam ou negam operaes relacionais


o o o & | ~ E OU No

Carlos Alexandre Mello cabm@cin.ufpe.br

154

Funes de Verificao

MATLAB

ischar(S)
o V se a entrada um vetor de caracteres

o Cuidado!!!

Carlos Alexandre Mello cabm@cin.ufpe.br

155

Controle de Fluxo
Programao

MATLAB

for if...elseif...else while switch....case

Carlos Alexandre Mello cabm@cin.ufpe.br

156

Controle de Fluxo
Programao

MATLAB

Laos for
o Possibilitam que uma srie de comandos seja repetida por um nmero de vezes fixo e pr-definido

Uso:
for ndice = comeo:incremento:fim comandos end

Se o incremento no for escrito, o MatLab considera 1


Carlos Alexandre Mello cabm@cin.ufpe.br 157

Controle de Fluxo
Programao

MATLAB

Laos for
o Para criar um lao decremental deve-se colocar o incremento igual a -1
for i = 5:-1:1

o Sem esse incremento, o lao no funcionar !!


for i=5:1

Erro !!!

Carlos Alexandre Mello cabm@cin.ufpe.br

158

Controle de Fluxo
Programao

MATLAB

Laos for
o Exemplo:
for i = 1:5 disp(i) end

o Resultado:
1 2 3 4 5

Carlos Alexandre Mello cabm@cin.ufpe.br

159

Controle de Fluxo
Programao

MATLAB

Laos for
o Exemplo: Criao de um vetor
i varia de 1 a 5 no ndice do vetor a e nos seus valores

Carlos Alexandre Mello cabm@cin.ufpe.br

160

Controle de Fluxo
Programao

MATLAB

Laos for
o Exemplo: Lao em ordem decrescente
i varia de 5 a 1

Carlos Alexandre Mello cabm@cin.ufpe.br

161

Controle de Fluxo
Programao

MATLAB

Laos for
o Exemplo: Variao no passo
i varia de 1 a 10 de 2 em 2

Carlos Alexandre Mello cabm@cin.ufpe.br

162

Controle de Fluxo
Programao

MATLAB

Laos for
o Exemplo: Erro
No foi definido o passo !!!

Carlos Alexandre Mello cabm@cin.ufpe.br

163

Controle de Fluxo
Programao

MATLAB

Dentro de um lao for podem vir quaisquer comandos do MatLab, inclusive outros laos
for i=1:10 for j=1:5 ..... end end

Carlos Alexandre Mello cabm@cin.ufpe.br

164

Controle de Fluxo
Programao

MATLAB

Cuidados com os laos encadeados !!!


o Observe a diferena no 2 programas a seguir:

o Qual o resultado da execuo dos dois programas no MatLab ??


Carlos Alexandre Mello cabm@cin.ufpe.br 165

Controle de Fluxo
Programao

MATLAB

Clculo da soma de um conjunto de N elementos


Seja A um conjunto com N valores positivos ou negativos 1) soma = 0 2) Para todos os elementos de A, soma = soma + elemento_de_A calcule

Exemplo: Seja A = [1 3 2 4]
1) soma = 0; 2) soma = 0 + 1 = 1; 3) soma = 1 + 3 = 4; 4) soma = 4 + 2 = 6; 5) soma = 6 + 4 = 10;

o Como implementar esse algoritmo no MatLab ??

Carlos Alexandre Mello cabm@cin.ufpe.br

166

Controle de Fluxo
Programao

MATLAB

Pseudo-cdigo noimplementvel !!! Ainda no definimos como entrar com a varivel a

Varivel inicializada com 0. Poderia ser qualquer valor.

Carlos Alexandre Mello cabm@cin.ufpe.br

167

Controle de Fluxo
Programao

MATLAB

Vetorizao de Laos
o Exemplo: i = 0; for t = 0:0.01:10 i = i+1; y(i) = sin(t); end Verso Vetorizada do cdigo acima t = 0:0.01:10; y = sin(t);

Carlos Alexandre Mello cabm@cin.ufpe.br

168

Controle de Fluxo
Programao

MATLAB

if-else
o Execuo de uma seqncia de comandos condicionalmente com base em um teste relacional

Uso:
if condio comandos else comandos end Se condio comandos Seno comandos fim

Carlos Alexandre Mello cabm@cin.ufpe.br

169

Controle de Fluxo
Programao

MATLAB

if-else
o Observaes:
No h obrigao do uso do else Os comandos aps o if sero executados se a condio for verdadeira Se a condio envolve muitas subexpresses lgicas, todas so executadas mesmo que uma das primeiras subexpresses j seja suficiente para determinar o valor lgico da condio
Uso de operadores lgicos

Carlos Alexandre Mello cabm@cin.ufpe.br

170

Controle de Fluxo
Programao

MATLAB

if-else-elseif
if condio1 comandos elseif condio2 comandos else comandos end Se condio1 comandos Seno Se condio2 comandos Seno comandos fim

Carlos Alexandre Mello cabm@cin.ufpe.br

171

Controle de Fluxo
Programao

MATLAB

Exemplo: Resoluo de Equaes do segundo grau

Carlos Alexandre Mello cabm@cin.ufpe.br

172

Controle de Fluxo
Programao

MATLAB

Exemplo: Jogo da Adivinhao

Carlos Alexandre Mello cabm@cin.ufpe.br

173

Controle de Fluxo
Programao

MATLAB

Lao while
o Ao contrrio do lao for que executa um grupo de comandos um nmero fixo de vezes, o while executa um grupo de instrues um nmero indefinido de vezes

Carlos Alexandre Mello cabm@cin.ufpe.br

174

Controle de Fluxo
Programao

MATLAB

While
o Uso:
while expresso comandos end Enquanto expresso comandos fim

Enquanto a expresso for verdadeira, os comandos sero executados Pode-se usar o comando break para sair do lao

Carlos Alexandre Mello cabm@cin.ufpe.br

175

Controle de Fluxo
Programao

MATLAB

Exemplo: Considere os 2 programas:


Nesse caso, total sai com valor 100 do lao Aqui, total sai do while com valor de 110 j que, quando total for igual a 100 ele ainda entrar no lao e ser somado com 10

Carlos Alexandre Mello cabm@cin.ufpe.br

176

Controle de Fluxo
Programao

MATLAB

Exemplo: Checagem de carto de crdito


o O programa a seguir verifica se uma pessoa entrou com um nmero ao ser requisitado o nmero de seu carto de crdito

Carlos Alexandre Mello cabm@cin.ufpe.br

177

Controle de Fluxo
Programao

MATLAB

Exemplo: Lao interminvel

Provocando um fim no lao....


Uma contagem feita e, caso o contador atinja o valor de 20, o lao quebrado

Carlos Alexandre Mello cabm@cin.ufpe.br

178

Controle de Fluxo
Programao

MATLAB

Estrutura switch-case
o Usada quando seqncias de comandos devem ser condicionalmente executadas baseadas no uso repetido de um teste de igualdade com um argumento comum

Carlos Alexandre Mello cabm@cin.ufpe.br

179

Controle de Fluxo
Programao

MATLAB

switch
switch expresso case valor1 comandos case valor2 comandos ..... otherwise comandos end
Verifique expresso caso valor1 comandos caso valor2 comandos .... caso contrrio comandos fim

Carlos Alexandre Mello cabm@cin.ufpe.br

180

Controle de Fluxo
Programao

MATLAB

switch - Observao
o Para programadores de C: NO USA BREAK !!!! No tem :

Carlos Alexandre Mello cabm@cin.ufpe.br

181

Controle de Fluxo
Programao

MATLAB

switch
o Exemplo: switch input_num case -1 disp(negativo); case 0 disp(zero); case 1 disp(positivo); otherwise disp(outro valor); end

Carlos Alexandre Mello cabm@cin.ufpe.br

182

Controle de Fluxo
Programao

MATLAB

Exemplo: Calculadora de 4 operaes

Por que a definio de z=nan ? O que acontece se retirarmos essa linha ?

Carlos Alexandre Mello cabm@cin.ufpe.br

183

Programao no MatLab Funes

Carlos Alexandre Mello

Carlos Alexandre Mello cabm@cin.ufpe.br

184

MATLAB
Funes

Aceitam argumentos de entrada e retornam argumentos de sada Operam com variveis prprias fora do workspace do MatLab Exemplo de Funo:
function y = average(x) % Average Mean of Vector elements y = sum(x)/length(x);

Carlos Alexandre Mello cabm@cin.ufpe.br

185

MATLAB
Funes

Regras e Propriedades
o O nome da funo deve ser idntico ao nome do arquivo o As linhas de comentrio de um arquivo que antecedem a primeira linha que no contm comentrios constituem o texto que apresentado como help da funo

Carlos Alexandre Mello cabm@cin.ufpe.br

186

MATLAB
Funes

Regras e Propriedades
o As variveis usadas nas funes independem das variveis da workspace do MatLab
Se, na workspace do MatLab, h uma varivel A com valor 10 e este mesmo nome de varivel utilizado dentro de uma funo, assumindo o valor 20 (por exemplo), ao executarmos a funo, A ser igual a 20 apenas dentro da funo. Na workspace, A continua sendo igual a 10

Carlos Alexandre Mello cabm@cin.ufpe.br

187

Checando o Nmero de Argumentos


Funes

MATLAB

Funes nargin e nargout determinam o nmero de argumentos de entrada e sada de uma funo
function c = testarg1(a,b) if (nargin == 1) c = a.^2; elseif (nargin == 2) c = a + b; end

nargout pode ser usado em funes que apresentam respostas diferentes dependendo do nmero de sadas (como polyder(a,b))
Carlos Alexandre Mello cabm@cin.ufpe.br 188

Estrutura de uma Funo


Funes

MATLAB

Nome que deve ser usado no arquivo-M


Linha de definio da funo Comentrio Corpo da funo

function f = fat(n) % FAT Fatorial f = prod(1:n);

Arquivo-M

Carlos Alexandre Mello cabm@cin.ufpe.br

189

Anatomia de uma Funo


Funes

MATLAB

Uma linha de definio da funo Texto de ajuda da funo


o Servir como Help da funo

Corpo da funo Comentrios

Carlos Alexandre Mello cabm@cin.ufpe.br

190

Anatomia de uma Funo


Funes

MATLAB

Uma linha de definio da funo


o Essa linha informa ao MatLab que o arquivo contm uma funo e especifica os argumentos da funo
function y = average(x)
Argumento(s) de Entrada Nome da Funo (o arquivo deve ser salvo com este nome !!!!) Argumento (s) de Sada Keyword

Carlos Alexandre Mello cabm@cin.ufpe.br

191

Anatomia de uma Funo


Funes

MATLAB

Uma linha H1
o Primeira linha de ajuda do texto uma linha comentada seguindo imediatamente a linha de definio da funo
% AVERAGE Mdia de um vetor

Smbolo de Comentrio

Carlos Alexandre Mello cabm@cin.ufpe.br

192

Anatomia de uma Funo


Funes

MATLAB

Texto de ajuda da funo


o Texto de ajuda com uma ou mais linhas comentadas para facilitar o uso da funo o Mesma estrutura da linha H1
Linhas precedidas de %

Carlos Alexandre Mello cabm@cin.ufpe.br

193

Anatomia de uma Funo


Funes

MATLAB

Corpo da funo
o Cdigos do MatLab para desempenhar toda a computao necessria e atribuir valores aos argumentos de sada
Chamadas a funes Construes de Programao (if...else, etc) Clculos Comentrios ....

Comentrios
o Podem aparecer em qualquer parte do arquivo sempre precedidos pelo smbolo %

Carlos Alexandre Mello cabm@cin.ufpe.br

194

Nomes das Funes


Funes

MATLAB

O MatLab s usa os 31 primeiros caracteres O nome deve comear com uma letra Pode ser composto por letras, nmeros, etc Nome do arquivo terminado por .m filename.m

Carlos Alexandre Mello cabm@cin.ufpe.br

195

Funes de Gerenciamento de Memria Removendo uma Funo da Memria o O cdigo do arquivo-M removido da memria quando:
A funo chamada novamente com um novo cdigo nela A funo apagada explicitamente com o comando clear Todas as funes so explicitamente apagadas com o comando clear functions MATLAB sai da memria

MATLAB

Carlos Alexandre Mello cabm@cin.ufpe.br

196

Funes de Gerenciamento de Memria Para Conservar Memria o Evite usar as mesmas variveis como entrada e sada de uma funo:
y = fun(x, y)

MATLAB

o Use a funo clear ou clear nome_da_varivel sempre que possvel o Re-use variveis o mximo possvel

Carlos Alexandre Mello cabm@cin.ufpe.br

197

Subfunes

MATLAB

Arquivos-M de funes podem conter mais de uma funo (chamadas subfunes) Observe que apenas a funo primria (a qual gerou o nome do arquivo-M) pode ser executada do MatLab As outras funes so chamadas de dentro da funo primria apenas

Carlos Alexandre Mello cabm@cin.ufpe.br

198

Subfunes function y = teste(a) ..... function x = teste2(b) ..... function z = teste3(c) .....

MATLAB

Funo Primria

Subfuno

Subfuno

Arquivo teste.m
Carlos Alexandre Mello cabm@cin.ufpe.br 199

Subfunes

MATLAB

A funo teste executada de dentro do MatLab e chama as subfunes teste2 e teste3 Se tentarmos executar externamente teste2 ou teste3, um erro ser gerado, pois apenas o arquivo teste.m existe

Carlos Alexandre Mello cabm@cin.ufpe.br

200

MATLAB
Funes

Ao ser chamada, a funo permanece na memria at que o comando clear seja dado:
clear function_name
remove uma funo especfica do workspace

clear functions
remove todas as funes

clear all
remove funes e variveis

Carlos Alexandre Mello cabm@cin.ufpe.br

201

MATLAB
Funes

Exemplos de Funes:
o Funo que calcula as razes de um polinmio de grau menor ou igual a dois o Caso I:
Os coeficientes do polinmio so inseridos dentro da funo Ou seja, a funo no possui argumentos de entrada, mas tem uma sada (Y) que pode ser um nmero apenas ou um vetor Funo baskhara1.m Observao: No foi considerada a possibilidade do usurio atribuir ZERO aos trs coeficientes
202

Carlos Alexandre Mello cabm@cin.ufpe.br

MATLAB
Funes

baskhara1.m

Carlos Alexandre Mello cabm@cin.ufpe.br

203

MATLAB
Funes

Funo que calcula as razes de um polinmio de grau menor ou igual a dois


o Caso II:
Os coeficientes do polinmio so passados como argumentos para a funo Ou seja, a funo tem trs entradas (A, B, C) e uma sada (Y) que pode ser um nmero apenas ou um vetor Funo baskhara2.m

Carlos Alexandre Mello cabm@cin.ufpe.br

204

MATLAB
Funes

baskhara2.m

Carlos Alexandre Mello cabm@cin.ufpe.br

205

MATLAB
Funes

Funo que calcula as razes de um polinmio de grau menor ou igual a dois


o Caso III:
Os coeficientes do polinmio so passados como argumentos para a funo dentro de um vetor Ou seja, a funo tem uma entrada (X) na forma de um vetor e uma sada (Y) que pode ser um nmero apenas ou um vetor Funo baskhara3.m

Carlos Alexandre Mello cabm@cin.ufpe.br

206

MATLAB
Funes

baskhara3.m

Carlos Alexandre Mello cabm@cin.ufpe.br

207

MATLAB
Funes

Funo que calcula as razes de um polinmio de grau menor ou igual a dois


o Caso IV:
Os coeficientes do polinmio so passados como argumentos para a funo dentro de um vetor A funo tem duas sadas Ou seja, a funo tem uma entrada (X) na forma de um vetor e duas sadas (Y, Z) Funo baskhara4.m

Carlos Alexandre Mello cabm@cin.ufpe.br

208

MATLAB
Funes

baskhara4.m

Carlos Alexandre Mello cabm@cin.ufpe.br

209

Você também pode gostar