Escolar Documentos
Profissional Documentos
Cultura Documentos
MATLAB
MATLAB
O Curso
MATLAB
O que ?
o Ferramenta de apoio Engenharia
Clculos Matemticos Desenvolvimento de Algoritmos Anlise, Explorao e Visualizao de dados Grficos de engenharia
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]
MATLAB
MATLAB
Help
MATLAB
Help
Help do MatLab:
o Comando help (usado no prompt):
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
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
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
10
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
11
Matemtica Elementar
12
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)
13
MATLAB
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
14
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
15
Vetores
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];
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 !!!!
18
MATLAB
Vetores
Endereamento Vetorial
o Observao:
x = [matlab verso 5]
x(1) = m x(12) = o
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 !
20
MATLAB
Vetores
MATLAB
Vetores
MATLAB
Vetores
Orientao de Vetores
o Transposio de Vetores Vetores Reais
23
MATLAB
Vetores
Orientao de Vetores
o Transposio de Vetores Vetores complexos
Operador ponto...
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
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
26
Matrizes
27
MATLAB
Matrizes
28
MATLAB
Matrizes Criao de Matrizes
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
30
MATLAB
Matrizes
31
MATLAB
Matrizes
o Exponenciao
A.^2 -> Eleva cada elemento de A ao quadrado (ou qualquer outra potncia) A^2 = A*A
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
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
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
35
Vetores e Matrizes
MATLAB
Vetores Lgicos
o Construo de Vetores a partir de vetores lgicos
36
Vetores e Matrizes
MATLAB
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))
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
38
MATLAB
AX = B
w + 2y + z = 3 2w -y + 2z = 1 Ax = B, logo: x = A\B y + 3z = 2
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
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
41
MATLAB
42
Polinmios
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
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
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
46
Convoluo e Deconvoluo
Polinmios
MATLAB
Exemplo: c(x)/a(x)
Quociente
= b(x)
Resto
47
Adio de Polinmios
Polinmios
MATLAB
48
Adio de Polinmios
Polinmios
MATLAB
No MatLab:
o o o A=[1 0 B=[3 2 C=A+B 3 4] 1] ERRADO
49
Derivativa Polinomial
Polinmios
MATLAB
50
Derivativa Polinomial
Polinmios
MATLAB
A derivada da diviso de dois polinmios calculada chamando polyder com 2 argumentos de sada
51
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
52
MATLAB
Exemplo (cont):
53
MATLAB
-4 + 8s
-1
-1 -2
1 + 6s + 8s
54
MATLAB
55
MATLAB
Exemplo:
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); ...
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).
MATLAB
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
60
Integrao Numrica
Funes de Funo
MATLAB
Por exemplo, para integrar a funo definida no arquivo de teste humps entre 0 e 1, usamos:
61
Grficos
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
63
Grficos Bidimensionais
>> z=cos(x); >> plot (x,y,x,z);
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 = -, :, -., --
65
Grficos Bidimensionais
Comando plot:
o Estilos de linha, marcadores e cores: Exemplo:
>> plot(x,y,b:p,x,z,c-, x,z,m+)
66
Grficos Bidimensionais
67
Grficos Bidimensionais
Legendas
>> xlabel(Varivel X); % Legenda do eixo horizontal >> ylabel (Varivel Y); % Legenda do eixo vertical >> title (Curvas); % Ttulo do Grfico
68
Grficos Bidimensionais
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
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:
71
Grficos Bidimensionais
subplot
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
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);
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
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)
76
Grficos Tridimensionais
Comando plot3: Grficos de linha
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
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
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
80
Grficos Tridimensionais
Funo meshgrid
o Exemplo:
>> R=sqrt(X.^2+Y.^2); >> Z=sin(R)./R; >> mesh(X,Y,Z)
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)
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
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);
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);
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)
86
Grficos Tridimensionais
Funo pcolor
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
88
Grficos Tridimensionais
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
90
Grficos Tridimensionais
- 37.5 30
0 0
90 0
- 37.5 10
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
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)
93
Grficos Tridimensionais
94
Grficos Tridimensionais
>> hidden off >> title(Rede com hidden desativado);
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;
96
Grficos Tridimensionais
97
Grficos Tridimensionais
>>colormap(cool)
98
Grficos Tridimensionais
colormap:
hsv, hot, gray, bone, copper, pink, white, flag, jet, prism, cool, lines, colorcube, summer, autumn, winter, spring
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)
100
Grficos Tridimensionais
101
Grficos Tridimensionais
>> colormap(gray); >> surfl(Z)
102
Grficos Tridimensionais
>> colormap(gray); >> surfl(Z); >> shading interp;
103
Simulink
104
Simulink
Mdulo para anlise de modelos e construo de funes Para execut-lo, digite
o >> simulink
dentro do MatLab
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)
107
Simulink
Mdulos
Fontes
108
Simulink
Mdulos
Sadas
109
Simulink
Mdulos
Discreto
110
Simulink
Mdulos
Linear
111
Simulink
Mdulos
No-Linear
112
Simulink
Mdulos
Conexes
113
Simulink
Mdulos
Blocos e Ferramentas
114
Simulink
Exemplo 1:
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
116
Simulink
Exemplo 1:
117
Simulink
Exemplo 2: A sada do sistema pode ser alterada para um novo formato:
118
Simulink
Exemplo 2: Aps a execuo do sistema, o resultado apresentado
119
Simulink
Exemplo 3: Soma de duas entradas:
120
Simulink
Clicando duas vezes em um bloco, abre-se uma janela com as opes que podem ser alteradas do bloco:
121
Simulink
Um mesmo bloco pode assumir diferentes funes:
122
Simulink
As propriedades de um bloco podem alterar suas prprias funes, como um somador, por exemplo
123
Simulink
Ao ser clicado duas vezes, suas propriedades permitem que o bloco tenha suas funes alteradas , incluindo o nmero de entradas
124
Simulink
Resultando num novo bloco
125
Simulink
Exemplo 4: Motor c.c. controlado por armadura (retirado do livro Engenharia de Controle Moderno, Ogata, pg 110)
126
Simulink
Exemplo 4: Em Diagrama de Blocos:
127
Simulink
Exemplo 4: No Simulink, para R=L=J=f=K=Kb=1, temos :
128
Simulink
Exemplo 4: Ao ser inicializado, a resposta do osciloscpio ser mostrada como abaixo:
129
Simulink
Exemplo 5: Eletrnica Digital: Ou-Exclusivo realizado com portas E, No e Ou o Diagrama:
130
Simulink
Exemplo 5: No Simulink
131
132
133
Programao
MATLAB
Como so arquivos de texto podem ser criados usando editores de texto comum
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
135
Programao
MATLAB
Interpretao
o Vantagem
Cdigo aberto Fcil de ser estudado
o Desvantagem
Necessidade do Programa-Pai
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
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:
138
Criao de um Arquivo-M
Programao
MATLAB
139
Criao de um Arquivo-M
Programao
MATLAB
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
141
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
142
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
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
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
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 !!!!!!
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
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
148
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
150
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
151
MATLAB
Diferena entre = e ==
o = : Afirmao (atribuio de um valor)
A=2
A igual a 2 feita uma afirmao No h resposta do sistema
152
MATLAB
Exemplo:
153
Operadores Lgicos
MATLAB
154
Funes de Verificao
MATLAB
ischar(S)
o V se a entrada um vetor de caracteres
o Cuidado!!!
155
Controle de Fluxo
Programao
MATLAB
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
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
Erro !!!
158
Controle de Fluxo
Programao
MATLAB
Laos for
o Exemplo:
for i = 1:5 disp(i) end
o Resultado:
1 2 3 4 5
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
160
Controle de Fluxo
Programao
MATLAB
Laos for
o Exemplo: Lao em ordem decrescente
i varia de 5 a 1
161
Controle de Fluxo
Programao
MATLAB
Laos for
o Exemplo: Variao no passo
i varia de 1 a 10 de 2 em 2
162
Controle de Fluxo
Programao
MATLAB
Laos for
o Exemplo: Erro
No foi definido o passo !!!
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
164
Controle de Fluxo
Programao
MATLAB
Controle de Fluxo
Programao
MATLAB
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;
166
Controle de Fluxo
Programao
MATLAB
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);
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
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
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
171
Controle de Fluxo
Programao
MATLAB
172
Controle de Fluxo
Programao
MATLAB
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
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
175
Controle de Fluxo
Programao
MATLAB
176
Controle de Fluxo
Programao
MATLAB
177
Controle de Fluxo
Programao
MATLAB
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
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
180
Controle de Fluxo
Programao
MATLAB
switch - Observao
o Para programadores de C: NO USA BREAK !!!! No tem :
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
182
Controle de Fluxo
Programao
MATLAB
183
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);
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
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
187
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
MATLAB
Arquivo-M
189
MATLAB
190
MATLAB
191
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
192
MATLAB
193
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 %
194
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
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
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
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
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
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
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
MATLAB
Funes
baskhara1.m
203
MATLAB
Funes
204
MATLAB
Funes
baskhara2.m
205
MATLAB
Funes
206
MATLAB
Funes
baskhara3.m
207
MATLAB
Funes
208
MATLAB
Funes
baskhara4.m
209