minicurso matlab ivsee 2013 uerj
Post on 14-Jun-2015
3.385 Views
Preview:
DESCRIPTION
TRANSCRIPT
Mini-curso de MATLAB IV Semana de Engenharia Elétrica
Professores: Téo Revoredo – teorevoredo@uerj.br Michel Tcheou – mtcheou@uerj.br
Referência Bibliográfica
n Stephen J. Chapman, “Programação em MATLAB para Engenheiros”, 2 edição, Cengage Learning.
n www.mathworks.com
2
Sumário
n Introdução n Matlab Básico n Programação em Matlab n Matemática Simbólica n Interfaces gráficas e Toolbox n Simulink
3
Introdução
n MATLAB é acrônimo de MATrix LABoratory n Foi desenvolvido inicialmente na década de
70 nas Universidades do Novo México e Stanford.
n Destinado a princípio a cursos de teoria matricial, álgebra linear e análise numérica.
n Voltado basicamente para matemática numérica.
4
Introdução
n Hoje, é um ambiente de programação de alto nível para aplicações Científicas e de Engenharia.
n Facilidades n Oferece um amplo leque de bibliotecas de
funções pré-definidas. n Muito amigável em funcionalidades
gráficas para Visualização de Dados.
5
Introdução
n Hoje, é um ambiente de programação de alto nível para aplicações Científicas e de Engenharia.
n Facilidades n Amplamente divulgado em Universidades
e laboratórios de pesquisa. n Conveniente para o desenvolvimento de
protótipos.
6
Introdução
n Vantagens n Facilidade de Uso n Independência de Plataforma n Funções Predefinidas n Interface Gráfica de Usuário n Compilador MATLAB
n Desvantagens n Linguagem Interpretada n Custo
7
Introdução
n O que mais? n Lógica fuzzy n Redes Neurais n Processamento de
sinais n Aquisição de dados n Banco de Dados n Finanças
n Mapas n Controle Robusto n Animação n Simulação de
sistemas dinâmicos (Simulink)
n Etc
8
Introdução
n Tela principal
9
Introdução
n Tela principal
10
Introdução
n Informações do sistema n computer – Tipo de computador onde
o MATLAB está operando n version – Versão do MATLAB n ver – Detalhes da versão do MATLAB e
dos toolboxes n license – Apresenta a licença do
produto
11
MATLAB BÁSICO
12
Sumário – Matlab Básico
n Números e formatos n Variáveis e funções n Vetores n Matrizes n Operações n Gráficos
13
Números e formatos
n O MATLAB reconhece vários tipos de números: n Integer (Ex: 12 - 678), n Real (Ex: 4.607 - 199.34), n Complex (Ex: 2 + 3i , i=j=sqrt(-1)), n Inf (Ex: Infinity 2/0), n NaN (EX: Not a Number, 0/0).
n Todos os cálculos são feitos em precisão dupla (Double precision)
14
Números e formatos
n O comando format é usado para controlar a impressão dos números
n O nº de dígitos apresentados não tem a ver com a exatidão
n Para formatar a visualização: n format short e: Notação científica com 5 casas
decimais n format long e: Notação científica com 15 casas
decimais n format bank: Colocação de dois dígitos significativos
nas casas decimais
15
Comando pi Comentários
format short 3.1416 5 dígitos format long 3.14159265358979 16 dígitos format short e 3.1416e+000 5 dígitos + expoente
format long e 3.141592653589793e+000 16 dígitos + expoente
format short g 3.1416 short ou short e format long g 3.14159265358979 long ou long e
format hex 400921fb54442d18 Hexadecimal, ponto flutuante
format bank 3.14 2 digitos decimais
format + + positivo(+), negativo(-) ou zero(0)
format rat 355/113 razão aproximada
Números e formatos
n Formatos
16
n Pode-se armazenar valores em variáveis no MATLAB.
n Variáveis devem ter um nome único, começando com uma letra e podem conter dígitos ou o símbolo _ (underline).
n O MATLAB distingue letras maiúsculas de minúsculas.
Variáveis e funções
17
n Exemplo: >> distancia = 100 distancia = 100 >> tempo = 3 tempo = 3 >> velocidade_media = distancia / tempo
velocidade_media = 33.3333
Variáveis e funções
18
Variáveis e funções
n Criando e iniciando variáveis: n Expressões de atribuição
n Entrada pelo Teclado
19
var = 40i; var2 = var/5; x = 1; y = 2; array = [1 2 3 4];
my_val = input('Enter an input value:');
Variáveis e funções
n Criando e iniciando variáveis: n Expressões de atalho
n Funções pré-definidas
20
x = 1:2:10 angles = (0.01:0.01:1.00)*pi;
a = zeros(2); b = zeros(2,3); c = [1 2; 3 4]; d = zeros(size(c));
n Note que ao digitar o nome da variável, o símbolo = e o seu valor, o MATLAB armazena a variável e a apresenta na tela.
n Para suprimir a exibição da variável deve-se adicionar um ponto-e-vírgula ao final do comando.
Variáveis e funções
21
n Ao criar uma expressão sem armazená-la em uma variável, o MATLAB a salva automaticamente na variável ans.
Variáveis e funções
22
n O comando who mostra todas as variáveis armazenadas durante uma sessão do MATLAB. >> who Your variables are: ans tempo Distancia velocidade_media
Variáveis e funções
23
n O comando clear “apaga” uma ou mais variáveis. >> clear tempo - Apaga somente a
variável tempo. >> clear velocidade_media distancia
- Apaga as variáveis velocidade_média e distancia.
>> clear - Apaga TODAS as variáveis da sessão.
Variáveis e funções
24
Variáveis e funções
n Variáveis especiais n ans - Nome de variável padrão usado para
resultados. n pi - 3.1416 n eps - Menor número que somado a 1, cria
um número maior do que 1. n inf - Infinito. n NaN - Não número. n i e j - n realmin - menor número real positivo n realmax - maior número real positivo
1−
25
Variáveis e funções
n Funções elementares n abs(x) - Valor absoluto n acos(x) - Arco cosseno n asin(x) - Arco seno n atan(x) - Arco tangente n cos(x) - Cosseno n exp(x) - Exponencial (ex) n log(x) - Logaritmo natural (base e) n log10(x) - Logaritmo na base 10 n sin(x) - Seno n sqrt(x) - Raiz quadrada n tan(x) - Tangente
26
Variáveis e funções
n Exemplos >> sin(pi/2) ans = 1 >> cos(pi/4)^2 ans = 0.5000 >> asin(1)*180/pi ans = 90
27
Variáveis e funções
n Recuperando comandos n Para evitar redigitação, o Matlab
armazena todos os comandos do usuário durante uma sessão.
n Para acessar os comandos anteriores basta pressionar a tecla ↑ (seta para cima) seguidas vezes até encontrar o comando desejado.
n O comando então pode ser editado e executado novamente. 28
Variáveis e funções
n Ajuda n Ajuda e informação no MatLab podem
ser obtidas de várias formas n Na linha de comando usando help tópico n Numa janela de ajuda separada no menu
de help n No helpdesk MatLab mantido no disco ou
CD-ROM ou na internet
29
Variáveis e funções
n Ajuda n Ajuda na linha de comandos
n >>help pi PI 3.1415926535897.... PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897....
n >>help sin SIN Sine. SIN(X) is the sine of the elements of X.
n >>lookfor fft
30
Variáveis e funções
n função disp(str) n >> str = ['The value of pi = ' num2str(pi)]; n >> disp (str);
n função fprintf(format,data)
n >> fprintf('The value of pi is %f \n',pi)
n >> fprintf('The value of pi is %6.2f \n',pi)
31
Formatação Resultados
%d Exibe valor como inteiro
%e Exibe valor no formato científico
%f Exibe valor como ponto flutuante
\n Muda de linha
Variáveis e funções
n Salvando seções n Para salvar uma sessão do MATLAB,
deve-se usar a opção Save Workspace As no menu File.
n Para abrir uma sessão salva anteriormente deve-se utilizar a opção Open no menu File.
n É possível usar os comandos load e save
32
Vetores
n O MATLAB pode trabalhar com vetores de elementos, realizando operações sobre eles
33
Vetores
n Definição de vetores n >> A = [0 1 2 3 4 5]
A = 0 1 2 3 4 5
n Outra forma de se criar um conjunto: n >> A = 1:1:5 A = 1 2 3 4 5 n O primeiro valor é o valor inicial, o segundo o
“salto”e o terceiro o valor final. 34
Vetores
n Função linspace - Gera um vetor linearmente espaçado a partir de um valor inicial, um valor final e um número de elementos. n >> X = linspace(0,pi,6) X = 0 0.6283 1.2566 1.8850 2.5133 3.1416
35
Vetores
n Função logspace - Gera um vetor logaritmicamente espaçado a partir de uma potência inicial, uma potência final e uma quantidade de valores. n >> V = logspace(0,2,5) V = 1.0000 3.1623 10.0000 31.6228 100.0000
36
Vetores
n Acesso a um elemento de um vetor: n Z = 1 4 9 16 25 n >> Z(1) ans = 1 n >> Z(2) ans = 4 n >> Z(6) ??? Index exceeds matrix dimensions.
37
Vetores
n Pode-se acessar mais de um elemento: n >> Z(1:3) ans = 1 4 9 n >> Z(3:5) ans = 9 16 25 n >> Z(2:4) ans = 4 9 16
38
Matrizes
n O Matlab permite a criação de matrizes com tantas dimensões quanto necessário para um dado problema
39
Matrizes
n Definição de matrizes: n >> M = [1 0 -1; 2 3 4; -7 1 3] M = 1 0 -1 2 3 4 -7 1 3 n Os elementos da linha são separados por
espaço em branco e as linhas são separadas por ponto-e-vírgula.
40
Matrizes
n Pode-se criar matrizes a partir de vetores ou outras matrizes n >> b = [2 -3 1]; n >> Mx = [b' M(:,2:3)] Mx = 2 0 -1 -3 3 4 1 1 3
41
Matrizes
n Pode-se criar matrizes a partir de vetores ou outras matrizes n M(:, 2:3) significa a parte da matriz M
compreendida por todas as linhas (:) e as colunas 2 e 3 (2:3).
n A matriz Mx foi gerada concatenando-se o vetor b transposto e as colunas 2 e 3 da matriz M.
42
n Funções para manipular matrizes n eye – matriz identidade n zeros – matriz composta de 0s n ones – matriz composta de 1s n rand – matriz de números aleatório n diag – matriz diagonal n Rot90 – rotação de uma matriz em 90 graus n etc
Matrizes
43
n Operadores aritiméticos n Forma Geral: A op B
n + Soma Estrutural e Matricial n - Subtração Estrutural e Matricial n * Multiplicação Matricial n / Divisão Matricial à Direita n \ Divisão Matricial à Esquerda n ^ Expoente Matricial n ‘ Operador de Transposição
Operações Aritméticas
44
5D =⎥⎦
⎤⎢⎣
⎡=23
C
⎥⎦
⎤⎢⎣
⎡=
1 0 2 1-
B⎥⎦
⎤⎢⎣
⎡=
1 20 1
A
Operações Aritméticas
n Operadores aritméticos
45
n A + B 0 2 2 2
n A – B 2 -2 2 0
n A + C Operação ilegal
n A + D 6 5 7 6
Operações Aritméticas
n Operadores aritméticos
46
n A * B -1 2
2 5
n A * C 3 8
n A .* B -1 0 0 1
n A .* C Operação ilegal
Operações Aritméticas
n Operadores aritméticos
47
n A / B -1 2 -2 5
n A \ B -1 2 2 -3
n A ./ B -1 0 Inf 1
n A .\ B -1 Inf
0 1
Operações Aritméticas
n Operadores aritméticos
48
Operações Aritméticas
n Hierarquia de operações aritméticas
49
Precedência Operação
1 O conteúdo de todos os parênteses é avaliado, a partir dos parênteses mais internos em direção aos mais externos
2 Todos os expoentes são avaliados, da esquerda para a direita
3 Todas as multiplicações e divisões são avaliadas, da esquerda para a direita.
4 Todas as somas e subtrações são avaliadas, da esquerda para a direita
distance = 0.5*accel*time^2 distance = 0.5*accel*(time^2) distance = (0.5*accel*time)^2
Operações Aritméticas
n Avalie as hierarquias de operações
50
a = 3; b = 2; c = 5; d = 3; output = a*b+c*d; output = a*(b+c)*d; output = (a*b)+(c*d); output = a^b^d; output = a^(b^d);
n Operadores relacionais
n Forma geral: A op B
n A e B: Operandos. Pode ser uma matriz, um escalar ou uma cadeia de caracteres. n Op: Operador
Operador Operação == Igual a ~= Diferente de > Maior que >= Maior que ou igual a < Menor que <= Menor que ou igual a
Operações Relacionais
51
n Operadores relacionais n Os operadores <, <=, > e >= são usados para
comparar a parte real dos operandos. n Os operadores == e ~= são usados para
comparar a parte real e imaginária dos operandos.
Operações Relacionais
52
n Operadores relacionais Expressão Resultado
5 > 3 1 ‘AC’ > ‘BA´ 0 1 a > b 1 0 1 + j <= 2 + 3*j 1 x >= [3 8] 1 0 a > c 0 1 2 + j == 1+ j 0 5 + j ~= 2 + j 1 a = [2 1] b = [ 1 1 ] c = [ 0 2 ] x = [ 4 2]
Operações Relacionais
53
n Operadores lógicos
Operação Lógica Binária Operação Lógica Unária A op B op A
Operador Operação
& E lógico l OU lógico xor Ou exclusivo lógico ~ Não lógico
Operações Lógicas
54
Entradas e ou xor não A B A & B A l B xor(A,B) ~A
0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0
Operações Lógicas
n Operadores lógicos
55
n Operadores lógicos n Precedência dos operadores
1. Os operadores aritméticos são avaliados primeiro. 2. Os operadores relacionais são avaliados da esquerda para a direita. 3. Todos os operadores ~ são avaliados. 4. Todos os operadores & são avaliados. 5. Todos os operadores I são avaliados.
OBS: Sempre use parênteses para indicar a ordem
correta desejada de avaliação de uma expressão.
Operações Lógicas
56
Expressão Resultado ~A 0 A l B 1 B l C 1 3 > 4 & 1 0 3 > (4 & 1) 1 ~C 0 A l B & C 1 A & C 1 B & C 0
A = 1, B = 0 e C = -10
Operações Lógicas
57
n Exercícios 1. Para as matrizes A e B, definidas a baixo, execute as seguintes operações e interprete os resultados.
a) A+B b) A*B c) A.*B d) A.^2 e) A^2 f) A*A g) inv(A) h) inv(A)*A i) A\B j) A/B k) A/B – eye(3) l) A*inv(B) – eye(3)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
073110013
113210321
BA
Exercícios
58
n Exercícios 2. Utilizando os comandos zeros, ones e eye, construa as seguintes matrizes
Exercícios
⎥⎦
⎤⎢⎣
⎡=⎥
⎦
⎤⎢⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=1001
11
111111111
0000000000000000
DCBA
!zeros(4)! ! ones(3) ! ones(2,1) ! eye(2)!
59
n Pode-se gerar gráficos a partir de matrizes.
n Exemplo n >> X = linspace(0,2*pi,100);
>> Y = sin(X); >> plot(X,Y)
Gráficos
60
n Duas linhas no mesmo gráfico (seno e cosseno): n >> Z = cos(X);
>> plot(X,Y,X,Z)
Gráficos
61
n Título para o gráfico: >> title('seno(x) e cosseno(x)')
n Nome para o eixo x: >> xlabel('grau (em radianos)')
n Nome para o eixo y: >> ylabel('variaveis dependentes')
Gráficos
62
n Resultado:
Gráficos
63
n Linhas de grade n >> grid
Gráficos
64
Gráficos
n Cores e estilos de linha, estilos de marcadores e legendas
65
b blue . point - solid g green o circle : dotted r red x x-mark -. dashdot c cyan + plus -- dashed m magenta * star (none) no line y yellow s square k black d diamond w white v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram
Gráficos
66
x = 0:1:10; y = x.^2 - 10.*x + 15; plot(x,y);
x = 0:1:10; y = x.^2 - 10.*x + 15; plot(x,y,'r--',x,y,'bo');
Gráficos
n Ferramentas de edição
67
Gráficos
n Edição de desenhos
68
n Sequência rampa n Uma sequência rampa transladada com declive B é
definida como n Sequência rampa unitária e sequências de rampa
transladada
)()( 0nnBng −=
Código MATLAB : n=-10:1:20; f=2*(n-10); stem(n,f);
Exercícios
69
Exercícios
70
n Sequência exponencial Real n Definida como: n Exemplo para A = 10 e a = 0.9, a sequência
aproxima-se de zero quando n tende para infinito e aproxima-se de mais infinito quando n tende para menos infinito
Exercícios
naAnf )()( =
Código MATLAB: n=-10:1:10; f =10*(.9).^n; stem(n,f); axis([-10 10 0 30]); 71
Exercícios
72
n Sequência senoidal n Uma sequência senoidal pode ser descrita como:
n Onde A é um número real positivo (amplitude), N é o período, e a a fase.
n Exemplo: n A = 5, N = 16 n e
Exercícios
⎟⎠
⎞⎜⎝
⎛ += απNnAnf 2cos)(
.4/π=a
73
n Sequência senoidal
Exercícios
Código MATLAB: 1. n=-20:1:20; 2. f=5*[cos(n*pi/8+pi/4)]; 3. stem(n,f);
74
Exercícios
75
n Sequência senoidal modulada exponencialmente n Obtém-se através da multiplicação de uma sequência
exponencial por uma sequência senoidal. n Pode ser descrita por :
n Exemplo: n A = 10, N = 16, a = 0.9 n
Exercícios
⎟⎠
⎞⎜⎝
⎛ += απNnaAng n 2cos)()(
.4/πα =76
n Sequência senoidal modulada exponencialmente
Exercícios
Código MATLAB: 1. n=-20:1:20; 2. f=10*[0.9 .^n]; 3. g=[cos(2*n*pi/16+pi/4)]; 4. h=f.*g; 5. stem(n,h); 6. axis([-20 20 -30 70]);
77
Exercícios
78
n Gráficos 3D n Gráficos de Linhas - Função plot3
>> X = linspace(0, 10*pi, 300); >> Y = sin(X); >> Z = cos(X); >> plot3(X,Y,Z) >> grid
Gráficos
79
n Gráficos 3D n Gráficos de Superfícies - funcão mesh
>> v = linspace(-10,10,20); >> [X, Y] = meshgrid(v,v); >> Z = X.^2 + Y.^2; >> mesh(X,Y,Z)
n Utilizamos a função meshgrid para gerar X e Y como matrizes com valores repetidos que são utilizadas para gerar a matriz Z.
Gráficos
80
n Gráficos 3D n Gráficos de Superfícies - funcão mesh
>> v = linspace(-10,10,20); >> [X, Y] = meshgrid(v,v); >> Z = X.^2 + Y.^2; >> mesh(X,Y,Z)
n Utilizamos a função meshgrid para gerar X e Y como matrizes com valores repetidos que são utilizadas para gerar a matriz Z.
Gráficos
81
n Resultado
Gráficos
82
n Gráficos 3D n Função mesh - superfícies em rede n Função surf - superfícies coloridas (opacas) n Função surfl - superfícies coloridas com uma
fonte de luz. n Exemplo 1: >> surf(X,Y,Z) n Exemplo 2: >> colormap(gray) >> surfl(X,Y,Z)
Gráficos
83
n Resultado
Gráficos
84
n Rotação em gráficos 3D n Para rotacionar um gráfico 3D primeiro clique no
botão presente na janela do gráfico. n Após isto, clique sobre o gráfico e mantenha o
botão do mouse pressionado. n Uma caixa irá aparecer indicando a direção do
gráfico. n Agora, basta movimentar o mouse para ajustar a
posição desejada do gráfico.
Gráficos
85
n Superfícies de contorno n Função contour - Gera superfícies de
contorno. >> contour(X,Y,Z,30)
n Os três primeiros parâmetros são as matrizes com os dados para os gráficos. O quarto parâmetro é o número de contornos.
Gráficos
86
n Resultado
Gráficos
87
n Superfícies de contorno n Função pcolor - Gráfico de pseudocores
n >> pcolor(X,Y,Z)
Gráficos
88
PROGRAMAÇÃO EM MATLAB
89
Sumário – Programação em Matlab
n Projeto de programa n Arquivo de comando n Estruturas de controle n Funções definidas pelo usuário
90
Projeto de Programa
n Diante de um novo problema, é natural irmos direto ao teclado sem perder tempo a respeito do problema;
n Em casos de problemas pequenos, é possível resolver a situação com essa abordagem “em tempo real”;
n Para problemas maiores, vale a pena pensar no problema e na abordagem a ser usada antes de escrever uma linha de código;
91
Projeto de Programa
n Projeto Top-down
92
Estabeleça o problema que você está tentando resolver
Defina as entradas e saídas requeridas
Projete o algoritmo
Converta o algoritmo em MATLAB
Teste o programa MATLAB resultante
Início
Fim
n Algoritmo n Série de ações executadas em uma ordem
especifica. n Pseudocódigo
n Linguagem artificial e informal de representar o código de um programa.
n Útil para desenvolver algoritmos que serão convertidos em programas estruturados no MATLAB.
Projeto de Programa
93
Projeto de Programa
n Exemplo de Pseudocódigo
94
Código MATLAB: temp_f = input('Enter the temperature in degrees Fahrenheit: '); temp_k = (5/9) * (temp_f - 32) + 273.15; fprintf('%6.2f degrees Fahrenheit = %6.2f kelvin.\n’,temp_f,temp_k);
1. Solicite ao usuário a temperatura em graus Fahrenheit 2. Leia a temperatura em graus Fahrenheit (temp_f) 3. temp_k in kelvins = (5/9) * (temp_f - 32) + 273.15 4. Escreva a temperatura em kelvin
n Geralmente, utiliza-se o prompt do MATLAB para introduzir os comandos.
n Este procedimento simples para execução de comandos no prompt se torna altamente ineficiente quando a complexidade do problema aumenta.
n Para problemas simples podemos usar o prompt do MATLAB e para os mais difíceis deve-se utilizar o script-file ou M-file, que é também conhecido como arquivo de comando ou arquivo M.
Arquivos de comando
95
n Erro comum de Programação: Os nomes dos arquivos de comando precisam sempre terminar com a extensão ‘.m’.
Exemplos: programa1.m, exemplo1.m, etc.
Arquivos de comando
96
n Como Criar um Arquivo M (M-file) n Para criar um arquivo M-file, deve-se seguir os
seguintes passos: n Abrir o MATLAB n Selecionar o menu File n Selecionar o item New e em seguida apontar para
M-file e clicar.
Arquivos de comando
97
n Exemplo de script-file.
Arquivos de comando
98
% script-file: circulo.m % Este programa calcula a área de um circulo raio = 2.5; area = pi*raio^2; fprintf('Area do circulo = %.3f ', area);
n Como Executar um Arquivo M (M-file) n Para executar um arquivo M-file no MATLAB é preciso
gravar o arquivo correspondente. Para isto, deve-se selecionar o item Save Workspace As do menu File.
n É interessante dar preferência a salvar o arquivo no diretório corrente do MATLAB, ou seja, na pasta work.
n Para executar o arquivo M, basta digitar no prompt do MATLAB o nome do arquivo salvado anteriormente, sem a extensão ‘.m’. Feito isso o MATLAB gera o executável do programa.
Arquivos de comando
99
n Para exemplificar, considere o arquivo circulo.m. Digite no prompt do MATLAB o nome do arquivo circulo. Será apresentado o executável do programa. n >> circulo Area do circulo = 19.635
Arquivos de comando
100
n Em resumo, pode-se dizer que um programa em MATLAB consiste na criação do arquivo M-file utilizando-se o editor de texto e sua respectiva chamada por linha de comando no prompt do MATLAB.
Arquivos de comando
101
n Controle de Fluxo O controle de fluxo é um recurso que permite que resultados anteriores influenciem operações futuras. Como em outras linguagens, o MATLAB possui recursos que permitem o controle de fluxo de execução de comandos, com base em estruturas de tomada de decisões. Serão apresentadas a seguir as seguintes estruturas de controle: n Ramificações: if, elseif, switch n Laços: while, for
Estruturas de controle
102
n Simbologia
Símbolo de decisão
Indica que ações serão executadas
Inicio e fim de uma estrutura de uma controle
Estruturas de controle
103
n if n Estrutura de seleção para escolha de cursos de ação
específicos. n A estrutura de seleção if executa uma ação indicada
só quando a condição é true (Verdadeira); caso contrário, a ação é saltada.
Estruturas de controle
104
n if
Condição Verdadeira
Falsa
Executa uma ação
Testa a condição
Estruturas de controle
105
n Pseudocódigo n Se a nota do estudante for maior ou igual que 7.0
Imprima “Aprovado”
n Código no Matlab if nota >= 7
fprintf(‘Aprovado’); end
Estruturas de controle
106
n elseif
Condição Verdadeira Falsa
Executa uma ação
Testa a condição
Executa uma ação
Estruturas de controle
107
n Pseudocódigo n Se a nota do estudante for maior ou igual que 7.0
Imprima “Aprovado” senão Imprima “Reprovado”
n Código no Matlab if nota >= 7
fprintf(‘Aprovado’); else fprintf(‘Reprovado’); end
Estruturas de controle
108
Estruturas de controle
n Exercício: Escreva um programa MATLAB para avaliar uma função f(x,y) para quaisquer dos valores x e y especificados pelo usuário. A função f(x,y) é definida a seguir
109
f (x, y) =
x + y, x ! 0 e y ! 0x + y2, x ! 0 e y<0 x2 + y, x<0 e y ! 0x2 + y2, x<0 e y<0
"
#
$$
%
$$
n switch n Permite que um programador selecione um
bloco de código a ser executado com base no valor de um único inteiro, caractere ou expressão lógica
Estruturas de controle
110
Estruturas de controle
111
switch (expr_switch) case expr_case1 Declaração 1 Declaração 2 ... case expr_case2 Declaração 1 Declaração 2 ... ... otherwise, Declaração 1 Declaração 2 ... end
Bloco 1
Bloco 2
Bloco N
switch (expr_switch) case {expr_case1, expr_case2, expr_case3} Declaração 1 Declaração 2 otherwise, Declaração 1 Declaração 2 ... end
Estruturas de controle
n Exemplo
112
switch (value) case {1,3,5,7,9} disp('The value is odd.'); case {2,4,6,8,10} disp('The value is even.'); otherwise disp('The value is out of range.'); end
n Laços são construções MATLAB que nos permitem executar uma sequência de declarações mais de uma vez.
n Existem dois tipos de laços: n while n for
Estruturas de controle
113
n while: é um bloco de declarações que se repete indefinidamente, enquanto uma condição for satisfeita.
A forma geral do while é: while expressão ... ... Bloco de código ... end
Estruturas de controle
114
n while
Condição Verdadeira
Falsa
Executa uma ação
Testa a condição
Estruturas de controle
115
n Laço for : Executa um bloco de declarações durante um número especificado de vezes.
for indice = expressão Declaração 1 .... Corpo Declaração n
end
Estruturas de controle
116
cont = 1
cont <= n
Falso
Verdadeiro Corpo do laço cont = cont + 1
n: número de iterações do laço for
cont: variável de controle
Inicialização da variável de controle
cont = 2
cont = 3
Estruturas de controle
117
n Exemplo: Calcular a soma dos 10 primeiros inteiros.
10987654321 +++++++++=Soma
Estruturas de controle
118
soma = 0; % Inicializa a variável soma com zero for k = 1:10 soma = soma + k; end fprintf('A soma dos dez primeiros inteiros eh: %.2f', soma);
n Exemplo: Calcular o fatorial de um número n.
Estruturas de controle
119
n = 5; fatorial = 1; % Inicializa a variável soma com zero for k = 1:n % Laço de repetição: n vezes fatorial = fatorial*k; % Cálculo do fatorial end fprintf(‘O fatorial de %.2f eh %.2f', n, fatorial);
n Exemplo: Calcular a soma dos 5 primeiros inteiros impares.
Estruturas de controle
120
soma = 0; % Inicializa a variável soma com zero for k = 1:2:9 soma = soma + k; end fprintf('A soma dos 5 primeiros inteiros impares eh: %.2f', soma);
n for X while n while: utilizado para repetir um trecho de código
quando não é desconhecido o número de iterações do laço.
n for: utilizado para repetir um trecho de código quando é conhecido o número de iterações do laço.
Estruturas de controle
121
n Break n Usada para controlar a operação dos laços for e while n Encerra a execução do laço e passa o controle para a
próxima declaração logo após o fim do laço.
Estruturas de controle
122
n Uso do break
Estruturas de controle
123
for k = 1:5 if k == 3;
break; end fprintf(‘k = %d\n’, k); end disp(‘Fim do laço!’);
n Uso do break
Estruturas de controle
124
for k = 1:5 if k == 3;
break; end fprintf(‘k = %d\n’, k); end disp(‘Fim do laço!’);
Saída: k = 1 k = 2 Fim do laço!
n Continue n Usada para controlar a operação dos laços for
e while n Termina a passagem corrente pelo laço e
retorna o controle para o início do laço.
Estruturas de controle
125
n Uso do Continue
Estruturas de controle
126
for k = 1:5 if k == 3;
continue; end fprintf(‘k = %d\n’, k); end disp(‘Fim do laço!’);
n Uso do Continue
Estruturas de controle
127
for k = 1:5 if k == 3;
continue; end fprintf(‘k = %d\n’, k); end disp(‘Fim do laço!’);
Saída: k = 1 k = 2 k = 4 k = 5 Fim do laço!
Estruturas de controle
n Exercício: Implemente um algoritmo que calcule a média e o desvio-padrão de um conjunto de dados de entrada. n dados de entrada: x = [3 4 5 -1]
n média:
n desvio-padrão:
128
x = 1N
xii=1
N
!
s =N xi
2
i=1
N
! " xii=1
N
!#
$%
&
'(
2
N(N "1)
n Cálculo da série de Fourier na forma complexa
Série de Fourier Complexa
129
X[k]= 1N
x[n]e! jk"0nn=1
N
#
"0 =2!N
Série de Fourier Complexa
130
disp('Algoritmo para calculo da serie de Fourier') disp('na forma complexa para a funcao x(t)=-at^2+b*t+c') disp('------------------------------------------------’) % %Definicao e plotagem da funcao a ser expandida em serie de Fourier % a = input('Insira o valor do coeficiente a:'); b = input('Insira o valor do coeficiente b:'); c = input('Insira o valor do coeficiente c:'); t=0:0.01:100; xt=-a.*t.*t+b.*t+c; plot(t,xt) ylabel('x(t)=-0.01t^2+t+10') xlabel('t') N=length(xt);
Série de Fourier Complexa
131
%Calculo dos coeficientes Xn da serie de Fourier harmonicos = input('Insira o numero de harmonicos desejados:'); for n = 1:harmonicos; for k = 1:N; integral(k) = exp(-j*2*pi*(n-1)*k/N)*xt(k); end X(n) = sum(integral)/N; end
Série de Fourier Complexa
132
%Calculo e plotagem das amplitude e fase de X amplitude = abs(X); fase = angle(X); omega = 0:harmonicos-1; figure subplot(211), stem(omega,amplitude) ylabel('Amplitude') xlabel('Frequencia (multiplos de \omega_0)') subplot(212), stem(omega,fase) ylabel('Fase') xlabel('Frequencia (multiplos de \omega_0)')
Série de Fourier Complexa
133
%Calculo e plotagem das partes real e imaginaria de X Xreal = real(X); Ximag = imag(X); figure subplot(211), stem(omega,Xreal) ylabel('X_{real}') xlabel('Frequencia (multiplos de \omega_0)') subplot(212), stem(omega,Ximag) ylabel('X_{imaginario}') xlabel('Frequencia (multiplos de \omega_0)')
Série de Fourier Complexa
134
%Calculo da aproximacao da funcao original utilizando "m" harmonicos m = input('Insira o numero de harmonicos desejados para reconstrucao da funcao:'); for k=1:N; for n = 1:m; e(n) = X(n)*exp(j*2*pi*(n-1)*k/N); end funcao(k) = sum(e); end figure(1) hold on plot(t,funcao)
Funções definidas pelo usuário
n Um programa pode ser dividido em subtarefas;
n É possível codificar cada subtarefa como uma função separada;
n Cada função pode ser testada e depurada de forma independente das outras funções do programa;
135
Funções definidas pelo usuário
n Benefícios n Teste independente das subtarefas; n Código reutilizável; n Isolamento de efeitos colaterais indesejados;
n Uma função MATLAB é tipo especial de arquivo M executado em um espaço de trabalho independente;
136
Funções definidas pelo usuário
n Forma geral
137
function [outarg1, outarg2, ...] = fname(inarg1, inarg2, ...) % H1 comment line % Other comment lines ... (Executable code) ... (return) (end)
Funções definidas pelo usuário
n Exemplo – função dist2
138
function distance = dist2 (x1, y1, x2, y2) %DIST2 Calculate the distance between two points % Function DIST2 calculates the distance between % two points (x1,y1) and (x2,y2) in a Cartesian % coordinate system. % Calculate distance. distance = sqrt((x2-x1).^2 + (y2-y1).^2);
Funções definidas pelo usuário
n Exemplo – Script que chama a função dist2
139
% Script file: test_dist2.m % Get input data. disp('Calculate the distance between two points:'); ax = input('Enter x value of point a: '); ay = input('Enter y value of point a: '); bx = input('Enter x value of point b: '); by = input('Enter y value of point b: '); % Evaluate function result = dist2 (ax, ay, bx, by); % Write out result. fprintf('The distance between points a and b is %f\n',result);
Funções definidas pelo usuário
n Exercício: A localização de um ponto cartesiano pode ser expressa por coordenadas retangulares (x,y) ou polares (r,θ), como ilustrado abaixo.
140
Funções definidas pelo usuário
n Exercício (continuação): A relação entre esses dois conjuntos de coordenadas é dada por
n Escreva duas funções rect2polar e polar2rect, que convertam coordenadas de retangular para polar, e vice-versa, com θ expresso em graus
141
MATEMÁTICA SIMBÓLICA
142
Matemática Simbólica
n O Matlab permite o cálculo simbólico através do Toolbox de Matemática Simbólica;
n Esse toolbox utiliza o kernel do MAPLE;
n O Matlab realiza todas as operações elementares entre expressões simbólicas utilizando a sintaxe comum
143
Matemática Simbólica
n Operações Matemáticas n >> syms x n >> x+2*x n >> x*x - 5*x^2 n >> sqrt(x^2) n >> cos(pi-x)
144
Matemática Simbólica
n Substituição de variável em uma expressão simbólica n >>subs(4*x^2-4,x,2)
n Solução simbólica de equações algébricas (ex: x^2-2*x+1 = 0) n >>solve(x^2-2*x+1)
145
Matemática Simbólica
n Gráficos n >> ezplot(sin(3*x)+2*x)
146
Matemática Simbólica
n Gráficos n >> ezplot(sin(3*x)+2*x,[1 2])
147
Matemática Simbólica
n Gráficos n >> ezsurf(2*x^2-3*y^2-4)
148
Matemática Simbólica
n Limite n >> syms x n >> limit(sin(x-1)/(1-x),x,1)
n Série n soma dos 100 primeiros termos de
n >> symsum((4*n+1)/(n+3),n,1,100)
149
Matemática Simbólica
n Derivada n >> syms x n >> diff(sin(2*x))
n Derivada de ordem superior n >> diff(sin(2*x),2)
150
Matemática Simbólica
n Derivadas Parciais n >> syms x y n >> g = x*y + x^2
n >> diff(g) % computes ∂g/∂x n >> diff(g, x) % also ∂g/∂x n >> diff(g, y) % ∂g/∂y
151
Matemática Simbólica
n Integral n >> syms x
n Integral de n >> int(6*x^3-2*x^2+1) % Indefinida n >> int(6*x^3-2*x^2+1,1,2) % Definida
n >> int(exp(-x),0,inf)
152
Matemática Simbólica
n Integral
153
>> syms x a b >> f = x/(a*x+b) >> pretty(f) >> g = int(f) >> pretty(g) >> latex(g) >> ccode(g) >> fortran(g)
INTERFACES GRÁFICAS E TOOLBOXES
154
Interface gráfica e toolboxes
n Braço robótico
155
Interface gráfica e toolboxes
n Controle de ângulo de ataque aeronave
156
Interface gráfica e toolboxes
n Voo de um 747
157
Toolbox de Processamento de Imagens
n Pixel - Região da Imagem
158
I = imread('lena.jpg'); imshow(I); impixelregion;
Toolbox de Processamento de Imagens
159
Toolbox de Processamento de Imagens
n Filtrando Imagens
160
I = imread('lena.jpg'); subplot(2,2,1); imshow(I); title('Imagem Original'); %Criando um filtro H = fspecial('motion',20,45); %Filtrando a imagem com o filtro especificado MotionBlur = imfilter(I,H,'replicate'); subplot(2,2,2); imshow(MotionBlur);title('Motion Blurred Image'); H = fspecial('disk',10); blurred = imfilter(I,H,'replicate'); subplot(2,2,3); imshow(blurred); title('Blurred Image'); H = fspecial('unsharp'); sharpened = imfilter(I,H,'replicate'); subplot(2,2,4); imshow(sharpened); title('Sharpened Image');
Toolbox de Processamento de Imagens
161
Toolbox de Processamento de Imagens
n Inserindo um Ruído na imagem.
162
n = imnoise(I, 'gaussian'); imshow(n)
Toolbox de Processamento de Imagens
163
SIMULINK
164
Sumário – Simulink
n O que é? n Variáveis e funções n Vetores n Matrizes n Operações n Gráficos
165
n Um ambiente de modelagem e simulação de sistemas dinâmicos e embarcados.
n Provê uma interface gráfica interativa e um conjunto de bibliotecas de blolcos configuráveis que permitem o projeto, a simulação, a implementação e o teste de uma grande variedade de sistemas variantes no tempo, incluíndo: comunicações, controle, processamento de sinais, de vídeo e de imagens.
O que é?
Iniciando o Simulink
1. Digitar simulink no prompt de comando
2. Clicar no botão na barra de ferramentas
ou
ou 3. Navegar pelo botão iniciar do MATLAB
Programação
n A programação no Simulink segue uma interface gráfica intuitiva e fácil de usar:
1. Escolha os blocos funcionais desejados na biblioteca;
Programação
n A programação no Simulink segue uma interface gráfica intuitiva e fácil de usar:
2. Arraste-os para o espaço de trabalho (área de programação)
Programação
n A programação no Simulink segue uma interface gráfica intuitiva e fácil de usar:
3. Conecte-os da maneira adequada para obter o comportamento desejado
Programação
n A programação no Simulink segue uma interface gráfica intuitiva e fácil de usar:
4. Ajuste os parâmetros da simulação; 5. Execute o programa.
Programação
Exemplos
Biblioteca Math
Biblioteca Sources
n Exemplo 1 n Criando uma senóide com nível DC
n Exemplo 1 n Ajuste automático da escala do gráfico
Exemplos
n Exemplo 1 n Ajuste manual da escala do gráfico
Exemplos
n Exemplo 1 n Inserindo um ganho de -1 (invertendo o sinal) e
comparando com a senóide original
Exemplos
Biblioteca Math
n Exemplo 1 n Configuração dos parâmetros do bloco product
Exemplos
Número de termos da multiplicação.
Multiplicação de matrizes ou termo a termo.
n Exemplo 1 n Alterando os parâmetros da simulação
Exemplos
Tempo inicial
Tempo final
n Exemplo 1 n Criando um subsistema
Exemplos
Sub-sistema
n Exemplo 1 n Editando um subsistema
Exemplos
Sub-sistema
n Exemplo 1 n As vezes é interessante tratar os dados no
ambiente do Matlab: Usa-se o bloco “to workspace”
Exemplos
Cria a variável A no workspace
Biblioteca Sinks
n Exemplo 1 n Configuração do bloco “to workspace”
Exemplos
Cria a variável A no workspace
Formato da variável
n Exemplo 1 n E lá no Workspace...
Exemplos
>> plot(tout,A)
n Exemplo 1 n Girando um bloco
Exemplos
CTRL R
n Exemplo 1 n Combinando sinais
Exemplos
Bloco MUX Biblioteca Signals & Sys.
n Exemplo 1 n Combinando sinais
Exemplos
n Exemplo 1 n Configurando...
Exemplos
n Exemplo 2 n Sistema massa-mola-amortecedor
Exemplos
Exercício
n Faça usando um arquivo de comando n Faça usando o simulink
n Exemplo 3 n Simulação de um tanque de nível sob a
influência de uma perturbação degrau na vazão da alimentação.
Exemplos
q1
q3
q2
h
A
n Exemplo 3 n Assumindo
n Densidade do líquido e a área da seção
transversal do tanque (A) constantes.
n Relação entre a vazão e a carga é linear:
Exemplos
Rhq /3 =
n Exemplo 3 n O modelo é descrito por uma equação de
balanço transiente de massa no tanque:
n Substituindo a hipótese II na equação:
Exemplos
321 qqqdtdhA ρρρρ −+=
Rhqq
dtdhA ρρρρ −+= 21
n Exemplo 3 n Introduzindo as variáveis-desvio e aplicando a
Transformada de Laplace, chega-sa às funções de transferência:
Exemplos
1)(
)()('
1'1 +
==sK
sGsqsh p
τ
1)(
)()('
2'2 +
==sK
sGsqsh p
τ onde:
ARRK p
=
=
τ
n Exemplo 3 n Considera-se um tanque de 0.5 m de diâmetro
e uma válvula na saída na linha atuando sob uma resistência linear (R) de 6.37 min/m2.
n Serão simulados um degrau de 1 ft3 na vazão q1 a partir do tempo igual a 0 min (step) e um degrau de 1 ft3 na vazão q2 a partir do tempo igual a 10 min(step1).
Exemplos
A = 3.1415 * (0.5/2)^2 A = 0.196 R = 6.37 25.1
37.6
==
==
ARRKp
τ
n Exemplo 3
Exemplos
Corrente q1
Corrente q2
n Exemplo 3
Exemplos
Biblioteca Source
Biblioteca Continuous
n Exemplo 3
Exemplos
Degrau começa Em t=0s
Degrau começa Em t=10s
Bloco Função de Transferência
n Exemplo 3
Exemplos
A amplitude do degrau é 1
n Exemplo 3 n Resultados
Exemplos
1º estado estacionário
2º estado estacionário
1ª perturbação
2ª perturbação
n Exemplo 4 n Considerando um sistema de controle de nível
mostrado abaixo. O nível de líquido é medido e a saída do transmissor de nível (LT) é enviada para um controlador feedback (LC) que controla o nível pelo ajuste da vazão volumétrica q2. A segunda vazão de fluido, q1, corresponde à variável perturbação (corrente chegando de outra unidade, não posso controlar essa corrente).
Exemplos q1
q3
q2
h
A
LT LC hm
n Exemplo 4 n Considerando uma válvula com a seguinte
função de transferência:
n Considerando um medidor com a seguinte função de transferência:
Exemplos
psimKG vv min/0103.0 3==
mpsiKG mm /24==
Exemplos
n Exemplo 4
Set-point
Valor medido
Erro: (sp - valor medido)
Exemplos
n Exemplo 4 Controlador Processo
Medidor
Válvula
Exemplos
n Exemplo 4 n Quando a função de transferência é
apenas uma constante, como no caso do medidor, pode-se representa-lá pelo bloco Gain.
mpsiKG mm /24==
Exemplos
n Exemplo 4 n O controlador é representado pelo bloco
PID Controller. Podemos regular a sua ação proporcional, integral e derivativa.
Exemplos
n Exemplo 5 n Controle PID de um motor DC
Exemplos
n Exemplo 6 n Veículo elétrico híbrido de célula a
combustível
top related