MATLABThe Language of Technical Computing
Carlos Alexandre Mello
1Carlos Alexandre Mello – [email protected]
Carlos Alexandre Mello
MATLABO Curso
�Computação�Programação�Visualização�Simulink
2Carlos Alexandre Mello – [email protected]
�Simulink�Toolbox de Sistemas de Controle
MATLAB
� O que é ?o Ferramenta de apoio à Engenharia
� Cálculos Matemáticos� Desenvolvimento de Algoritmos� Análise, Exploração e Visualização de dados
3Carlos Alexandre Mello – [email protected]
� 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
MATLAB
�Tela de Entrada�Comandos:
o helpwino demo
�Prompt: >>
4Carlos Alexandre Mello – [email protected]
�Prompt: >>o Sistema pronto para executar tarefas
� Exemplo: >> v = [1 2 3; 4 5 6; 7 8 9]
� whoso mostra a memória alocada
MATLABFunções de Gerenciamento de Memória
5Carlos Alexandre Mello – [email protected]
MATLABHelp
�O Help (Ajuda) do MatLab pode ser acessadode duas formas diferentes:o Comando helpwin
O termo a ser
6Carlos Alexandre Mello – [email protected]
O termo a ser pesquisado deveser inserido aqui
MATLABHelp
�Help do MatLab:o Comando help (usado no prompt):
7Carlos Alexandre Mello – [email protected]
MATLABWorkspace - Área de Trabalho
� Exemplo:o >> a = 2;o >> b = 3;o >> c = a + bo >> c = 5
8Carlos Alexandre Mello – [email protected]
� Caso nenhuma variável seja definida, o MatLab assumeuma variável padrão chamada ans (de answer =resposta, em inglês)
� No exemplo anterior, teríamos:o >> a + bo >> ans = 5
MATLABWorkspace - Área de Trabalho
�Comentárioso Qualquer texto precedido de %
�Pontuaçãoo ; - Ponto e Vírgula
9Carlos Alexandre Mello – [email protected]
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
�Valores Especiais:o pi 3.1415926535897....o i,j Unidade Imagináriao inf Infinito (n/0 = inf)
MATLABVariáveis Especiais no MatLab
10Carlos Alexandre Mello – [email protected]
o inf Infinito (n/0 = inf)o NaN Not-a-Number (inf/inf)o version Versão do MatLabo computer Tipo de computadoro flops Contagem de operações de ponto
flutuante
MatLabNúmeros Complexos
�Representados pelas letras i ou j
o >> a=1 - 2i;o >> a = 1 - 2j;
�Uma das poucas variáveis do MatLab que
11Carlos Alexandre Mello – [email protected]
�Uma das poucas variáveis do MatLab quepermite a notação com o uso da variável i ou jjustaposta sem o sinal da multiplicaçãoo 2i = 2*io 2j = 2*j
Matemática Elementar
Carlos Alexandre Mello
12Carlos Alexandre Mello – [email protected]
Carlos Alexandre Mello
MATLABMatemática Elementar
� Operações aritméticas:o Adição:
� a+bo Subtração
� a-bo Multiplicação
13Carlos Alexandre Mello – [email protected]
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)
MATLABFunções Matemáticas Elementares
�Funções trigonométricas básicas em Radianoso sin, cos, tan, asin, acos, atan
�Arredondamentoo ceil(x)
� Arredondamento para cima
14Carlos Alexandre Mello – [email protected]
� Arredondamento para cimao floor(x)
� Arredondamento para baixoo fix(x)
� Arredondamento na direção do zeroo round(x)
� Arredondamento para o número inteiro mais próximo
MATLABFunções Matemáticas Elementares
�Números Inteiroso rem(x,y)
� Resto da divisão de x por yo sign(x)
� Função sinal: retorna o sinal de x; igual a 1, se x > 0, -1, se x
15Carlos Alexandre Mello – [email protected]
� 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
MATLABVetores
�Vetoreso Matrizes com apenas uma linhao Conjunto de elementos que podem ser números
inteiros, reais, complexos ou caracteres
17Carlos Alexandre Mello – [email protected]
inteiros, reais, complexos ou caracteres� >> x = [1 2 3 4 5];
o Elementos separados por espaços em branco edelimitados por colchetes [ ]� >> y = [ ‘matlab’ ‘versão 5’];
o Caracteres sempre entre apóstrofos ‘’ !!
MATLABVetores
�Endereçamento Vetorialo Todos os elementos de um vetor podem ser
acessados por um índice� >> x = [1 4 7];
18Carlos Alexandre Mello – [email protected]
� 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 !!!!
MATLABVetores
�Endereçamento Vetorialo Observação:
� x = [‘matlab’ ‘versão 5’]• x(1) = ‘m’ x(12) = ‘o’
19Carlos Alexandre Mello – [email protected]
� Cada caractere é um elemento do vetor !
o É possível acessar um bloco de elementos com ooperador 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.
MATLABVetores
�Endereçamento Vetorialo Pode-se acessar os elementos em ordem inversa
� >> x= [1 4 6 2 7 8 3];� >> x(4:-1:1) = [2 6 4 1]
20Carlos Alexandre Mello – [email protected]
• Todos os elementos de x do 4o. ao 1o. de -1 em -1• -1 = Passo
� O passo pode ser qualquer número inteiro positivo ounegativo
MATLABVetores
�Construção automática de vetoreso >> a = 1:5o >> a = (1:5)
� Cria um vetor a com elementos 1, 2, 3, 4, 5
21Carlos Alexandre Mello – [email protected]
� Cria um vetor a com elementos 1, 2, 3, 4, 5
o >> a=1:2:5o >> 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
MATLABVetores
�Construção automática de vetores�Dados 2 vetores quaisquer a e b:
o a = [1 2 5]o b = [3 4 0]
22Carlos Alexandre Mello – [email protected]
o b = [3 4 0]
�pode-se construir um terceiro vetor c através dajunção de a e bo 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]
MATLABVetores
�Orientação de Vetoreso Transposição de Vetores
� Vetores Reais
23Carlos Alexandre Mello – [email protected]
MATLABVetores
�Orientação de Vetoreso Transposição de Vetores
� Vetores complexos
24Carlos Alexandre Mello – [email protected]
Operador ponto...
...gera a matriz transpostaconjugada
MATLABVetores
Funções Matemáticas Elementares
� Para um vetor:o max(x)
� Elemento máximoo min(x)
� Elemento mínimoo mean(x)
� Média
25Carlos Alexandre Mello – [email protected]
� Médiao median(x)
� Medianao prod(x)
� Produto dos elementoso sum(x)
� Soma dos elementoso sort(x)
� Ordenação dos elementos de forma decrescente
MATLABVetores e Matrizes
� Vetores Especiaiso rand(1,n)
� Cria um vetor de n elementos onde cada elemento é um númeroaleatório entre 0 e 1
• Exemplo: rand(1,5)
26Carlos Alexandre Mello – [email protected]
� 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
MATLABMatrizes
�Definição de Matrizes�Manipulação de Matrizes�Sub-matrizes�Comparação
28Carlos Alexandre Mello – [email protected]
�Comparação�Dimensão�Operações
MATLABMatrizes
� Criação de Matrizes
29Carlos Alexandre Mello – [email protected]
� Ponto-e-vírgula é usado para separar as linhas damatriz
� CUIDADO!!!o Todas as linhas da matriz devem ter o mesmo número de
elementos!!!
MATLABMatrizes
�Operações Escalareso Seja B um vetor ou uma matriz, são válidas
quaisquer operações com escalares:� B - 2
30Carlos Alexandre Mello – [email protected]
� 3*B - 4� B/2� B + 5
MATLABMatrizes
�Operações entre Matrizeso Adição e Subtração são válidas sempre que as
matrizes envolvidas tiverem as mesmas dimensõeso Multiplicação e Divisão devem obedecer às normas
31Carlos Alexandre Mello – [email protected]
o Multiplicação e Divisão devem obedecer às normasrelacionadas as dimensões das matrizes:� Amxn*Bnxp = Cmxp� Amxp/Bnxp=Cmxn� A/B = inv(B)*A, se B for quadrada
MATLABMatrizes
�Operações entre Matrizeso Operações Pontuadas
� Sejam A e B duas matrizes• A.*B -> Multiplica cada elemento de A pelo correspondente em
B
32Carlos Alexandre Mello – [email protected]
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
MATLABMatrizes
�Matrizes Especiaiso ones(m,n)
� Cria uma matriz mxn onde todos os seus elementos sãoiguais à 1
33Carlos Alexandre Mello – [email protected]
o zeros(m,n)� Cria uma matriz mxn onde todos os seus elementos são
iguais à 0
MATLABMatrizes
�Manipulação de Matrizeso Seja:
Elemento a(3,3)
34Carlos Alexandre Mello – [email protected]
o a(3,3)=0 faz com que o elemento da 3a. linha e 3a.coluna seja igual a zero
Elemento a(3,3)
MATLABMatrizes
�Manipulação de Matrizeso a(:,3) lê todos (:) os
elementos da terceiracoluna de a
35Carlos Alexandre Mello – [email protected]
o a(3,:) lê todos oselementos da terceiralinha de a
MATLABVetores e Matrizes
�Vetores Lógicoso Construção de Vetores a partir de vetores lógicos
36Carlos Alexandre Mello – [email protected]
MATLABVetores e Matrizes
�Dimensão de Vetores e Matrizeso size(A)
� Retorna um vetor [n_linhas n_colunas]� Qualquer elemento do vetor pode ser acessado como um
vetor qualquer
37Carlos Alexandre Mello – [email protected]
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))
MATLABVetores e Matrizes
�Matrizes Especiaiso rand(m,n)
� Cria uma matriz mxn onde cada elemento é um númeroaleatório entre 0 e 1
38Carlos Alexandre Mello – [email protected]
� AX = B
MATLABResolvendo Equações Lineares
Vetores e Matrizes
ww ++ 22yy ++ zz == 3322ww --yy ++ 22zz == 11 AxAx == B,B, logologo:: xx == AA\\BB
yy ++ 33zz == 22
39Carlos Alexandre Mello – [email protected]
yy ++ 33zz == 22
-1
MATLABFunções Matriciais
� 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
-1
40Carlos Alexandre Mello – [email protected]
MATLABFunções Matriciais
� O inverso de uma matriz A é calculado com a funçãoinv(A)
� Também é possível calcular o determinante de umamatriz A mxn com a função det(A)
41Carlos Alexandre Mello – [email protected]
� Exemplo:A = [1 2 3; 4 5 6; 7 8 9];X = A^2 X = A*AZ = A.^2 Z = [a i j ^2]
MATLABPotências e Exponenciais
42Carlos Alexandre Mello – [email protected]
Z = A.^2 Z = [a i j ^2]Y = sqrtm(X) X^(1/2)Y = sqrt(X) X.^(1/2)
Polinômios
Carlos Alexandre Mello
43Carlos Alexandre Mello – [email protected]
Carlos Alexandre Mello
� MATLAB representa polinômios como matrizes linhacontendo os coeficientes ordenados de formadecrescente pela potência. Por exemplo, opolinômio
p(x) = x - 2x - 5é representado no MATLAB como:
MATLABPolinômios
3
44Carlos Alexandre Mello – [email protected]
é representado no MATLAB como:p = [1 0 -2 -5]
� >> r = roots(p)o Calcula as raízes do polinômio
� >> p2 = poly(r)o Retorna os coeficientes do polinômio dadas as suas raízes
Observe a presençado coeficiente de valor zero !!!
�polyval(p, n)o Resolve o polinômio para o valor n
�polyvalm(p,X)o Resolve o polinômio p para uma matriz Xo No caso, por exemplo:
MATLABPolinômios
45Carlos Alexandre Mello – [email protected]
o No caso, por exemplo:� p(X) = X^2 + 3*X + X*I� onde I é a matriz identidade
�Multiplicação e divisão polinomial corresponde àsoperações de convolução e deconvolução,implementadas pelas funções conv e deconv
�Exemplo: a(x)*b(x)
MATLABPolinômios
46Carlos Alexandre Mello – [email protected]
�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 deb - 1
MATLABConvolução e Deconvolução
Polinômios
�Exemplo: c(x)/a(x)
QuocienteQuociente
47Carlos Alexandre Mello – [email protected]
QuocienteQuociente
RestoResto
= b(x)= b(x)
�Não há função direta para o cálculo�Alguns cuidados devem ser tomados:
o A(x)= x3 + 3x +4o B(x)= 3x2 + 2x + 1
MATLABAdição de Polinômios
Polinômios
48Carlos Alexandre Mello – [email protected]
o B(x)= 3x2 + 2x + 1o C(x)=A(x)+B(x) = x3 + 3x2 + 5x + 5
�No MatLab:o A=[1 0 3 4]o B=[3 2 1]o C=A+B
MATLABAdição de Polinômios
Polinômios
ERRADO
49Carlos Alexandre Mello – [email protected]
o C=A+B
o B=[0 3 2 1]o C=A+B
ERRADO
CERTO
MATLABDerivativa Polinomial
Polinômios
�A função polyder calcula a derivada de qualquerpolinômioo Exemplo:
>> p = [1 0 -2 -5];
50Carlos Alexandre Mello – [email protected]
>> p = [1 0 -2 -5];>> q = polyder(p)>> q = 3 0 -2
�A função também calcula a derivada do produtode funções:
>> c = polyder(a, b)
MATLABDerivativa Polinomial
Polinômios
� A derivada da divisão de dois polinômios é calculadachamando polyder com 2 argumentos de saída
51Carlos Alexandre Mello – [email protected]
MATLABExpansão em Frações Parciais
Polinômios
�A função residue encontra a expansão emfrações parciais da razão de dois polinômios
�Exemplo:
52Carlos Alexandre Mello – [email protected]
-4 + 8s-1
1 + 6s-1 + 8s-2
r1
s - p1
= + + ... + + ksr2
s - p2
rn
s - pn
MATLABExpansão em Frações Parciais
Polinômios
� Exemplo (cont):
53Carlos Alexandre Mello – [email protected]
MATLABExpansão em Frações Parciais
Polinômios
� Exemplo (cont): Volta ao polinômio original
54Carlos Alexandre Mello – [email protected]
-4 + 8s
1 + 6s + 8s
-1
-1 -2
MATLABRepresentando Polinômios Graficamente
�Para traçar o gráfico de um polinômio, pode -seusar a função fplot:o fplot (‘função ou nome’, [início fim da plotagem])
55Carlos Alexandre Mello – [email protected]
� MATLAB representa funções matemáticas expressando-as em arquivos-M
� Por exemplo, considere a função:f(x)f(x)f(x)f(x) ==== 1111/(x/(x/(x/(x ++++ 2222))))
Essa função pode ser salva em um arquivo-
MATLABFunção de Funções
2
57Carlos Alexandre Mello – [email protected]
Essa função pode ser salva em um arquivo-M (nome.M) como:
functionfunctionfunctionfunction yyyy ==== nome(x)nome(x)nome(x)nome(x)
............
y=y=y=y=1111..../(x/(x/(x/(x....^̂̂̂2222 ++++ 2222))));;;;
............
Observeessespontos !!
MATLABFunção de Funções
�Quando definimos uma função dentro de umarquivo-M no MatLab, precisamos utilizar ooperador . (ponto) sempre que nos depararmoscom operações de *, /,\ e ^ que envolvam avariável de entrada
58Carlos Alexandre Mello – [email protected]
variável de entradao Como não há uma definição de tipos no MatLab, isso
diz a ele que trabalhe com qualquer tipo que seja avariável de entrada (número, matriz, vetor, etc).
�Isso não mudará em nada sua função !! É sóuma forma de trabalho do MatLab
MATLABEncontrando Zeros de Funções
Funções de Função
59Carlos Alexandre Mello – [email protected]
Acha o zero da função próximo ao ponto -0.2
� A área abaixo de uma seção de uma função F(x) podeser determinada pela integração numérica de F(x),processo chamado de quadratura
função descrição
MATLABIntegração Numérica
Funções de Função
60Carlos Alexandre Mello – [email protected]
função descriçãoquad regra de Simpson Adaptativaquad8 regra de Newton Cotes Adaptativa
� Por exemplo, para integrar a função definida no arquivode teste humps entre 0 e 1, usamos:
MATLABIntegração Numérica
Funções de Função
61Carlos Alexandre Mello – [email protected]
�Integração dupla: Função dblquado >> dblquad (‘filename’, xmin, xmax, ymin,ymax)
� Problemas com a função na atual versão do MatLab !!!
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
63Carlos Alexandre Mello – [email protected]
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)
65Carlos Alexandre Mello – [email protected]
� s = y,m,c,r,g,b,w,k (cores)� s = ., o, x, +, *, s, d, v, ^, <, >, p, h� s = -, :, -., --
Gráficos Bidimensionais
�Comando plot:o Estilos de linha, marcadores e cores: Exemplo:
� >> plot(x,y,’b:p’,x,z,’c-’, x,z,’m+’)
66Carlos Alexandre Mello – [email protected]
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
68Carlos Alexandre Mello – [email protected]
>> title (‘Curvas’); % Título do Gráfico
Gráficos Bidimensionais
�Manipulação de Gráficos>> x=linspace(0,2*pi,30);>> y=sin(x);>> z=cos(x);
70Carlos Alexandre Mello – [email protected]
>> z=cos(x);>> plot(x,y);>> hold on>> plot (x,z,’m ‘)>> hold off
Gráficos Bidimensionais
�subploto subplot(m,n,p) divide a janela de figura em uma
matriz mxn de pequenos eixos e seleciona o p-ésimoeixo para a atual plotagem
71Carlos Alexandre Mello – [email protected]
�Exemplo:
Gráficos Bidimensionais
� loglogo Equivalente ao comando plot, exceto pelo fato de
escalas logarítmicas serem usadas em ambos os eixos
�semilogx
73Carlos Alexandre Mello – [email protected]
o Equivalente ao comando plot, exceto pelo fato de umaescala logarítmica ser usada no eixo x
�semilogyo O mesmo para o eixo y
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)
74Carlos Alexandre Mello – [email protected]
o Cria gráficos de pizza� >> a=[.5 1 1.6 1.2 .8 2.1]� >> pie(a);
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
75Carlos Alexandre Mello – [email protected]
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’)
76Carlos Alexandre Mello – [email protected]
>> title(‘Hélice’), xlabel(‘sen(t)’),ylabel(‘cos(t)’),zlabel(‘t’)
Gráficos Tridimensionais
� Comando plot3: Gráficos de linha
77Carlos Alexandre Mello – [email protected]
Gráficos Tridimensionais
� Gráficos de Rede e de Superfícieo O MatLab define uma superfície de rede por meio de
coordenadas z dos pontos correspondentes a uma graderetangular no plano xy
o Ele forma o gráfico unindo os pontos adjacentes comlinhas e retas
78Carlos Alexandre Mello – [email protected]
linhas e retaso O resultado parece-se com uma rede de pesca com os nós
nos pontos correspondentes aos dadoso Gráficos em rede são úteis para visualização de matrizes
grandes ou para a representação gráfica de funções deduas variáveis
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 yo Esse par de matrizes pode ser usado para calcular funções
79Carlos Alexandre Mello – [email protected]
o Esse par de matrizes pode ser usado para calcular funçõesde duas variáveis usando os recursos de matemáticavetorial do MatLab
Gráficos Tridimensionais
� Função meshgrid
o Exemplo: Gerar pontos de dados uniformementeespaçados no plano xy entre -7,5 e 7,5
>> x=-7.5:.5:7.5;>> y=x;
80Carlos Alexandre Mello – [email protected]
>> y=x;>> [X,Y]=meshgrid(x,y);
o X e Y são um par de matrizes representando uma graderetangular de pontos no plano xy
o Qualquer função z=f(X,Y) pode ser gerada usando-se essespontos
Gráficos Tridimensionais
�Função meshgrid
o Exemplo:>> R=sqrt(X.^2+Y.^2);>> Z=sin(R)./R;>> mesh(X,Y,Z)
81Carlos Alexandre Mello – [email protected]
>> mesh(X,Y,Z)
Gráficos Tridimensionais
� Função surf
o Gera um gráfico de superfície da matriz Z, onde os espaçosentre as linhas (chamados de retalhos) são preenchidos.
>> surf(X,Y,Z)
82Carlos Alexandre Mello – [email protected]
Gráficos Tridimensionais
�Função peaks
o Gera uma matriz com valores baseados em umadistribuição Gaussiana
o Útil para demonstrar algumas características das
83Carlos Alexandre Mello – [email protected]
o Útil para demonstrar algumas características dasfunções mesh, surf, pcolor, contour
Gráficos Tridimensionais
�Função contouro 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);
84Carlos Alexandre Mello – [email protected]
>> contour(x,y,z,20);
Gráficos Tridimensionais
�Função contour3o 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);
85Carlos Alexandre Mello – [email protected]
>> contour3(x,y,z,20);
Gráficos Tridimensionais
�Função pcolor
o Mapeia a altura em um conjunto de cores eapresenta a mesma informação do gráfico decurvas de nível contour na mesma escala
86Carlos Alexandre Mello – [email protected]
>> [x,y,z]=peaks;>>pcolor(x,y,z)
Gráficos Tridimensionais
�Uma vez que pcolor e contour mostram amesma informação na mesma escala, pode serútil sobrepor os dois:
>> [x,y,z]=peaks;
88Carlos Alexandre Mello – [email protected]
>> [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
Gráficos Tridimensionais
�Manipulação de Gráficoso Função view
� Permite mudar o ângulo de observação de um gráfico� Uso: view(azimute, elev)
90Carlos Alexandre Mello – [email protected]
� padrão: azimute=-37.5 e elev=30
Gráficos Tridimensionais
�Exemplo de Animação:o Uso do comando For para gráficos
>> [x,y,z]=peaks;>> mesh(x,y,z)
92Carlos Alexandre Mello – [email protected]
>> for i=0:360view(i,30)pause(0.1);
end
Gráficos Tridimensionais
�Comando hidden
o Controla a remoção de linhas escondidaso Desativando-se o comando hidden você pode
olhar através da rede
93Carlos Alexandre Mello – [email protected]
olhar através da rede>> mesh(peaks(20)+7)>> hold on>> pcolor(peaks(20))>> hold off>> title(‘Rede com hidden ativado’)
Gráficos Tridimensionais
>> hidden off>> title(‘Rede com hidden desativado’);
95Carlos Alexandre Mello – [email protected]
Gráficos Tridimensionais
�Função surfl
o Desenha um gráfico e acrescenta contrastesluminosos a partir de uma fonte de luz
>> colormap(gray); % Define as cores usadas
96Carlos Alexandre Mello – [email protected]
>> surfl(peaks), shading interp;
Gráficos Tridimensionais
�colormap:� hsv, hot, gray, bone, copper, pink, white, flag, jet, prism,
cool, lines, colorcube, summer, autumn, winter, spring
99Carlos Alexandre Mello – [email protected]
Gráficos Tridimensionais
�Gráficos Tridimensionais de Funções>> a=-10:.5:10;>> b=a;>> [X,Y]=meshgrid(a,b);>> Z= (X.^2).*Y;
100Carlos Alexandre Mello – [email protected]
>> Z= (X.^2).*Y;>> mesh(X,Y,Z)
Gráficos Tridimensionais
>> colormap(gray);>> surfl(Z)
102Carlos Alexandre Mello – [email protected]
Gráficos Tridimensionais
>> colormap(gray);>> surfl(Z);>> shading interp;
103Carlos Alexandre Mello – [email protected]
Programação no MatLabArquivos-M de Comandos
Carlos Alexandre Mello
104Carlos Alexandre Mello – [email protected]
Carlos Alexandre Mello
MATLABProgramação
�No MatLab, os programas são escritos emarquivos de texto denominados Arquivos-M
o Arquivos-M: arquivos que contêm código do MatLab.Podem ser:
105Carlos Alexandre Mello – [email protected]
Podem ser:� Funções� Scripts (Arquivos-M de comandos)
�Como são arquivos de texto podem ser criadosusando editores de texto comum
MATLABProgramação
�Os Arquivos-M são interpretados pelo MatLabpara a execução de seus comandos
�Assim, para serem executados, os arquivos-Mnecessitam do MatLab não podendo operar
106Carlos Alexandre Mello – [email protected]
necessitam do MatLab não podendo operarisoladamente
�Diferente de outras linguagens como, C ouPascal, onde seus programas são compilados
MATLABProgramação
�Interpretaçãoo Vantagem
� Código aberto� Fácil de ser estudado
107Carlos Alexandre Mello – [email protected]
o Desvantagem� Necessidade do “Programa-Pai”
MATLABProgramação
�Arquivos-Mo Para problemas simples, é mais fácil introduzir os
comandos no prompt do MatLabo No entanto, se o número de comandos é grande, ou
108Carlos Alexandre Mello – [email protected]
o No entanto, se o número de comandos é grande, ouse você deseja mudar o valor de uma ou maisvariáveis e re-executar alguns comandos, podetornar-se tedioso introduzir os comandos no prompt
o Solução:� Introduzir os comandos em um arquivo texto chamado
Arquivo-M
MATLABProgramação
�� NãoNão aceitamaceitam argumentosargumentos dedeentradaentrada
�� ÚtilÚtil parapara automatizarautomatizar passospassos
�� AceitamAceitam argumentosargumentos dedeentradaentrada
�� ÚtilÚtil parapara expandirexpandir oo MATLABMATLAB
Arquivos-M de Comando: Funções:
109Carlos Alexandre Mello – [email protected]
�� ÚtilÚtil parapara automatizarautomatizar passospassosqueque sejamsejam executadosexecutados muitasmuitasvezesvezes
�� ÚtilÚtil parapara expandirexpandir oo MATLABMATLABparapara suassuas aplicaçõesaplicações
�Qualquer editor de textos�Através do próprio MatLab:
o comando edit
� edit filename
MATLABCriação de um Arquivo-M
Programação
110Carlos Alexandre Mello – [email protected]
� edit filename
� edit
�Vantagens do uso do editor do MatLabo Variação nas coreso Possibilidade de uso do Debbuger
MATLABCriação de um Arquivo-M
Programação
111Carlos Alexandre Mello – [email protected]
�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
MATLABArquivos-M de Comandos
Programação
112Carlos Alexandre Mello – [email protected]
�Quaisquer variáveis criadas pelo scriptpermanecem no workspace e podem ser usadasquando o script termina
�Edita um arquivo tipo M (editor de textoqualquer)
�Insere comandos e variáveis�Executa a partir do MatLab, bastando, para
MATLABCriação de Arquivos-M de Comandos
Programação
113Carlos Alexandre Mello – [email protected]
�Executa a partir do MatLab, bastando, paraisso, digitar o nome do arquivo na linha decomando
�Exemplo de Script:% Exemplo de um script% Soma de dois númerosa = input (‘Entre com o primeiro número: ’);b = input (‘Entre com o segundo número: ’);
MATLABCriação de Arquivos-M de Comandos
Programação
114Carlos Alexandre Mello – [email protected]
b = input (‘Entre com o segundo número: ’);soma = a + b
Saída do Script
MATLABProgramação
�Em virtude da grande utilidade dos arquivos decomandos e funções, o MatLab possui diversasfunções que são particularmente apropriadaspara o uso em arquivos-M
115Carlos Alexandre Mello – [email protected]
para o uso em arquivos-M�Essas funções também podem ser utilizadas no
prompt do MatLab�Veremos a seguir algumas dessas
MATLABProgramação
�disp(x)o Apresenta algum resultado na tela do MatLabo Exemplo 1:
� >> x= 2;
116Carlos Alexandre Mello – [email protected]
� >> x= 2;� >> disp(x);� 2
o Exemplo 2:� >> disp(‘x’);� x
MATLABProgramação
�disp(x)o Exemplo 3:
� >> disp(‘Este é o MatLab’);� Este é o MatLab
117Carlos Alexandre Mello – [email protected]
o Exemplo 4:� >> x = 2; y = 4;� >> disp(‘x+y’);� x+y� >> disp(x+y)� 6
Observe a diferença entreas duas formas no uso doapóstrofo !!!!!!
MATLABProgramação
� inputo Solicita ao usuário algum dado de entradao Exemplo 1:
� >> x = input(‘Qual o valor de X: ’)
118Carlos Alexandre Mello – [email protected]
� >> x = input(‘Qual o valor de X: ’)� Qual o valor de X: 2� x = 2
• O valor 2 será atribuído à variável x
MATLABProgramação
�pauseo Suspende a execução de um programa até que
alguma tecla seja pressionada
�pause(n)
119Carlos Alexandre Mello – [email protected]
�pause(n)o Suspende a execução por n segundos
MATLABProgramação
� Exemplo de Script:o Faça um Script que calcule as raízes de um polinômio do
segundo graua=input(‘Entre com o primeiro coeficiente :’);b=input(‘Entre com o segundo coeficiente :’);
120Carlos Alexandre Mello – [email protected]
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 atualo Para executá-lo, basta digitar baskhara na workspace do
MatLab
Operações Relacionais e Lógicas
Carlos Alexandre Mello
121Carlos Alexandre Mello – [email protected]
Carlos Alexandre Mello
MATLABOperações Relacionais e Lógicas
�Operadores Relacionaiso < Menor queo > Maior queo <= Menor ou igual a
122Carlos Alexandre Mello – [email protected]
o <= Menor ou igual ao >= Maior ou igual ao = Igual ao == Igual a?o ~= Diferente de
MATLABOperações Relacionais e Lógicas
�Diferença entre = e ==o = : Afirmação (atribuição de um valor)
� A = 2• A é igual a 2
123Carlos Alexandre Mello – [email protected]
• É 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)
MATLABOperadores Lógicos
�Combinam ou negam operações relacionaiso & Eo | OUo ~ Não
125Carlos Alexandre Mello – [email protected]
o ~ Não
MATLABFunções de Verificação
� ischar(S)o V se a entrada é um vetor de caracteres
126Carlos Alexandre Mello – [email protected]
o Cuidado!!!
�for�if...elseif...else�while�switch....case
MATLABControle de Fluxo
Programação
127Carlos Alexandre Mello – [email protected]
�switch....case
MATLABControle de Fluxo
Programação
�Laços foro Possibilitam que uma série de comandos seja
repetida por um número de vezes fixo e pré-definido
�Uso:
128Carlos Alexandre Mello – [email protected]
�Uso:for índice = começo:incremento:fim
comandosend
�Se o incremento não for escrito, o MatLabconsidera 1
MATLABControle de Fluxo
Programação
�Laços foro Para criar um laço decremental deve-se colocar o
incremento igual a -1� for i = 5:-1:1
129Carlos Alexandre Mello – [email protected]
o Sem esse incremento, o laço não funcionará !!� for i=5:1
Erro !!!
MATLABControle de Fluxo
Programação
�Laços foro Exemplo:
for i = 1:5disp(i)
130Carlos Alexandre Mello – [email protected]
end
o Resultado:� 1 2 3 4 5
MATLABControle de Fluxo
Programação
�Laços foro Exemplo: Criação de um vetor
i varia de 1 a 5 noíndice do vetor a e nos seus valores
131Carlos Alexandre Mello – [email protected]
e nos seus valores
MATLABControle de Fluxo
Programação
�Laços foro Exemplo: Laço em ordem decrescente
i varia de 5 a 1
132Carlos Alexandre Mello – [email protected]
MATLABControle de Fluxo
Programação
�Laços foro Exemplo: Variação no passo
i varia de 1 a 10de 2 em 2
133Carlos Alexandre Mello – [email protected]
de 2 em 2
MATLABControle de Fluxo
Programação
�Laços foro Exemplo: Erro
Não foi definido
134Carlos Alexandre Mello – [email protected]
Não foi definidoo passo !!!
MATLABControle de Fluxo
Programação
�Dentro de um laço for podem vir quaisquercomandos do MatLab, inclusive outros laços
for i=1:10for j=1:5
135Carlos Alexandre Mello – [email protected]
.....end
end
MATLABControle de Fluxo
Programação
�Cuidados com os laços encadeados !!!o Observe a diferença no 2 programas a seguir:
136Carlos Alexandre Mello – [email protected]
o Qual o resultado da execução dos dois programas noMatLab ??
MATLABControle de Fluxo
Programação
�Cálculo da soma de um conjunto de NelementosSeja A um conjunto com N valores positivos ou negativos1) soma = 02) Para todos os elementos de A, calcule
soma = soma + elemento_de_A
137Carlos Alexandre Mello – [email protected]
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 ??
MATLABControle de Fluxo
Programação
Pseudo-código não-implementável !!!Ainda não definimos como entrar com a
138Carlos Alexandre Mello – [email protected]
como entrar com a variável a
Variável inicializada com 0.Poderia ser qualquer valor.
MATLABControle de Fluxo
Programação
�Vetorização de Laçoso Exemplo:
i = 0;for t = 0:0.01:10
i = i+1;
139Carlos Alexandre Mello – [email protected]
i = i+1;y(i) = sin(t);
end
Versão Vetorizada do código acimat = 0:0.01:10;y = sin(t);
MATLABControle de Fluxo
Programação
� if-elseo Execução de uma seqüência de comandos
condicionalmente com base em um teste relacional
�Uso:
140Carlos Alexandre Mello – [email protected]
�Uso:if condição
comandoselse
comandosend
Se Se condiçãocondição
comandoscomandosSenãoSenão
comandoscomandosfimfim
MATLABControle de Fluxo
Programação
� if-elseo Observações:
� Não há obrigação do uso do else
� Os comandos após o if serão executados se a condição forverdadeira
141Carlos Alexandre Mello – [email protected]
verdadeira� Se a condição envolve muitas subexpressões lógicas, todas
são executadas mesmo que uma das primeirassubexpressões já seja suficiente para determinar o valorlógico da condição
• Uso de operadores lógicos
MATLABControle de Fluxo
Programação
� if-else-elseifif condição1
comandoselseif condição2
Se Se condição1condição1
comandoscomandosSenão Se Senão Se condição2condição2
142Carlos Alexandre Mello – [email protected]
elseif condição2comandos
elsecomandos
end
Senão Se Senão Se condição2condição2
comandoscomandosSenãoSenão
comandoscomandosfimfim
MATLABControle de Fluxo
Programação
� Exemplo: Resolução de Equações do segundo grau
143Carlos Alexandre Mello – [email protected]
MATLABControle de Fluxo
Programação
� Exemplo: Jogo da Adivinhação
144Carlos Alexandre Mello – [email protected]
MATLABControle de Fluxo
Programação
�Laço whileo Ao contrário do laço for que executa um grupo de
comandos um número fixo de vezes, o while executaum grupo de instruções um número indefinido devezes
145Carlos Alexandre Mello – [email protected]
vezes
MATLABControle de Fluxo
Programação
�Whileo Uso:
while expressãocomandos
end
Enquanto Enquanto expressãoexpressão
comandoscomandosfimfim
146Carlos Alexandre Mello – [email protected]
� Enquanto a expressão for verdadeira, os comandosserão executados
� Pode-se usar o comando break para sair do laço
MATLABControle de Fluxo
Programação
�Exemplo: Considere os 2 programas:
Nesse caso,total sai com
147Carlos Alexandre Mello – [email protected]
Aqui, total sai do whilecom valor de 110 já que,quando total for igual a100 ele ainda entrará no laço e será somado com10
total sai comvalor 100 dolaço
MATLABControle de Fluxo
Programação
�Exemplo: Checagem de cartão de créditoo O programa a seguir verifica se uma pessoa entrou
com um número ao ser requisitado o número de seucartão de crédito
148Carlos Alexandre Mello – [email protected]
MATLABControle de Fluxo
Programação
�Exemplo: Laço interminável
�Provocando um fim no laço....
149Carlos Alexandre Mello – [email protected]
�Provocando um fim no laço....
Uma contagem éUma contagem éfeita e, caso o feita e, caso o contador atinja ocontador atinja ovalor de 20, o laçovalor de 20, o laçoé quebradoé quebrado
MATLABControle de Fluxo
Programação
�Estrutura switch-caseo Usada quando seqüências de comandos devem ser
condicionalmente executadas baseadas no usorepetido de um teste de igualdade com umargumento comum
150Carlos Alexandre Mello – [email protected]
argumento comum
�switchswitch expressão
case valor1comandos
case valor2
MATLABControle de Fluxo
Programação
Verifique expressãoVerifique expressãocaso valor1caso valor1
comandoscomandoscaso valor2caso valor2
151Carlos Alexandre Mello – [email protected]
case valor2comandos
.....otherwise
comandosend
caso valor2caso valor2comandoscomandos
........caso contráriocaso contrário
comandoscomandosfimfim
�switch - Observaçãoo Para programadores de C:
� NÃO USA BREAK !!!!
� Não tem “:”
MATLABControle de Fluxo
Programação
152Carlos Alexandre Mello – [email protected]
�switcho Exemplo:
switch input_numcase -1
disp(‘negativo’);case 0
MATLABControle de Fluxo
Programação
153Carlos Alexandre Mello – [email protected]
disp(‘negativo’);case 0
disp(‘zero’);case 1
disp(‘positivo’);otherwise
disp(‘outro valor’);end
�Exemplo: Calculadorade 4 operações
MATLABControle de Fluxo
Programação
154Carlos Alexandre Mello – [email protected]
Por que a definição dePor que a definição dez=nan ? O que acontecez=nan ? O que acontecese retirarmos essa linha ?se retirarmos essa linha ?
Programação no MatLabFunções
Carlos Alexandre Mello
155Carlos Alexandre Mello – [email protected]
Carlos Alexandre Mello
�Aceitam argumentos de entrada e retornamargumentos de saída
�Operam com variáveis próprias fora doworkspace do MatLab
MATLABFunções
156Carlos Alexandre Mello – [email protected]
workspace do MatLab�Exemplo de Função:
function y = average(x)% Average Mean of Vector elementsy = sum(x)/length(x);
�Regras e Propriedadeso O nome da função deve ser idêntico ao nome do
arquivoo As linhas de comentário de um arquivo que
MATLABFunções
157Carlos Alexandre Mello – [email protected]
o As linhas de comentário de um arquivo queantecedem a primeira linha que não contémcomentários constituem o texto que éapresentado como help da função
�Regras e Propriedadeso 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
MATLABFunções
158Carlos Alexandre Mello – [email protected]
valor 10 e este mesmo nome de variável é utilizadodentro de uma função, assumindo o valor 20 (porexemplo), ao executarmos a função, A será igual a 20apenas dentro da função. Na workspace, A continuasendo igual a 10
�Funções nargin e nargout determinam o númerode argumentos de entrada e saída de umafunção
function c = testarg1(a,b)if (nargin == 1)
MATLABChecando o Número de Argumentos
Funções
159Carlos Alexandre Mello – [email protected]
if (nargin == 1)c = a.^2;
elseif (nargin == 2)c = a + b;
end�nargout pode ser usado em funções que
apresentam respostas diferentes dependendodo número de saídas (como polyder(a,b))
function f = fat(n)% FAT Fatorial
MATLABEstrutura de uma Função
Funções
Linha de definição da função
Comentário
Nome que deve ser usadono arquivo-M
160Carlos Alexandre Mello – [email protected]
f = prod(1:n);Corpo da função
Arquivo-M
MATLABAnatomia 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
161Carlos Alexandre Mello – [email protected]
�Corpo da função�Comentários
�Uma linha de definição da funçãoo Essa linha informa ao MatLab que o arquivo contém
uma função e especifica os argumentos da função� function y = average(x)
MATLABAnatomia de uma Função
Funções
162Carlos Alexandre Mello – [email protected]
Argumento(s) de EntradaNome da Função (o arquivo deveser salvo com este nome !!!!)Argumento (s) de SaídaKeyword
�Uma linha H1o Primeira linha de ajuda do texto é uma linha
comentada seguindo imediatamente a linha dedefinição da função
MATLABAnatomia de uma Função
Funções
163Carlos Alexandre Mello – [email protected]
� % AVERAGE Média de um vetor
Símbolo de Comentário
�Texto de ajuda da funçãoo Texto de ajuda com uma ou mais linhas comentadas
para facilitar o uso da funçãoo Mesma estrutura da linha H1
MATLABAnatomia de uma Função
Funções
164Carlos Alexandre Mello – [email protected]
o Mesma estrutura da linha H1� Linhas precedidas de %
� Corpo da funçãoo 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)
MATLABAnatomia de uma Função
Funções
165Carlos Alexandre Mello – [email protected]
� Construções de Programação (if...else, etc)� Cálculos� Comentários� ....
� Comentárioso Podem aparecer em qualquer parte do arquivo sempre
precedidos pelo símbolo %
�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”
MATLABNomes das Funções
Funções
166Carlos Alexandre Mello – [email protected]
�Nome do arquivo terminado por “.m”filename.m
� Removendo uma Função da Memóriao 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
MATLABFunções de Gerenciamento de Memória
167Carlos Alexandre Mello – [email protected]
� Todas as funções são explicitamente apagadas com ocomando clear functions
� MATLAB sai da memória
� Para Conservar Memóriao 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
MATLABFunções de Gerenciamento de Memória
168Carlos Alexandre Mello – [email protected]
o Use a função clear ou clear nome_da_variável sempreque possível
o Re-use variáveis o máximo possível
�Arquivos-M de funções podem conter mais deuma função (chamadas subfunções)
�Observe que apenas a função primária (a qualgerou o nome do arquivo-M) pode ser
MATLABSubfunções
169Carlos Alexandre Mello – [email protected]
gerou o nome do arquivo-M) pode serexecutada do MatLab
�As outras funções são chamadas de dentro dafunção primária apenas
MATLABSubfunções
function y = teste(a).....
function x = teste2(b).....
Função Primária
Subfunção
170Carlos Alexandre Mello – [email protected]
.....
function z = teste3(c).....
Subfunção
Arquivo teste.m
MATLABSubfunções
�A função teste é executada de dentro doMatLab e chama as subfunções teste2 e teste3
�Se tentarmos executar externamente teste2 outeste3, um erro será gerado, pois apenas o
171Carlos Alexandre Mello – [email protected]
teste3, um erro será gerado, pois apenas oarquivo teste.m existe
�Ao ser chamada, a função permanece namemória até que o comando clear seja dado:
� clear function_name
• remove uma função específica do workspace
� clear functions
MATLABFunções
172Carlos Alexandre Mello – [email protected]
� clear functions
• remove todas as funções
� clear all
• remove funções e variáveis
MATLABFunções
�Exemplos de Funções:o Função que calcula as raízes de um polinômio de
grau menor ou igual a doiso Caso I:
173Carlos Alexandre Mello – [email protected]
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 umvetor
� Função baskhara1.m� Observação: Não foi considerada a possibilidade do usuário
atribuir ZERO aos três coeficientes
MATLABFunções
�Função que calcula as raízes de um polinômiode grau menor ou igual a doiso Caso II:
� Os coeficientes do polinômio são passados como
175Carlos Alexandre Mello – [email protected]
� Os coeficientes do polinômio são passados comoargumentos 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
MATLABFunções
�Função que calcula as raízes de um polinômiode grau menor ou igual a doiso Caso III:
� Os coeficientes do polinômio são passados como
177Carlos Alexandre Mello – [email protected]
� Os coeficientes do polinômio são passados comoargumentos para a função dentro de um vetor
� Ou seja, a função tem uma entrada (X) na forma de umvetor e uma saída (Y) que pode ser um número apenas ouum vetor
� Função baskhara3.m
MATLABFunções
�Função que calcula as raízes de um polinômiode grau menor ou igual a doiso Caso IV:
� Os coeficientes do polinômio são passados como
179Carlos Alexandre Mello – [email protected]
� Os coeficientes do polinômio são passados comoargumentos 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
Simulink
Carlos Alexandre Mello
181Carlos Alexandre Mello – [email protected]
Carlos Alexandre Mello
Simulink
�Módulo para análise de modelos e construçãode funções
�Para executá-lo, digiteo >> simulink
182Carlos Alexandre Mello – [email protected]
o >> simulink
�dentro do MatLab
Simulink
Área de Projeto
Tela de Entrada
183Carlos Alexandre Mello – [email protected]
Área de Projeto
Ferramentas
Simulink
� Para criar um sistema, basta arrastar um bloco dasferramentas para a área de projeto
� As conexões entre os blocos são feitas através dasentradas (>) e saídas (>) de cada blocoAs conexões podem ser marcadas (clicando com o
184Carlos Alexandre Mello – [email protected]
� As conexões podem ser marcadas (clicando com omouse) e deletadas (com del)
Simulink
�Exemplo 1: A simulação anterior deve serexecutadao Simulation -> Start
�Ao terminar, o resultado pode ser visto no
193Carlos Alexandre Mello – [email protected]
�Ao terminar, o resultado pode ser visto noosciloscópio, clicando duas vezes nele
Simulink
�Exemplo 2: A saída do sistema pode seralterada para um novo formato:
195Carlos Alexandre Mello – [email protected]
Simulink
�Exemplo 2: Após a execução do sistema, oresultado é apresentado
196Carlos Alexandre Mello – [email protected]
Simulink
� Clicando duas vezes em um bloco, abre-se umajanela com as opções que podem ser alteradas dobloco:
198Carlos Alexandre Mello – [email protected]
Simulink
� Um mesmo bloco pode assumir diferentes funções:
199Carlos Alexandre Mello – [email protected]
Simulink
� As propriedades de um bloco podem alterar suaspróprias funções, como um somador, por exemplo
200Carlos Alexandre Mello – [email protected]
Simulink
� Ao ser clicado duas vezes, suas propriedadespermitem que o bloco tenha suas funções alteradas, incluindo o número de entradas
201Carlos Alexandre Mello – [email protected]
Simulink
� Exemplo 4: Motor c.c. controlado por armadura(retirado do livro Engenharia de Controle Moderno,Ogata, pg 110)
203Carlos Alexandre Mello – [email protected]
Simulink
� Exemplo 4: No Simulink, para R=L=J=f=K=Kb=1, temos :
205Carlos Alexandre Mello – [email protected]
Simulink
� Exemplo 4: Ao ser inicializado, a resposta do osciloscópio serámostrada como abaixo:
206Carlos Alexandre Mello – [email protected]
Simulink
� Exemplo 5: Eletrônica Digital: Ou-Exclusivo realizado com portasE, Não e Ouo Diagrama:
207Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Os sistemas contínuos e discretos podem serdescritos na forma de uma função detransferência de zeros e pólos
�As funções de transferência são descritas por
209Carlos Alexandre Mello – [email protected]
�As funções de transferência são descritas porrazões de polinômios o que é facilmente tratadono MatLab através de vetores com oscoeficientes dos polinômios
MatLabSistemas de Controle
Carlos Alexandre Mello
210Carlos Alexandre Mello – [email protected]
Carlos Alexandre Mello
ToolBox de Sistemas de Controle
�Os sistemas LTI (linear time-invariant) podemser especificados através de modelos defunções de transferência, modelos dezero/pólo/ganho e modelos de estado-espaço
211Carlos Alexandre Mello – [email protected]
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
ToolBox de Sistemas de Controle
�No MatLab:o sys = tf(num, den) % função de transferênciao sys = zpk(z,p,k) % zero/pólo/ganhoo sys = ss(a,b,c,d) % espaço-estado
212Carlos Alexandre Mello – [email protected]
o sys = ss(a,b,c,d) % espaço-estado
�Para criar modelos discretos no tempo,acrescenta-se o período de amostragem Ts àsfunções acimao sys = tf(num, den, Ts)
ToolBox de Sistemas de Controle
�Exemplos:o h = tf(1,[1 1])
�cria a função de transferência 1/(s + 1)
213Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Exemplos:o h = tf([1 2],[1 1 10]);
�cria a função de transferência
214Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Exemplos: Outra variação....
216Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Você pode usar o comando tf com apenas umargumento para especificar ganhos simples oumatrizes de ganho
217Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Sistemas com múltiplas entradas e múltiplassaídas (função de transf):
218Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Sistemas com múltiplas entradas e múltiplassaídas (outra forma):
219Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Operações em Modelos LTIo Adição (Sistemas em Paralelo)
220Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Operações em Modelos LTIo Adição
221Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
o Adição (Cuidados !!)Tempo de amostragemindefinido
222Carlos Alexandre Mello – [email protected]
Tempos de amostragemidênticos
Tempos de amostragemdiferentes! ERRO!!!
ToolBox de Sistemas de Controle
�Operações em Modelos LTIo Multiplicação (Sistemas em Série)
223Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Operações em Modelos LTIo Multiplicação
224Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Conexões entre Sistemaso Sejam os sistemas:
225Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Modelo zero/pólo/ganho�Modelos SISO (Simple Input, Simple Output)
zero pólo ganho
229Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
� Modelos MIMO (Multiple Input, Multiple Output)
230Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
� Os comandos anteriores criam o modelo de zero-pólo-ganho de duas entradas e duas saídas:
231Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Sistemas com múltiplas entradas e múltiplassaídas (modelo de zero/pólo/ganho):
232Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Modelo zero/pólo/ganho�Exemplo de um modelo discreto no tempo:
233Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Modelos Estado-Espaçoo Lidam com equações diferenciais para descrever
sistemas dinâmicos
234Carlos Alexandre Mello – [email protected]
o onde x é o vetor de estado e u e y são os vetores deentrada e saída
ToolBox de Sistemas de Controle
�Modelos Estado-Espaçoo No MatLab, usa-se o comando
� sys = ss(A,B,C,D)
o para um modelo com Nx estados, Ny saídas e Nu
235Carlos Alexandre Mello – [email protected]
o para um modelo com Nx estados, Ny saídas e Nuentradas� A é uma matriz Nx por Nx� B é uma matriz Nx por Nu� C é uma matriz Ny por Nx� D é uma matriz Ny por Nu
ToolBox de Sistemas de Controle
�Modelos Estado-Espaço�Exemplo:
o Considere o seguinte modelo de um motor:
236Carlos Alexandre Mello – [email protected]
o onde teta é o deslocamento angular do motor e I é acorrente
ToolBox de Sistemas de Controle
�Exemplo (cont.):o A relação entre a corrente de entrada u=I e a
velocidade angular é descrita pelaequação de estado-espaço:
237Carlos Alexandre Mello – [email protected]
� dx/dt = Ax + Bu� y = Cx
o onde
ToolBox de Sistemas de Controle
�Exemplo (cont.):o No MatLab, o modelo é especificado como:
A B C D
238Carlos Alexandre Mello – [email protected]
A B C D
ToolBox de Sistemas de Controle
�Exemplo (cont.):o Tendo comoresposta:
239Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Modelo de Estado-Espaçoo drss(N)
� Cria um modelo aleatório discreto de estado-espaço de N-ésima ordem
� Exemplo:
240Carlos Alexandre Mello – [email protected]
� Exemplo:• >> drss(2)• >> drss(3)• ....
ToolBox de Sistemas de Controle
�filto Especificação de funções de transferência discretas
242Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Resposta no Tempo e na Freqüência
244Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Resposta no Tempo e na Freqüência
245Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Para sobrepor e comparar as respostas devários sistemas LTI, basta escrever:o >> bode (sys1,sys2,sys3,....)o Exemplo:
247Carlos Alexandre Mello – [email protected]
o Exemplo:
o ou bode (sys1, ‘r’, sys2, ‘b’)� Definindo a cor de cada gráfico
ToolBox de Sistemas de Controle
�LTI Viewer (Visualizador)o Interface gráfica para visualização e manipulação de
gráficos de modelos LTIo Uso:
249Carlos Alexandre Mello – [email protected]
o Uso:� ltiview(tipo_de_grafico, sys1,sys2,..)� Tipo de Grafico: step, impulse, initial, lsim, pzmap, bode,
nyquist, nichols, sigma
ToolBox de Sistemas de Controle
�Exemplo: Para o sistema definido por sys:
250Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
� Clicando sobre o gráfico na janela....
251Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
� Destacando um gráfico....
252Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
� Mudando o tipo de gráfico....
253Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Recuperação de Dadoso As funções tf, zpk, ss e frd empacotam os dados e
tempo de amostragem em um único objetoo É possível fazer o processo inverso e recuperar os
256Carlos Alexandre Mello – [email protected]
o É possível fazer o processo inverso e recuperar osdados que geraram um objeto:� [num, den, ts] = tfdata(sys)� [z,p,k,ts] = zpkdata(sys)� [a,b,c,d]=ssdata(sys)
ToolBox de Sistemas de Controle
�Recuperação de Dadoso Exemplo:
257Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Recuperação de Dadoso Exemplo:(cont)
258Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Recuperação de Dadoso Exemplo (cont): Para acessar os dados...
259Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Recuperação de Dadoso Exemplo (cont): O mesmo pode ser conseguido
com...
260Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Conversão de Modeloso sys = tf(sys) % Conversão para TFo sys = zpk(sys) % Conversão para ZPKo sys = ss(sys) % Conversão para Estado-
261Carlos Alexandre Mello – [email protected]
o sys = ss(sys) % Conversão para Estado-Espaço
ToolBox de Sistemas de Controle
�Conversão de Modeloso Exemplo:
262Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Conversão de Modeloso Exemplo:
Converte de TF para ZPK
263Carlos Alexandre Mello – [email protected]
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
264Carlos Alexandre Mello – [email protected]
o Pode haver perda por arredondamento de algunsvalores, principalmente na conversão para TF
ToolBox de Sistemas de Controle
�Conversão AD/DA
Conversão Contínuo-Discreto
265Carlos Alexandre Mello – [email protected]
Conversão Contínuo-Discretocom período de amostragemde 0.1
ToolBox de Sistemas de Controle
�Conversão AD/DA
Conversão Discreto-Contínuo
266Carlos Alexandre Mello – [email protected]
Conversão Discreto-Contínuo
Igual a sys1!!
ToolBox de Sistemas de Controle
�Criando blocos no Simulink
267Carlos Alexandre Mello – [email protected]
21
ToolBox de Sistemas de Controle
�Clicando duas vezes em ltiblock...
268Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Discretização de Sistemas
Função c2d:Contínuo paraDiscreto
269Carlos Alexandre Mello – [email protected]
Discreto
Plotagem
ToolBox de Sistemas de Controle
�Discretização de Sistemas
270Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Discretização de Sistemaso Cuidados com a taxa de amostragem...
271Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Discretização de Sistemas
Baixa taxa de
272Carlos Alexandre Mello – [email protected]
Baixa taxa de Amostragem !
ToolBox de Sistemas de Controle
�Ferramentas para Análise de Modeloso Suponha o seguinte sistema:
273Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Ferramentas para Análise de Modelos:�Comando class
o Fornece o tipo do modelo� >> class(H)
274Carlos Alexandre Mello – [email protected]
� >> 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).
ToolBox de Sistemas de Controle
�Ferramentas para Análise de Modelos:�Comando size
� >> [ny, nu] = size(H)� ny = 1 % número de saídas
275Carlos Alexandre Mello – [email protected]
� ny = 1 % número de saídas� nu = 2 % número de entradas
ToolBox de Sistemas de Controle
�Ferramentas para Análise de Modelos:�Comandos Lógicos:
o isempty (H)� Verdadeiro se o modelo está vazio
276Carlos Alexandre Mello – [email protected]
� Verdadeiro se o modelo está vazio
o isct (H)� Verdadeiro se o modelo é contínuo
o isdt (H)� Verdadeiro se o modelo é discreto
ToolBox de Sistemas de Controle
�Ferramentas para Análise de Modelos:
277Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
� Respostas no Tempoo >> step(H)
279Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
�Respostas no Tempoo Simula de 0 a 10 segundos
� >> step(H,10)
o Amostras espaçadas de 0.01 segundo
280Carlos Alexandre Mello – [email protected]
o Amostras espaçadas de 0.01 segundo� >> t=0:0.01:10� >> step(H, t)
ToolBox de Sistemas de Controle
� Respostas no Tempoo >> impulse(H)
281Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
� Resposta em Freqüênciao Diagrama de Bode: bode(H)
282Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
� Resposta em Freqüênciao Diagrama de Bode em escala logarítmica:
283Carlos Alexandre Mello – [email protected]
ToolBox de Sistemas de Controle
� Resposta em Freqüênciao Diagrama de Nyquist: >> nyquist(H)
284Carlos Alexandre Mello – [email protected]
Top Related