MATLAB
The Language of Technical Computing
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 1
MATLAB
O Curso
Computação
Programação
Visualização
Simulink
Toolbox de Sistemas de Controle
Carlos Alexandre Mello – cabm@[Link] 2
MATLAB
O que é ?
o Ferramenta de apoio à Engenharia
Cálculos Matemáticos
Desenvolvimento de Algoritmos
Análise, Exploração e Visualização de dados
Gráficos de engenharia
MATLAB = Matrix Laboratory
o Toolboxes (M-files)
o Simulink : simulação de sistemas dinâmicos não-lineares
Desenvolvido pela Math Works
Carlos Alexandre Mello – cabm@[Link] 3
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@[Link] 4
MATLAB
Funções de Gerenciamento de Memória
whos
o mostra a memória alocada
Carlos Alexandre Mello – cabm@[Link] 5
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@[Link] 6
MATLAB
Help
Help do MatLab:
o Comando help (usado no prompt):
Carlos Alexandre Mello – cabm@[Link] 7
MATLAB
Workspace - Área de Trabalho
Exemplo:
o >> a = 2;
o >> b = 3;
o >> c = a + b
o >> c = 5
Caso nenhuma variável seja definida, o MatLab assume
uma variável padrão chamada ans (de answer =
resposta, em inglês)
No exemplo anterior, teríamos:
o >> a + b
o >> ans = 5
Carlos Alexandre Mello – cabm@[Link] 8
MATLAB
Workspace - Área de Trabalho
Comentários
o Qualquer texto precedido de %
Pontuação
o ; - Ponto e Vírgula
Suprime a visualização de um resultado
Sem ponto e vírgula o resultado é
repetido na tela
Com ponto e vírgula o resultado é
apenas armazenado na memória
Carlos Alexandre Mello – cabm@[Link] 9
MATLAB
Variáveis Especiais no MatLab
Valores Especiais:
o pi 3.1415926535897....
o i,j Unidade Imaginária
o inf Infinito (n/0 = inf)
o NaN Not-a-Number (inf/inf)
o version Versão do MatLab
o computer Tipo de computador
o flops Contagem de operações de ponto
flutuante
Carlos Alexandre Mello – cabm@[Link] 10
MatLab
Números Complexos
Representados pelas letras i ou j
o >> a=1 - 2i;
o >> a = 1 - 2j;
Uma das poucas variáveis do MatLab que
permite a notação com o uso da variável i ou j
justaposta sem o sinal da multiplicação
o 2i = 2*i
o 2j = 2*j
Carlos Alexandre Mello – cabm@[Link] 11
Matemática Elementar
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 12
MATLAB
Matemática Elementar
Operações aritméticas:
o Adição:
a+b
o Subtração
a-b
o Multiplicação
a*b
o Divisão
a/b ou b\a (b divide a)
o Potenciação
a^b
o Raiz Quadrada
sqrt(a)
Carlos Alexandre Mello – cabm@[Link] 13
MATLAB
Funções Matemáticas Elementares
Funções trigonométricas básicas 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 direção do zero
o round(x)
Arredondamento para o número inteiro mais próximo
Carlos Alexandre Mello – cabm@[Link] 14
MATLAB
Funções Matemáticas Elementares
Números Inteiros
o rem(x,y)
Resto da divisão de x por y
o sign(x)
Função 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)
Máximo Divisor Comum dos inteiros x e y
o lcm(x,y)
Mínimo Múltiplo Comum dos inteiros x e y
Carlos Alexandre Mello – cabm@[Link] 15
Vetores
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 16
MATLAB
Vetores
Vetores
o Matrizes com apenas uma linha
o Conjunto de elementos que podem ser números
inteiros, reais, complexos ou caracteres
>> x = [1 2 3 4 5];
o Elementos separados por espaços em branco e
delimitados por colchetes [ ]
>> y = [ ‘matlab’ ‘versão 5’];
o Caracteres sempre entre apóstrofos ‘’ !!
Carlos Alexandre Mello – cabm@[Link] 17
MATLAB
Vetores
Endereçamento 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
Não é possível acessar um elemento que não exista no
vetor:
• x(4) = ERRO !!!!
Carlos Alexandre Mello – cabm@[Link] 18
MATLAB
Vetores
Endereçamento Vetorial
o Observação:
x = [‘matlab’ ‘versão 5’]
• x(1) = ‘m’ x(12) = ‘o’
Cada caractere é um elemento do vetor !
o É possível 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@[Link] 19
MATLAB
Vetores
Endereçamento 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 número inteiro positivo ou
negativo
Carlos Alexandre Mello – cabm@[Link] 20
MATLAB
Vetores
Construção automática 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@[Link] 21
MATLAB
Vetores
Construção automática 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 através da
junção de a e b
o c = [a b]
o c = [1 2 5 3 4 0]
o Se c = [b a], então c = [ 3 4 0 1 2 5]
Carlos Alexandre Mello – cabm@[Link] 22
MATLAB
Vetores
Orientação de Vetores
o Transposição de Vetores
Vetores Reais
Carlos Alexandre Mello – cabm@[Link] 23
MATLAB
Vetores
Orientação de Vetores
o Transposição de Vetores
Vetores complexos
Operador ponto...
...gera a matriz transposta
conjugada
Carlos Alexandre Mello – cabm@[Link] 24
MATLAB
Vetores
Funções Matemáticas Elementares
Para um vetor:
o max(x)
Elemento máximo
o min(x)
Elemento mínimo
o mean(x)
Média
o median(x)
Mediana
o prod(x)
Produto dos elementos
o sum(x)
Soma dos elementos
o sort(x)
Ordenação dos elementos de forma decrescente
Carlos Alexandre Mello – cabm@[Link] 25
MATLAB
Vetores e Matrizes
Vetores Especiais
o rand(1,n)
Cria um vetor de n elementos onde cada elemento é um número
aleatório entre 0 e 1
• Exemplo: rand(1,5)
Dica: Para gerar um número (UM número apenas, não um vetor!!)
aleatório entre 0 e X usa-se o comando rand da seguinte forma:
• rand(1)*X
• Exemplo: rand(1)*10
– Cria um número REAL entre 0 e 10
• Exemplo: round(rand(1)*10)
– Cria um número INTEIRO entre 0 e 10
Carlos Alexandre Mello – cabm@[Link] 26
Matrizes
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 27
MATLAB
Matrizes
Definição de Matrizes
Manipulação de Matrizes
Sub-matrizes
Comparação
Dimensão
Operações
Carlos Alexandre Mello – cabm@[Link] 28
MATLAB
Matrizes
Criação de Matrizes
Ponto-e-vírgula é usado para separar as linhas da
matriz
CUIDADO!!!
o Todas as linhas da matriz devem ter o mesmo número de
elementos!!!
Carlos Alexandre Mello – cabm@[Link] 29
MATLAB
Matrizes
Operações Escalares
o Seja B um vetor ou uma matriz, são válidas
quaisquer operações com escalares:
B-2
3*B - 4
B/2
B+5
Carlos Alexandre Mello – cabm@[Link] 30
MATLAB
Matrizes
Operações entre Matrizes
o Adição e Subtração são válidas sempre que as
matrizes envolvidas tiverem as mesmas dimensões
o Multiplicação e Divisão devem obedecer às normas
relacionadas as dimensões das matrizes:
Amxn*Bnxp = Cmxp
Amxp/Bnxp=Cmxn
A/B = inv(B)*A, se B for quadrada
Carlos Alexandre Mello – cabm@[Link] 31
MATLAB
Matrizes
Operações entre Matrizes
o Operações Pontuadas
Sejam A e B duas matrizes
• A.*B -> Multiplica cada elemento de A pelo correspondente em
B
• O mesmo acontece na divisão em A./B
o Exponenciação
A.^2 -> Eleva cada elemento de A ao quadrado (ou qualquer
outra potência)
A^2 = A*A
Carlos Alexandre Mello – cabm@[Link] 32
MATLAB
Matrizes
Matrizes Especiais
o ones(m,n)
Cria uma matriz mxn onde todos os seus elementos são
iguais à 1
o zeros(m,n)
Cria uma matriz mxn onde todos os seus elementos são
iguais à 0
Carlos Alexandre Mello – cabm@[Link] 33
MATLAB
Matrizes
Manipulação 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@[Link] 34
MATLAB
Matrizes
Manipulação 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@[Link] 35
MATLAB
Vetores e Matrizes
Vetores Lógicos
o Construção de Vetores a partir de vetores lógicos
Carlos Alexandre Mello – cabm@[Link] 36
MATLAB
Vetores e Matrizes
Dimensão 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 número de linhas OU o número de
colunas (o que for maior)
• Corresponde a max(size(A))
Carlos Alexandre Mello – cabm@[Link] 37
MATLAB
Vetores e Matrizes
Matrizes Especiais
o rand(m,n)
Cria uma matriz mxn onde cada elemento é um número
aleatório entre 0 e 1
Carlos Alexandre Mello – cabm@[Link] 38
MATLAB
Resolvendo Equações Lineares
Vetores e Matrizes
AX = B
w + 2y + z = 3
2w -y + 2z = 1 Ax = B, logo:
logo: x = A\B
y + 3z = 2
Carlos Alexandre Mello – cabm@[Link] 39
MATLAB
Funções Matriciais
-1 -1
A Matriz Identidade I é tal que A*A = I e A *A = I
É calculada no MatLab com a função eye
o eye(m)
Matriz identidade quadrada mxm
Carlos Alexandre Mello – cabm@[Link] 40
MATLAB
Funções Matriciais
O inverso de uma matriz A é calculado com a função
inv(A)
Também é possível calcular o determinante de uma
matriz A mxn com a função det(A)
Carlos Alexandre Mello – cabm@[Link] 41
MATLAB
Potências e Exponenciais
Exemplo:
A = [1 2 3; 4 5 6; 7 8 9];
X = A^2 X = A*A
Z = A.^2 Z = [a i j ^2]
Y = sqrtm(X) X^(1/2)
Y = sqrt(X) X.^(1/2)
Carlos Alexandre Mello – cabm@[Link] 42
Polinômios
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 43
MATLAB
Polinômios
MATLAB representa polinômios como matrizes linha
contendo os coeficientes ordenados de forma
decrescente pela potência. Por exemplo, o
polinômio
3
p(x) = x - 2x - 5
é representado no MATLAB como:
Observe a presença
p = [1 0 -2 -5] do coeficiente de
>> r = roots(p) valor zero !!!
o Calcula as raízes do polinômio
>> p2 = poly(r)
o Retorna os coeficientes do polinômio dadas as suas raízes
Carlos Alexandre Mello – cabm@[Link] 44
MATLAB
Polinômios
polyval(p, n)
o Resolve o polinômio para o valor n
polyvalm(p,X)
o Resolve o polinômio 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@[Link] 45
MATLAB
Polinômios
Multiplicação e divisão polinomial corresponde às
operações de convolução e deconvolução,
implementadas pelas funções 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@[Link] 46
MATLAB
Convolução e Deconvolução
Polinômios
Exemplo: c(x)/a(x)
Quociente
= b(x)
Resto
Carlos Alexandre Mello – cabm@[Link] 47
MATLAB
Adição de Polinômios
Polinômios
Não há função direta para o cálculo
Alguns cuidados devem ser tomados:
o A(x)= x3 + 3x +4
o B(x)= 3x2 + 2x + 1
o C(x)=A(x)+B(x) = x3 + 3x2 + 5x + 5
Carlos Alexandre Mello – cabm@[Link] 48
MATLAB
Adição de Polinômios
Polinômios
No MatLab:
o A=[1 0 3 4]
o B=[3 2 1]
o C=A+B
ERRADO
o B=[0 3 2 1]
o C=A+B
CERTO
Carlos Alexandre Mello – cabm@[Link] 49
MATLAB
Derivativa Polinomial
Polinômios
A função polyder calcula a derivada de qualquer
polinômio
o Exemplo:
>> p = [1 0 -2 -5];
>> q = polyder(p)
>> q = 3 0 -2
A função também calcula a derivada do produto
de funções:
>> c = polyder(a, b)
Carlos Alexandre Mello – cabm@[Link] 50
MATLAB
Derivativa Polinomial
Polinômios
A derivada da divisão de dois polinômios é calculada
chamando polyder com 2 argumentos de saída
Carlos Alexandre Mello – cabm@[Link] 51
MATLAB
Expansão em Frações Parciais
Polinômios
A função residue encontra a expansão em
frações parciais da razão de dois polinômios
Exemplo:
-4 + 8s-1 = r1 + r2 + ... + rn + ks
1 + 6s-1 + 8s-2 s - p1 s - p2 s - pn
Carlos Alexandre Mello – cabm@[Link] 52
MATLAB
Expansão em Frações Parciais
Polinômios
Exemplo (cont):
Carlos Alexandre Mello – cabm@[Link] 53
MATLAB
Expansão em Frações Parciais
Polinômios
Exemplo (cont): Volta ao polinômio original
-1
-4 + 8s
-1 -2
1 + 6s + 8s
Carlos Alexandre Mello – cabm@[Link] 54
MATLAB
Representando Polinômios Graficamente
Para traçar o gráfico de um polinômio, pode -se
usar a função fplot:
o fplot (‘função ou nome’, [início fim da plotagem])
Carlos Alexandre Mello – cabm@[Link] 55
MATLAB
Representando Polinômios Graficamente
Exemplo:
Carlos Alexandre Mello – cabm@[Link] 56
MATLAB
Função de Funções
MATLAB representa funções matemáticas expressando-
as em arquivos-M
Por exemplo, considere a função:
f(x) = 1/(x + 22)
Essa função pode ser salva em um arquivo-
M (nome.M) como:
function y = nome(x)
... Observe
esses
y=1
y=1./(x.
/(x.^2 + 2);
pontos !!
...
Carlos Alexandre Mello – cabm@[Link] 57
MATLAB
Função de Funções
Quando definimos uma função dentro de um
arquivo-M no MatLab, precisamos utilizar o
operador . (ponto) sempre que nos depararmos
com operações de *, /,\ e ^ que envolvam a
variável de entrada
o Como não há uma definição de tipos no MatLab, isso
diz a ele que trabalhe com qualquer tipo que seja a
variável de entrada (número, matriz, vetor, etc).
Isso não mudará em nada sua função !! É só
uma forma de trabalho do MatLab
Carlos Alexandre Mello – cabm@[Link] 58
MATLAB
Encontrando Zeros de Funções
Funções de Função
Acha o zero da função próximo ao ponto -0.2
Carlos Alexandre Mello – cabm@[Link] 59
MATLAB
Integração Numérica
Funções de Função
A área abaixo de uma seção de uma função F(x) pode
ser determinada pela integração numérica de F(x),
processo chamado de quadratura
função descrição
quad regra de Simpson Adaptativa
quad8 regra de Newton Cotes Adaptativa
Carlos Alexandre Mello – cabm@[Link] 60
MATLAB
Integração Numérica
Funções de Função
Por exemplo, para integrar a função definida no arquivo
de teste humps entre 0 e 1, usamos:
Integração dupla: Função dblquad
o >> dblquad (‘filename’, xmin, xmax, ymin,ymax)
Problemas com a função na atual versão do MatLab !!!
Carlos Alexandre Mello – cabm@[Link] 61
Gráficos
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 62
Gráficos Bidimensionais
Comando plot
>> x=linspace (0,2*pi,30); %Cria um vetor
>> y=sin(x);
>> plot(x,y) %Plota o gráfico x versus y
Carlos Alexandre Mello – cabm@[Link] 63
Gráficos Bidimensionais
>> z=cos(x);
>> plot (x,y,x,z);
Carlos Alexandre Mello – cabm@[Link] 64
Gráficos 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@[Link] 65
Gráficos 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@[Link] 66
Gráficos Bidimensionais
Carlos Alexandre Mello – cabm@[Link] 67
Gráficos Bidimensionais
Legendas
>> xlabel(‘Variável X’); % Legenda do eixo horizontal
>> ylabel (‘Variável Y’); % Legenda do eixo vertical
>> title (‘Curvas’); % Título do Gráfico
Carlos Alexandre Mello – cabm@[Link] 68
Gráficos Bidimensionais
Carlos Alexandre Mello – cabm@[Link] 69
Gráficos Bidimensionais
Manipulação de Gráficos
>> 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@[Link] 70
Gráficos 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@[Link] 71
Gráficos Bidimensionais
subplot
Carlos Alexandre Mello – cabm@[Link] 72
Gráficos Bidimensionais
loglog
o Equivalente ao comando plot, exceto pelo fato de
escalas logarítmicas serem usadas em ambos os eixos
semilogx
o Equivalente ao comando plot, exceto pelo fato de uma
escala logarítmica ser usada no eixo x
semilogy
o O mesmo para o eixo y
Carlos Alexandre Mello – cabm@[Link] 73
Gráficos 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 gráficos de pizza
>> a=[.5 1 1.6 1.2 .8 2.1]
>> pie(a);
Carlos Alexandre Mello – cabm@[Link] 74
Gráficos Bidimensionais
pie(a,b)
>> a=[.5 1 1.6 1.2 .8 2.1]
>> pie(a,a==max(a)); % Traça o gráfico e separa a
% maior fatia
Carlos Alexandre Mello – cabm@[Link] 75
Gráficos Tridimensionais
Comando plot3
>> t=linspace(0,10*pi);
>> plot3(sin(t), cos(t),t);
>> title(‘Hélice’), xlabel(‘sen(t)’),ylabel(‘cos(t)’),zlabel(‘t’)
Carlos Alexandre Mello – cabm@[Link] 76
Gráficos Tridimensionais
Comando plot3: Gráficos de linha
Carlos Alexandre Mello – cabm@[Link] 77
Gráficos Tridimensionais
Gráficos de Rede e de Superfície
o O MatLab define uma superfície de rede por meio de
coordenadas z dos pontos correspondentes a uma grade
retangular no plano xy
o Ele forma o gráfico unindo os pontos adjacentes com
linhas e retas
o O resultado parece-se com uma rede de pesca com os nós
nos pontos correspondentes aos dados
o Gráficos em rede são úteis para visualização de matrizes
grandes ou para a representação gráfica de funções de
duas variáveis
Carlos Alexandre Mello – cabm@[Link] 78
Gráficos Tridimensionais
Função meshgrid
o [X,Y]=meshgrid(x,y)
o Cria uma matriz X cujas linhas são cópias do vetor x e uma
matriz Y cujas colunas são cópias do vetor y
o Esse par de matrizes pode ser usado para calcular funções
de duas variáveis usando os recursos de matemática
vetorial do MatLab
Carlos Alexandre Mello – cabm@[Link] 79
Gráficos Tridimensionais
Função meshgrid
o Exemplo: Gerar pontos de dados uniformemente
espaçados no plano xy entre -7,5 e 7,5
>> x=-7.5:.5:7.5;
>> y=x;
>> [X,Y]=meshgrid(x,y);
o X e Y são um par de matrizes representando uma grade
retangular de pontos no plano xy
o Qualquer função z=f(X,Y) pode ser gerada usando-se esses
pontos
Carlos Alexandre Mello – cabm@[Link] 80
Gráficos Tridimensionais
Função meshgrid
o Exemplo:
>> R=sqrt(X.^2+Y.^2);
>> Z=sin(R)./R;
>> mesh(X,Y,Z)
Carlos Alexandre Mello – cabm@[Link] 81
Gráficos Tridimensionais
Função surf
o Gera um gráfico de superfície da matriz Z, onde os espaços
entre as linhas (chamados de retalhos) são preenchidos.
>> surf(X,Y,Z)
Carlos Alexandre Mello – cabm@[Link] 82
Gráficos Tridimensionais
Função peaks
o Gera uma matriz com valores baseados em uma
distribuição Gaussiana
o Útil para demonstrar algumas características das
funções mesh, surf, pcolor, contour
Carlos Alexandre Mello – cabm@[Link] 83
Gráficos Tridimensionais
Função 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@[Link] 84
Gráficos Tridimensionais
Função contour3
o Plota o contorno de uma matriz Z tratando os valores de Z como
alturas sobre um plano em 3 dimensões
>> [x,y,z]=peaks;
>> contour3(x,y,z,20);
Carlos Alexandre Mello – cabm@[Link] 85
Gráficos Tridimensionais
Função pcolor
o Mapeia a altura em um conjunto de cores e
apresenta a mesma informação do gráfico de
curvas de nível contour na mesma escala
>> [x,y,z]=peaks;
>>pcolor(x,y,z)
Carlos Alexandre Mello – cabm@[Link] 86
Gráficos Tridimensionais
Função pcolor
Carlos Alexandre Mello – cabm@[Link] 87
Gráficos Tridimensionais
Uma vez que pcolor e contour mostram a
mesma informação 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@[Link] 88
Gráficos Tridimensionais
Carlos Alexandre Mello – cabm@[Link] 89
Gráficos Tridimensionais
Manipulação de Gráficos
o Função view
Permite mudar o ângulo de observação de um gráfico
Uso: view(azimute, elev)
padrão: azimute=-37.5 e elev=30
Carlos Alexandre Mello – cabm@[Link] 90
Gráficos Tridimensionais
- 37.5
0
30
0
90 - 37.5
0 10
Carlos Alexandre Mello – cabm@[Link] 91
Gráficos Tridimensionais
Exemplo de Animação:
o Uso do comando For para gráficos
>> [x,y,z]=peaks;
>> mesh(x,y,z)
>> for i=0:360
view(i,30)
pause(0.1);
end
Carlos Alexandre Mello – cabm@[Link] 92
Gráficos Tridimensionais
Comando hidden
o Controla a remoção de linhas escondidas
o Desativando-se o comando hidden você pode
olhar através da rede
>> mesh(peaks(20)+7)
>> hold on
>> pcolor(peaks(20))
>> hold off
>> title(‘Rede com hidden ativado’)
Carlos Alexandre Mello – cabm@[Link] 93
Gráficos Tridimensionais
Carlos Alexandre Mello – cabm@[Link] 94
Gráficos Tridimensionais
>> hidden off
>> title(‘Rede com hidden desativado’);
Carlos Alexandre Mello – cabm@[Link] 95
Gráficos Tridimensionais
Função surfl
o Desenha um gráfico 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@[Link] 96
Gráficos Tridimensionais
Carlos Alexandre Mello – cabm@[Link] 97
Gráficos Tridimensionais
>>colormap(cool)
Carlos Alexandre Mello – cabm@[Link] 98
Gráficos Tridimensionais
colormap:
hsv, hot, gray, bone, copper, pink, white, flag, jet, prism,
cool, lines, colorcube, summer, autumn, winter, spring
Carlos Alexandre Mello – cabm@[Link] 99
Gráficos Tridimensionais
Gráficos Tridimensionais de Funções
>> a=-10:.5:10;
>> b=a;
>> [X,Y]=meshgrid(a,b);
>> Z= (X.^2).*Y;
>> mesh(X,Y,Z)
Carlos Alexandre Mello – cabm@[Link] 100
Gráficos Tridimensionais
Carlos Alexandre Mello – cabm@[Link] 101
Gráficos Tridimensionais
>> colormap(gray);
>> surfl(Z)
Carlos Alexandre Mello – cabm@[Link] 102
Gráficos Tridimensionais
>> colormap(gray);
>> surfl(Z);
>> shading interp;
Carlos Alexandre Mello – cabm@[Link] 103
Programação no MatLab
Arquivos-M de Comandos
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 104
MATLAB
Programação
No MatLab, os programas são escritos em
arquivos de texto denominados Arquivos-M
o Arquivos-M: arquivos que contêm código do MatLab.
Podem ser:
Funções
Scripts (Arquivos-M de comandos)
Como são arquivos de texto podem ser criados
usando editores de texto comum
Carlos Alexandre Mello – cabm@[Link] 105
MATLAB
Programação
Os Arquivos-M são interpretados pelo MatLab
para a execução de seus comandos
Assim, para serem executados, os arquivos-M
necessitam do MatLab não podendo operar
isoladamente
Diferente de outras linguagens como, C ou
Pascal, onde seus programas são compilados
Carlos Alexandre Mello – cabm@[Link] 106
MATLAB
Programação
Interpretação
o Vantagem
Código aberto
Fácil de ser estudado
o Desvantagem
Necessidade do “Programa-Pai”
Carlos Alexandre Mello – cabm@[Link] 107
MATLAB
Programação
Arquivos-M
o Para problemas simples, é mais fácil introduzir os
comandos no prompt do MatLab
o No entanto, se o número de comandos é grande, ou
se você deseja mudar o valor de uma ou mais
variáveis e re-executar alguns comandos, pode
tornar-se tedioso introduzir os comandos no prompt
o Solução:
Introduzir os comandos em um arquivo texto chamado
Arquivo-M
Carlos Alexandre Mello – cabm@[Link] 108
MATLAB
Programação
Arquivos-M de Comando: Funções:
Não aceitam argumentos de Aceitam argumentos de
entrada entrada
Útil para automatizar passos Útil para expandir o MATLAB
que sejam executados muitas para suas aplicações
vezes
Carlos Alexandre Mello – cabm@[Link] 109
MATLAB
Criação de um Arquivo-M
Programação
Qualquer editor de textos
Através do próprio MatLab:
o comando edit
edit filename
edit
Carlos Alexandre Mello – cabm@[Link] 110
MATLAB
Criação de um Arquivo-M
Programação
Vantagens do uso do editor do MatLab
o Variação nas cores
o Possibilidade de uso do Debbuger
Carlos Alexandre Mello – cabm@[Link] 111
MATLAB
Arquivos-M de Comandos
Programação
Mais simples forma de arquivo-M
Não aceitam argumentos de entrada ou saída
Operam com dados do Workspace
Quaisquer variáveis criadas pelo script
permanecem no workspace e podem ser usadas
quando o script termina
Carlos Alexandre Mello – cabm@[Link] 112
MATLAB
Criação de Arquivos-M de Comandos
Programação
Edita um arquivo tipo M (editor de texto
qualquer)
Insere comandos e variáveis
Executa a partir do MatLab, bastando, para
isso, digitar o nome do arquivo na linha de
comando
Carlos Alexandre Mello – cabm@[Link] 113
MATLAB
Criação de Arquivos-M de Comandos
Programação
Exemplo de Script:
% Exemplo de um script
% Soma de dois números
a = input (‘Entre com o primeiro número: ’);
b = input (‘Entre com o segundo número: ’);
soma = a + b
Saída do Script
Carlos Alexandre Mello – cabm@[Link] 114
MATLAB
Programação
Em virtude da grande utilidade dos arquivos de
comandos e funções, o MatLab possui diversas
funções que são particularmente apropriadas
para o uso em arquivos-M
Essas funções também podem ser utilizadas no
prompt do MatLab
Veremos a seguir algumas dessas
Carlos Alexandre Mello – cabm@[Link] 115
MATLAB
Programação
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@[Link] 116
MATLAB
Programação
disp(x)
o Exemplo 3:
>> disp(‘Este é o MatLab’);
Este é o MatLab
o Exemplo 4:
>> x = 2; y = 4;
>> disp(‘x+y’);
Observe a diferença entre
x+y as duas formas no uso do
>> disp(x+y) apóstrofo !!!!!!
6
Carlos Alexandre Mello – cabm@[Link] 117
MATLAB
Programação
input
o Solicita ao usuário 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á atribuído à variável x
Carlos Alexandre Mello – cabm@[Link] 118
MATLAB
Programação
pause
o Suspende a execução de um programa até que
alguma tecla seja pressionada
pause(n)
o Suspende a execução por n segundos
Carlos Alexandre Mello – cabm@[Link] 119
MATLAB
Programação
Exemplo de Script:
o Faça um Script que calcule as raízes de um polinômio 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);
o e salve como baskhara.m no diretorio atual
o Para executá-lo, basta digitar baskhara na workspace do
MatLab
Carlos Alexandre Mello – cabm@[Link] 120
Operações Relacionais e Lógicas
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 121
MATLAB
Operações Relacionais e Lógicas
Operadores Relacionais
o < Menor que
o > Maior que
o <= Menor ou igual a
o >= Maior ou igual a
o = Igual a
o == Igual a?
o ~= Diferente de
Carlos Alexandre Mello – cabm@[Link] 122
MATLAB
Operações Relacionais e Lógicas
Diferença entre = e ==
o = : Afirmação (atribuição de um valor)
A=2
• A é igual a 2
• É feita uma afirmação
• Não há resposta do sistema
o == : Questionamento (dúvida 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@[Link] 123
MATLAB
Operações Relacionais e Lógicas
Exemplo:
Carlos Alexandre Mello – cabm@[Link] 124
MATLAB
Operadores Lógicos
Combinam ou negam operações relacionais
o& E
o| OU
o~ Não
Carlos Alexandre Mello – cabm@[Link] 125
MATLAB
Funções de Verificação
ischar(S)
o V se a entrada é um vetor de caracteres
o Cuidado!!!
Carlos Alexandre Mello – cabm@[Link] 126
MATLAB
Controle de Fluxo
Programação
for
if...elseif...else
while
switch....case
Carlos Alexandre Mello – cabm@[Link] 127
MATLAB
Controle de Fluxo
Programação
Laços for
o Possibilitam que uma série de comandos seja
repetida por um número de vezes fixo e pré-definido
Uso:
for índice = começo:incremento:fim
comandos
end
Se o incremento não for escrito, o MatLab
considera 1
Carlos Alexandre Mello – cabm@[Link] 128
MATLAB
Controle de Fluxo
Programação
Laços for
o Para criar um laço decremental deve-se colocar o
incremento igual a -1
for i = 5:-1:1
o Sem esse incremento, o laço não funcionará !!
for i=5:1
Erro !!!
Carlos Alexandre Mello – cabm@[Link] 129
MATLAB
Controle de Fluxo
Programação
Laços for
o Exemplo:
for i = 1:5
disp(i)
end
o Resultado:
1 2 3 4 5
Carlos Alexandre Mello – cabm@[Link] 130
MATLAB
Controle de Fluxo
Programação
Laços for
o Exemplo: Criação de um vetor
i varia de 1 a 5 no
índice do vetor a
e nos seus valores
Carlos Alexandre Mello – cabm@[Link] 131
MATLAB
Controle de Fluxo
Programação
Laços for
o Exemplo: Laço em ordem decrescente
i varia de 5 a 1
Carlos Alexandre Mello – cabm@[Link] 132
MATLAB
Controle de Fluxo
Programação
Laços for
o Exemplo: Variação no passo
i varia de 1 a 10
de 2 em 2
Carlos Alexandre Mello – cabm@[Link] 133
MATLAB
Controle de Fluxo
Programação
Laços for
o Exemplo: Erro
Não foi definido
o passo !!!
Carlos Alexandre Mello – cabm@[Link] 134
MATLAB
Controle de Fluxo
Programação
Dentro de um laço for podem vir quaisquer
comandos do MatLab, inclusive outros laços
for i=1:10
for j=1:5
.....
end
end
Carlos Alexandre Mello – cabm@[Link] 135
MATLAB
Controle de Fluxo
Programação
Cuidados com os laços encadeados !!!
o Observe a diferença no 2 programas a seguir:
o Qual o resultado da execução dos dois programas no
MatLab ??
Carlos Alexandre Mello – cabm@[Link] 136
MATLAB
Controle de Fluxo
Programação
Cálculo 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, calcule
soma = soma + elemento_de_A
Exemplo: Seja A = [1 3 2 4]
1) soma = 0; 4) soma = 4 + 2 = 6;
2) soma = 0 + 1 = 1; 5) soma = 6 + 4 = 10;
3) soma = 1 + 3 = 4;
o Como implementar esse algoritmo no MatLab ??
Carlos Alexandre Mello – cabm@[Link] 137
MATLAB
Controle de Fluxo
Programação
Pseudo-código não-
implementável !!!
Ainda não definimos
como entrar com a
variável a
Variável inicializada com 0.
Poderia ser qualquer valor.
Carlos Alexandre Mello – cabm@[Link] 138
MATLAB
Controle de Fluxo
Programação
Vetorização de Laços
o Exemplo:
i = 0;
for t = 0:0.01:10
i = i+1;
y(i) = sin(t);
end
Versão Vetorizada do código acima
t = 0:0.01:10;
y = sin(t);
Carlos Alexandre Mello – cabm@[Link] 139
MATLAB
Controle de Fluxo
Programação
if-else
o Execução de uma seqüência de comandos
condicionalmente com base em um teste relacional
Uso:
if condição Se condição
comandos comandos
else Senão
comandos comandos
fim
end
Carlos Alexandre Mello – cabm@[Link] 140
MATLAB
Controle de Fluxo
Programação
if-else
o Observações:
Não há obrigação do uso do else
Os comandos após o if serão executados se a condição for
verdadeira
Se a condição envolve muitas subexpressões lógicas, todas
são executadas mesmo que uma das primeiras
subexpressões já seja suficiente para determinar o valor
lógico da condição
• Uso de operadores lógicos
Carlos Alexandre Mello – cabm@[Link] 141
MATLAB
Controle de Fluxo
Programação
if-else-elseif
if condição1 Se condição1
comandos comandos
elseif condição2 Senão Se condição2
comandos comandos
Senão
else
comandos
comandos fim
end
Carlos Alexandre Mello – cabm@[Link] 142
MATLAB
Controle de Fluxo
Programação
Exemplo: Resolução de Equações do segundo grau
Carlos Alexandre Mello – cabm@[Link] 143
MATLAB
Controle de Fluxo
Programação
Exemplo: Jogo da Adivinhação
Carlos Alexandre Mello – cabm@[Link] 144
MATLAB
Controle de Fluxo
Programação
Laço while
o Ao contrário do laço for que executa um grupo de
comandos um número fixo de vezes, o while executa
um grupo de instruções um número indefinido de
vezes
Carlos Alexandre Mello – cabm@[Link] 145
MATLAB
Controle de Fluxo
Programação
While
o Uso: Enquanto expressão
while expressão
comandos comandos
end fim
Enquanto a expressão for verdadeira, os comandos
serão executados
Pode-se usar o comando break para sair do laço
Carlos Alexandre Mello – cabm@[Link] 146
MATLAB
Controle de Fluxo
Programação
Exemplo: Considere os 2 programas:
Nesse caso,
total sai com
valor 100 do
laço
Aqui, total sai do while
com valor de 110 já que,
quando total for igual a
100 ele ainda entrará no
laço e será somado com
10
Carlos Alexandre Mello – cabm@[Link] 147
MATLAB
Controle de Fluxo
Programação
Exemplo: Checagem de cartão de crédito
o O programa a seguir verifica se uma pessoa entrou
com um número ao ser requisitado o número de seu
cartão de crédito
Carlos Alexandre Mello – cabm@[Link] 148
MATLAB
Controle de Fluxo
Programação
Exemplo: Laço interminável
Provocando um fim no laço....
Uma contagem é
feita e, caso o
contador atinja o
valor de 20, o laço
é quebrado
Carlos Alexandre Mello – cabm@[Link] 149
MATLAB
Controle de Fluxo
Programação
Estrutura switch-case
o Usada quando seqüências de comandos devem ser
condicionalmente executadas baseadas no uso
repetido de um teste de igualdade com um
argumento comum
Carlos Alexandre Mello – cabm@[Link] 150
MATLAB
Controle de Fluxo
Programação
switch
switch expressão Verifique expressão
case valor1 caso valor1
comandos comandos
case valor2 caso valor2
comandos
comandos
....
..... caso contrário
otherwise comandos
comandos fim
end
Carlos Alexandre Mello – cabm@[Link] 151
MATLAB
Controle de Fluxo
Programação
switch - Observação
o Para programadores de C:
NÃO USA BREAK !!!!
Não tem “:”
Carlos Alexandre Mello – cabm@[Link] 152
MATLAB
Controle de Fluxo
Programação
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@[Link] 153
MATLAB
Controle de Fluxo
Programação
Exemplo: Calculadora
de 4 operações
Por que a definição de
z=nan ? O que acontece
se retirarmos essa linha ?
Carlos Alexandre Mello – cabm@[Link] 154
Programação no MatLab
Funções
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 155
MATLAB
Funções
Aceitam argumentos de entrada e retornam
argumentos de saída
Operam com variáveis próprias fora do
workspace do MatLab
Exemplo de Função:
function y = average(x)
% Average Mean of Vector elements
y = sum(x)/length(x);
Carlos Alexandre Mello – cabm@[Link] 156
MATLAB
Funções
Regras e Propriedades
o O nome da função deve ser idêntico ao nome do
arquivo
o As linhas de comentário de um arquivo que
antecedem a primeira linha que não contém
comentários constituem o texto que é
apresentado como help da função
Carlos Alexandre Mello – cabm@[Link] 157
MATLAB
Funções
Regras e Propriedades
o As variáveis usadas nas funções independem
das variáveis da workspace do MatLab
Se, na workspace do MatLab, há uma variável A com
valor 10 e este mesmo nome de variável é utilizado
dentro de uma função, assumindo o valor 20 (por
exemplo), ao executarmos a função, A será igual a 20
apenas dentro da função. Na workspace, A continua
sendo igual a 10
Carlos Alexandre Mello – cabm@[Link] 158
MATLAB
Checando o Número de Argumentos
Funções
Funções nargin e nargout determinam o número
de argumentos de entrada e saída de uma
função
function c = testarg1(a,b)
if (nargin == 1)
c = a.^2;
elseif (nargin == 2)
c = a + b;
end
nargout pode ser usado em funções que
apresentam respostas diferentes dependendo
do número de saídas (como polyder(a,b))
Carlos Alexandre Mello – cabm@[Link] 159
MATLAB
Estrutura de uma Função
Funções
Nome que
deve ser usado
no arquivo-M
Linha de definição da função
function f = fat(n)
Comentário % FAT Fatorial
Corpo da função f = prod(1:n);
Arquivo-M
Carlos Alexandre Mello – cabm@[Link] 160
MATLAB
Anatomia de uma Função
Funções
Uma linha de definição da função
Texto de ajuda da função
o Servirá como Help da função
Corpo da função
Comentários
Carlos Alexandre Mello – cabm@[Link] 161
MATLAB
Anatomia de uma Função
Funções
Uma linha de definição da função
o Essa linha informa ao MatLab que o arquivo contém
uma função e especifica os argumentos da função
function y = average(x)
Argumento(s) de Entrada
Nome da Função (o arquivo deve
ser salvo com este nome !!!!)
Argumento (s) de Saída
Keyword
Carlos Alexandre Mello – cabm@[Link] 162
MATLAB
Anatomia de uma Função
Funções
Uma linha H1
o Primeira linha de ajuda do texto é uma linha
comentada seguindo imediatamente a linha de
definição da função
% AVERAGE Média de um vetor
Símbolo de Comentário
Carlos Alexandre Mello – cabm@[Link] 163
MATLAB
Anatomia de uma Função
Funções
Texto de ajuda da função
o Texto de ajuda com uma ou mais linhas comentadas
para facilitar o uso da função
o Mesma estrutura da linha H1
Linhas precedidas de %
Carlos Alexandre Mello – cabm@[Link] 164
MATLAB
Anatomia de uma Função
Funções
Corpo da função
o Códigos do MatLab para desempenhar toda a computação
necessária e atribuir valores aos argumentos de saída
Chamadas a funções
Construções de Programação (if...else, etc)
Cálculos
Comentários
....
Comentários
o Podem aparecer em qualquer parte do arquivo sempre
precedidos pelo símbolo %
Carlos Alexandre Mello – cabm@[Link] 165
MATLAB
Nomes das Funções
Funções
O MatLab só usa os 31 primeiros caracteres
O nome deve começar com uma letra
Pode ser composto por letras, números, etc
Nome do arquivo terminado por “.m”
filename.m
Carlos Alexandre Mello – cabm@[Link] 166
MATLAB
Funções de Gerenciamento de Memória
Removendo uma Função da Memória
o O código do arquivo-M é removido da memória quando:
A função é chamada novamente com um novo código nela
A função é apagada explicitamente com o comando clear
Todas as funções são explicitamente apagadas com o
comando clear functions
MATLAB sai da memória
Carlos Alexandre Mello – cabm@[Link] 167
MATLAB
Funções de Gerenciamento de Memória
Para Conservar Memória
o Evite usar as mesmas variáveis como entrada e saída
de uma função:
y = fun(x, y)
o Use a função clear ou clear nome_da_variável sempre
que possível
o Re-use variáveis o máximo possível
Carlos Alexandre Mello – cabm@[Link] 168
MATLAB
Subfunções
Arquivos-M de funções podem conter mais de
uma função (chamadas subfunções)
Observe que apenas a função primária (a qual
gerou o nome do arquivo-M) pode ser
executada do MatLab
As outras funções são chamadas de dentro da
função primária apenas
Carlos Alexandre Mello – cabm@[Link] 169
MATLAB
Subfunções
function y = teste(a)
Função Primária
.....
Subfunção function x = teste2(b)
.....
Subfunção function z = teste3(c)
.....
Arquivo teste.m
Carlos Alexandre Mello – cabm@[Link] 170
MATLAB
Subfunções
A função teste é executada de dentro do
MatLab e chama as subfunções 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@[Link] 171
MATLAB
Funções
Ao ser chamada, a função permanece na
memória até que o comando clear seja dado:
clear function_name
• remove uma função específica do workspace
clear functions
• remove todas as funções
clear all
• remove funções e variáveis
Carlos Alexandre Mello – cabm@[Link] 172
MATLAB
Funções
Exemplos de Funções:
o Função que calcula as raízes de um polinômio de
grau menor ou igual a dois
o Caso I:
Os coeficientes do polinômio são inseridos dentro da função
Ou seja, a função não possui argumentos de entrada, mas
tem uma saída (Y) que pode ser um número apenas ou um
vetor
Função baskhara1.m
Observação: Não foi considerada a possibilidade do usuário
atribuir ZERO aos três coeficientes
Carlos Alexandre Mello – cabm@[Link] 173
MATLAB
Funções
baskhara1.m
Carlos Alexandre Mello – cabm@[Link] 174
MATLAB
Funções
Função que calcula as raízes de um polinômio
de grau menor ou igual a dois
o Caso II:
Os coeficientes do polinômio são passados como
argumentos para a função
Ou seja, a função tem três entradas (A, B, C) e uma saída
(Y) que pode ser um número apenas ou um vetor
Função baskhara2.m
Carlos Alexandre Mello – cabm@[Link] 175
MATLAB
Funções
baskhara2.m
Carlos Alexandre Mello – cabm@[Link] 176
MATLAB
Funções
Função que calcula as raízes de um polinômio
de grau menor ou igual a dois
o Caso III:
Os coeficientes do polinômio são passados como
argumentos para a função dentro de um vetor
Ou seja, a função tem uma entrada (X) na forma de um
vetor e uma saída (Y) que pode ser um número apenas ou
um vetor
Função baskhara3.m
Carlos Alexandre Mello – cabm@[Link] 177
MATLAB
Funções
baskhara3.m
Carlos Alexandre Mello – cabm@[Link] 178
MATLAB
Funções
Função que calcula as raízes de um polinômio
de grau menor ou igual a dois
o Caso IV:
Os coeficientes do polinômio são passados como
argumentos para a função dentro de um vetor
A função tem duas saídas
Ou seja, a função tem uma entrada (X) na forma de um
vetor e duas saídas (Y, Z)
Função baskhara4.m
Carlos Alexandre Mello – cabm@[Link] 179
MATLAB
Funções
baskhara4.m
Carlos Alexandre Mello – cabm@[Link] 180
Simulink
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 181
Simulink
Módulo para análise de modelos e construção
de funções
Para executá-lo, digite
o >> simulink
dentro do MatLab
Carlos Alexandre Mello – cabm@[Link] 182
Simulink
Tela de Entrada
Área de Projeto
Ferramentas
Carlos Alexandre Mello – cabm@[Link] 183
Simulink
Para criar um sistema, basta arrastar um bloco das
ferramentas para a área de projeto
As conexões entre os blocos são feitas através das
entradas (>) e saídas (>) de cada bloco
As conexões podem ser marcadas (clicando com o
mouse) e deletadas (com del)
Carlos Alexandre Mello – cabm@[Link] 184
Simulink
Módulos
Fontes
Carlos Alexandre Mello – cabm@[Link] 185
Simulink
Módulos
Saídas
Carlos Alexandre Mello – cabm@[Link] 186
Simulink
Módulos
Discreto
Carlos Alexandre Mello – cabm@[Link] 187
Simulink
Módulos
Linear
Carlos Alexandre Mello – cabm@[Link] 188
Simulink
Módulos
Não-Linear
Carlos Alexandre Mello – cabm@[Link] 189
Simulink
Módulos
Conexões
Carlos Alexandre Mello – cabm@[Link] 190
Simulink
Módulos
Blocos e Ferramentas
Carlos Alexandre Mello – cabm@[Link] 191
Simulink
Exemplo 1:
Carlos Alexandre Mello – cabm@[Link] 192
Simulink
Exemplo 1: A simulação anterior deve ser
executada
o Simulation -> Start
Ao terminar, o resultado pode ser visto no
osciloscópio, clicando duas vezes nele
Carlos Alexandre Mello – cabm@[Link] 193
Simulink
Exemplo 1:
Carlos Alexandre Mello – cabm@[Link] 194
Simulink
Exemplo 2: A saída do sistema pode ser
alterada para um novo formato:
Carlos Alexandre Mello – cabm@[Link] 195
Simulink
Exemplo 2: Após a execução do sistema, o
resultado é apresentado
Carlos Alexandre Mello – cabm@[Link] 196
Simulink
Exemplo 3: Soma de duas entradas:
Carlos Alexandre Mello – cabm@[Link] 197
Simulink
Clicando duas vezes em um bloco, abre-se uma
janela com as opções que podem ser alteradas do
bloco:
Carlos Alexandre Mello – cabm@[Link] 198
Simulink
Um mesmo bloco pode assumir diferentes funções:
Carlos Alexandre Mello – cabm@[Link] 199
Simulink
As propriedades de um bloco podem alterar suas
próprias funções, como um somador, por exemplo
Carlos Alexandre Mello – cabm@[Link] 200
Simulink
Ao ser clicado duas vezes, suas propriedades
permitem que o bloco tenha suas funções alteradas
, incluindo o número de entradas
Carlos Alexandre Mello – cabm@[Link] 201
Simulink
Resultando num novo bloco
Carlos Alexandre Mello – cabm@[Link] 202
Simulink
Exemplo 4: Motor c.c. controlado por armadura
(retirado do livro Engenharia de Controle Moderno,
Ogata, pg 110)
Carlos Alexandre Mello – cabm@[Link] 203
Simulink
Exemplo 4: Em Diagrama de Blocos:
Carlos Alexandre Mello – cabm@[Link] 204
Simulink
Exemplo 4: No Simulink, para R=L=J=f=K=Kb=1, temos :
Carlos Alexandre Mello – cabm@[Link] 205
Simulink
Exemplo 4: Ao ser inicializado, a resposta do osciloscópio será
mostrada como abaixo:
Carlos Alexandre Mello – cabm@[Link] 206
Simulink
Exemplo 5: Eletrônica Digital: Ou-Exclusivo realizado com portas
E, Não e Ou
o Diagrama:
Carlos Alexandre Mello – cabm@[Link] 207
Simulink
Exemplo 5: No Simulink
Carlos Alexandre Mello – cabm@[Link] 208
ToolBox de Sistemas de Controle
Os sistemas contínuos e discretos podem ser
descritos na forma de uma função de
transferência de zeros e pólos
As funções de transferência são descritas por
razões de polinômios o que é facilmente tratado
no MatLab através de vetores com os
coeficientes dos polinômios
Carlos Alexandre Mello – cabm@[Link] 209
MatLab
Sistemas de Controle
Carlos Alexandre Mello
Carlos Alexandre Mello – cabm@[Link] 210
ToolBox de Sistemas de Controle
Os sistemas LTI (linear time-invariant) podem
ser especificados através de modelos de
funções de transferência, modelos de
zero/pólo/ganho e modelos de estado-espaço
Para criar um objeto LTI basta usar uma das
funções construtoras correspondentes:
o tf, zpk, ss
Carlos Alexandre Mello – cabm@[Link] 211
ToolBox de Sistemas de Controle
No MatLab:
o sys = tf(num, den) % função de transferência
o sys = zpk(z,p,k) % zero/pólo/ganho
o sys = ss(a,b,c,d) % espaço-estado
Para criar modelos discretos no tempo,
acrescenta-se o período de amostragem Ts às
funções acima
o sys = tf(num, den, Ts)
Carlos Alexandre Mello – cabm@[Link] 212
ToolBox de Sistemas de Controle
Exemplos:
o h = tf(1,[1 1])
cria a função de transferência 1/(s + 1)
Carlos Alexandre Mello – cabm@[Link] 213
ToolBox de Sistemas de Controle
Exemplos:
o h = tf([1 2],[1 1 10]);
cria a função de transferência
Carlos Alexandre Mello – cabm@[Link] 214
ToolBox de Sistemas de Controle
Exemplos:
Carlos Alexandre Mello – cabm@[Link] 215
ToolBox de Sistemas de Controle
Exemplos: Outra variação....
Carlos Alexandre Mello – cabm@[Link] 216
ToolBox de Sistemas de Controle
Você pode usar o comando tf com apenas um
argumento para especificar ganhos simples ou
matrizes de ganho
Carlos Alexandre Mello – cabm@[Link] 217
ToolBox de Sistemas de Controle
Sistemas com múltiplas entradas e múltiplas
saídas (função de transf):
Carlos Alexandre Mello – cabm@[Link] 218
ToolBox de Sistemas de Controle
Sistemas com múltiplas entradas e múltiplas
saídas (outra forma):
Carlos Alexandre Mello – cabm@[Link] 219
ToolBox de Sistemas de Controle
Operações em Modelos LTI
o Adição (Sistemas em Paralelo)
Carlos Alexandre Mello – cabm@[Link] 220
ToolBox de Sistemas de Controle
Operações em Modelos LTI
o Adição
Carlos Alexandre Mello – cabm@[Link] 221
ToolBox de Sistemas de Controle
o Adição (Cuidados !!)
Tempo de amostragem
indefinido
Tempos de amostragem
idênticos
Tempos de amostragem
diferentes! ERRO!!!
Carlos Alexandre Mello – cabm@[Link] 222
ToolBox de Sistemas de Controle
Operações em Modelos LTI
o Multiplicação (Sistemas em Série)
Carlos Alexandre Mello – cabm@[Link] 223
ToolBox de Sistemas de Controle
Operações em Modelos LTI
o Multiplicação
Carlos Alexandre Mello – cabm@[Link] 224
ToolBox de Sistemas de Controle
Conexões entre Sistemas
o Sejam os sistemas:
Carlos Alexandre Mello – cabm@[Link] 225
ToolBox de Sistemas de Controle
Conexões em Série
Carlos Alexandre Mello – cabm@[Link] 226
ToolBox de Sistemas de Controle
Conexões em Paralelo
Carlos Alexandre Mello – cabm@[Link] 227
ToolBox de Sistemas de Controle
Feedback
Carlos Alexandre Mello – cabm@[Link] 228
ToolBox de Sistemas de Controle
Modelo zero/pólo/ganho
Modelos SISO (Simple Input, Simple Output)
zero pólo ganho
Carlos Alexandre Mello – cabm@[Link] 229
ToolBox de Sistemas de Controle
Modelos MIMO (Multiple Input, Multiple Output)
Carlos Alexandre Mello – cabm@[Link] 230
ToolBox de Sistemas de Controle
Os comandos anteriores criam o modelo de zero-pólo-
ganho de duas entradas e duas saídas:
Carlos Alexandre Mello – cabm@[Link] 231
ToolBox de Sistemas de Controle
Sistemas com múltiplas entradas e múltiplas
saídas (modelo de zero/pólo/ganho):
Carlos Alexandre Mello – cabm@[Link] 232
ToolBox de Sistemas de Controle
Modelo zero/pólo/ganho
Exemplo de um modelo discreto no tempo:
Carlos Alexandre Mello – cabm@[Link] 233
ToolBox de Sistemas de Controle
Modelos Estado-Espaço
o Lidam com equações diferenciais para descrever
sistemas dinâmicos
o onde x é o vetor de estado e u e y são os vetores de
entrada e saída
Carlos Alexandre Mello – cabm@[Link] 234
ToolBox de Sistemas de Controle
Modelos Estado-Espaço
o No MatLab, usa-se o comando
sys = ss(A,B,C,D)
o para um modelo com Nx estados, Ny saídas e Nu
entradas
A é uma matriz Nx por Nx
B é uma matriz Nx por Nu
C é uma matriz Ny por Nx
D é uma matriz Ny por Nu
Carlos Alexandre Mello – cabm@[Link] 235
ToolBox de Sistemas de Controle
Modelos Estado-Espaço
Exemplo:
o Considere o seguinte modelo de um motor:
o onde teta é o deslocamento angular do motor e I é a
corrente
Carlos Alexandre Mello – cabm@[Link] 236
ToolBox de Sistemas de Controle
Exemplo (cont.):
o A relação entre a corrente de entrada u=I e a
velocidade angular é descrita pela
equação de estado-espaço:
dx/dt = Ax + Bu
y = Cx
o onde
Carlos Alexandre Mello – cabm@[Link] 237
ToolBox de Sistemas de Controle
Exemplo (cont.):
o No MatLab, o modelo é especificado como:
A B C D
Carlos Alexandre Mello – cabm@[Link] 238
ToolBox de Sistemas de Controle
Exemplo (cont.):
o Tendo como
resposta:
Carlos Alexandre Mello – cabm@[Link] 239
ToolBox de Sistemas de Controle
Modelo de Estado-Espaço
o drss(N)
Cria um modelo aleatório discreto de estado-espaço de N-
ésima ordem
Exemplo:
• >> drss(2)
• >> drss(3)
• ....
Carlos Alexandre Mello – cabm@[Link] 240
ToolBox de Sistemas de Controle
drss(N)
Carlos Alexandre Mello – cabm@[Link] 241
ToolBox de Sistemas de Controle
filt
o Especificação de funções de transferência discretas
Carlos Alexandre Mello – cabm@[Link] 242
ToolBox de Sistemas de Controle
filt
o Outro exemplo:
Carlos Alexandre Mello – cabm@[Link] 243
ToolBox de Sistemas de Controle
Resposta no Tempo e na Freqüência
Carlos Alexandre Mello – cabm@[Link] 244
ToolBox de Sistemas de Controle
Resposta no Tempo e na Freqüência
Carlos Alexandre Mello – cabm@[Link] 245
ToolBox de Sistemas de Controle
Carlos Alexandre Mello – cabm@[Link] 246
ToolBox de Sistemas de Controle
Para sobrepor e comparar as respostas de
vários sistemas LTI, basta escrever:
o >> bode (sys1,sys2,sys3,....)
o Exemplo:
o ou bode (sys1, ‘r’, sys2, ‘b’)
Definindo a cor de cada gráfico
Carlos Alexandre Mello – cabm@[Link] 247
ToolBox de Sistemas de Controle
Carlos Alexandre Mello – cabm@[Link] 248
ToolBox de Sistemas de Controle
LTI Viewer (Visualizador)
o Interface gráfica para visualização e manipulação de
gráficos de modelos LTI
o Uso:
ltiview(tipo_de_grafico, sys1,sys2,..)
Tipo de Grafico: step, impulse, initial, lsim, pzmap, bode,
nyquist, nichols, sigma
Carlos Alexandre Mello – cabm@[Link] 249
ToolBox de Sistemas de Controle
Exemplo: Para o sistema definido por sys:
Carlos Alexandre Mello – cabm@[Link] 250
ToolBox de Sistemas de Controle
Clicando sobre o gráfico na janela....
Carlos Alexandre Mello – cabm@[Link] 251
ToolBox de Sistemas de Controle
Destacando um gráfico....
Carlos Alexandre Mello – cabm@[Link] 252
ToolBox de Sistemas de Controle
Mudando o tipo de gráfico....
Carlos Alexandre Mello – cabm@[Link] 253
ToolBox de Sistemas de Controle
Impulse
Carlos Alexandre Mello – cabm@[Link] 254
ToolBox de Sistemas de Controle
Pólos e
Zeros
Carlos Alexandre Mello – cabm@[Link] 255
ToolBox de Sistemas de Controle
Recuperação de Dados
o As funções tf, zpk, ss e frd empacotam os dados e
tempo de amostragem em um único objeto
o É possível fazer o processo inverso e recuperar os
dados que geraram um objeto:
[num, den, ts] = tfdata(sys)
[z,p,k,ts] = zpkdata(sys)
[a,b,c,d]=ssdata(sys)
Carlos Alexandre Mello – cabm@[Link] 256
ToolBox de Sistemas de Controle
Recuperação de Dados
o Exemplo:
Carlos Alexandre Mello – cabm@[Link] 257
ToolBox de Sistemas de Controle
Recuperação de Dados
o Exemplo:
(cont)
Carlos Alexandre Mello – cabm@[Link] 258
ToolBox de Sistemas de Controle
Recuperação de Dados
o Exemplo (cont): Para acessar os dados...
Carlos Alexandre Mello – cabm@[Link] 259
ToolBox de Sistemas de Controle
Recuperação de Dados
o Exemplo (cont): O mesmo pode ser conseguido
com...
Carlos Alexandre Mello – cabm@[Link] 260
ToolBox de Sistemas de Controle
Conversão de Modelos
o sys = tf(sys) % Conversão para TF
o sys = zpk(sys) % Conversão para ZPK
o sys = ss(sys) % Conversão para Estado-
Espaço
Carlos Alexandre Mello – cabm@[Link] 261
ToolBox de Sistemas de Controle
Conversão de Modelos
o Exemplo:
Carlos Alexandre Mello – cabm@[Link] 262
ToolBox de Sistemas de Controle
Conversão de Modelos
o Exemplo:
Converte de
TF para ZPK
Carlos Alexandre Mello – cabm@[Link] 263
ToolBox de Sistemas de Controle
Conversão de Modelos
Cuidados!!
o A conversão nem sempre é precisa!
o Pode haver perda por arredondamento de alguns
valores, principalmente na conversão para TF
Carlos Alexandre Mello – cabm@[Link] 264
ToolBox de Sistemas de Controle
Conversão AD/DA
Conversão Contínuo-Discreto
com período de amostragem
de 0.1
Carlos Alexandre Mello – cabm@[Link] 265
ToolBox de Sistemas de Controle
Conversão AD/DA
Conversão Discreto-Contínuo
Igual a sys1!!
Carlos Alexandre Mello – cabm@[Link] 266
ToolBox de Sistemas de Controle
Criando blocos no Simulink
1
2
Carlos Alexandre Mello – cabm@[Link] 267
ToolBox de Sistemas de Controle
Clicando duas vezes em ltiblock...
Carlos Alexandre Mello – cabm@[Link] 268
ToolBox de Sistemas de Controle
Discretização de Sistemas
Função c2d:
Contínuo para
Discreto
Plotagem
Carlos Alexandre Mello – cabm@[Link] 269
ToolBox de Sistemas de Controle
Discretização de Sistemas
Carlos Alexandre Mello – cabm@[Link] 270
ToolBox de Sistemas de Controle
Discretização de Sistemas
o Cuidados com a taxa de amostragem...
Carlos Alexandre Mello – cabm@[Link] 271
ToolBox de Sistemas de Controle
Discretização de Sistemas
Baixa taxa de
Amostragem !
Carlos Alexandre Mello – cabm@[Link] 272
ToolBox de Sistemas de Controle
Ferramentas para Análise de Modelos
o Suponha o seguinte sistema:
Carlos Alexandre Mello – cabm@[Link] 273
ToolBox de Sistemas de Controle
Ferramentas para Análise de Modelos:
Comando class
o Fornece o tipo do modelo
>> class(H)
ans = tf
Comando size
o Fornece as dimensões de entrada e saída
>> size(H)
Transfer function with 2 input(s) and 1 output(s).
Carlos Alexandre Mello – cabm@[Link] 274
ToolBox de Sistemas de Controle
Ferramentas para Análise de Modelos:
Comando size
>> [ny, nu] = size(H)
ny = 1 % número de saídas
nu = 2 % número de entradas
Carlos Alexandre Mello – cabm@[Link] 275
ToolBox de Sistemas de Controle
Ferramentas para Análise de Modelos:
Comandos Lógicos:
o isempty (H)
Verdadeiro se o modelo está vazio
o isct (H)
Verdadeiro se o modelo é contínuo
o isdt (H)
Verdadeiro se o modelo é discreto
Carlos Alexandre Mello – cabm@[Link] 276
ToolBox de Sistemas de Controle
Ferramentas para Análise de Modelos:
Carlos Alexandre Mello – cabm@[Link] 277
ToolBox de Sistemas de Controle
Carlos Alexandre Mello – cabm@[Link] 278
ToolBox de Sistemas de Controle
Respostas no Tempo
o >> step(H)
Carlos Alexandre Mello – cabm@[Link] 279
ToolBox de Sistemas de Controle
Respostas no Tempo
o Simula de 0 a 10 segundos
>> step(H,10)
o Amostras espaçadas de 0.01 segundo
>> t=0:0.01:10
>> step(H, t)
Carlos Alexandre Mello – cabm@[Link] 280
ToolBox de Sistemas de Controle
Respostas no Tempo
o >> impulse(H)
Carlos Alexandre Mello – cabm@[Link] 281
ToolBox de Sistemas de Controle
Resposta em Freqüência
o Diagrama de Bode: bode(H)
Carlos Alexandre Mello – cabm@[Link] 282
ToolBox de Sistemas de Controle
Resposta em Freqüência
o Diagrama de Bode em escala logarítmica:
Carlos Alexandre Mello – cabm@[Link] 283
ToolBox de Sistemas de Controle
Resposta em Freqüência
o Diagrama de Nyquist: >> nyquist(H)
Carlos Alexandre Mello – cabm@[Link] 284
A Seguir....
Modelagem no Domínio da Frequência
Carlos Alexandre Mello – cabm@[Link] 285