0% acharam este documento útil (0 voto)
5 visualizações285 páginas

Matriz e Identidade no MATLAB

Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações285 páginas

Matriz e Identidade no MATLAB

Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

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

Você também pode gostar