minicursomatlabivsee2013semvideo-130627183525-phpapp01
DESCRIPTION
minicursomatlabivsee2013semvideo-130627183525-phpapp01TRANSCRIPT
-
Mini-curso de MATLAB IV Semana de Engenharia Eltrica
Professores: To Revoredo [email protected] Michel Tcheou [email protected]
-
Referncia Bibliogrfica
n Stephen J. Chapman, Programao em MATLAB para Engenheiros, 2 edio, Cengage Learning.
n www.mathworks.com
2
-
Sumrio
n Introduo n Matlab Bsico n Programao em Matlab n Matemtica Simblica n Interfaces grficas e Toolbox n Simulink
3
-
Introduo
n MATLAB acrnimo de MATrix LABoratory n Foi desenvolvido inicialmente na dcada de
70 nas Universidades do Novo Mxico e Stanford.
n Destinado a princpio a cursos de teoria matricial, lgebra linear e anlise numrica.
n Voltado basicamente para matemtica numrica.
4
-
Introduo
n Hoje, um ambiente de programao de alto nvel para aplicaes Cientficas e de Engenharia.
n Facilidades n Oferece um amplo leque de bibliotecas de
funes pr-definidas. n Muito amigvel em funcionalidades
grficas para Visualizao de Dados.
5
-
Introduo
n Hoje, um ambiente de programao de alto nvel para aplicaes Cientficas e de Engenharia.
n Facilidades n Amplamente divulgado em Universidades
e laboratrios de pesquisa. n Conveniente para o desenvolvimento de
prottipos.
6
-
Introduo
n Vantagens n Facilidade de Uso n Independncia de Plataforma n Funes Predefinidas n Interface Grfica de Usurio n Compilador MATLAB
n Desvantagens n Linguagem Interpretada n Custo
7
-
Introduo
n O que mais? n Lgica fuzzy n Redes Neurais n Processamento de
sinais n Aquisio de dados n Banco de Dados n Finanas
n Mapas n Controle Robusto n Animao n Simulao de
sistemas dinmicos (Simulink)
n Etc
8
-
Introduo
n Tela principal
9
-
Introduo
n Tela principal
10
-
Introduo
n Informaes do sistema n computer Tipo de computador onde
o MATLAB est operando n version Verso do MATLAB n ver Detalhes da verso do MATLAB e
dos toolboxes n license Apresenta a licena do
produto
11
-
MATLAB BSICO
12
-
Sumrio Matlab Bsico
n Nmeros e formatos n Variveis e funes n Vetores n Matrizes n Operaes n Grficos
13
-
Nmeros e formatos
n O MATLAB reconhece vrios tipos de nmeros: 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 clculos so feitos em preciso dupla (Double precision)
14
-
Nmeros e formatos
n O comando format usado para controlar a impresso dos nmeros
n O n de dgitos apresentados no tem a ver com a exatido
n Para formatar a visualizao: n format short e: Notao cientfica com 5 casas
decimais n format long e: Notao cientfica com 15 casas
decimais n format bank: Colocao de dois dgitos significativos
nas casas decimais
15
-
Comando pi Comentrios
format short 3.1416 5 dgitos format long 3.14159265358979 16 dgitos format short e 3.1416e+000 5 dgitos + expoente
format long e 3.141592653589793e+000 16 dgitos + 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 razo aproximada
Nmeros e formatos
n Formatos
16
-
n Pode-se armazenar valores em variveis no MATLAB.
n Variveis devem ter um nome nico, comeando com uma letra e podem conter dgitos ou o smbolo _ (underline).
n O MATLAB distingue letras maisculas de minsculas.
Variveis e funes
17
-
n Exemplo: >> distancia = 100 distancia = 100 >> tempo = 3 tempo = 3 >> velocidade_media = distancia / tempo
velocidade_media = 33.3333
Variveis e funes
18
-
Variveis e funes
n Criando e iniciando variveis: n Expresses de atribuio
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:');
-
Variveis e funes
n Criando e iniciando variveis: n Expresses de atalho
n Funes 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 varivel, o smbolo = e o seu valor, o MATLAB armazena a varivel e a apresenta na tela.
n Para suprimir a exibio da varivel deve-se adicionar um ponto-e-vrgula ao final do comando.
Variveis e funes
21
-
n Ao criar uma expresso sem armazen-la em uma varivel, o MATLAB a salva automaticamente na varivel ans.
Variveis e funes
22
-
n O comando who mostra todas as variveis armazenadas durante uma sesso do MATLAB. >> who Your variables are: ans tempo Distancia velocidade_media
Variveis e funes
23
-
n O comando clear apaga uma ou mais variveis. >> clear tempo - Apaga somente a
varivel tempo. >> clear velocidade_media distancia
- Apaga as variveis velocidade_mdia e distancia.
>> clear - Apaga TODAS as variveis da sesso.
Variveis e funes
24
-
Variveis e funes
n Variveis especiais n ans - Nome de varivel padro usado para
resultados. n pi - 3.1416 n eps - Menor nmero que somado a 1, cria
um nmero maior do que 1. n inf - Infinito. n NaN - No nmero. n i e j - n realmin - menor nmero real positivo n realmax - maior nmero real positivo
1
25
-
Variveis e funes
n Funes 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
-
Variveis e funes
n Exemplos >> sin(pi/2) ans = 1 >> cos(pi/4)^2 ans = 0.5000 >> asin(1)*180/pi ans = 90
27
-
Variveis e funes
n Recuperando comandos n Para evitar redigitao, o Matlab
armazena todos os comandos do usurio durante uma sesso.
n Para acessar os comandos anteriores basta pressionar a tecla (seta para cima) seguidas vezes at encontrar o comando desejado.
n O comando ento pode ser editado e executado novamente. 28
-
Variveis e funes
n Ajuda n Ajuda e informao no MatLab podem
ser obtidas de vrias formas n Na linha de comando usando help tpico n Numa janela de ajuda separada no menu
de help n No helpdesk MatLab mantido no disco ou
CD-ROM ou na internet
29
-
Variveis e funes
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
-
Variveis e funes
n funo disp(str) n >> str = ['The value of pi = ' num2str(pi)]; n >> disp (str);
n funo 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
Formatao Resultados
%d Exibe valor como inteiro
%e Exibe valor no formato cientfico
%f Exibe valor como ponto flutuante
\n Muda de linha
-
Variveis e funes
n Salvando sees n Para salvar uma sesso do MATLAB,
deve-se usar a opo Save Workspace As no menu File.
n Para abrir uma sesso salva anteriormente deve-se utilizar a opo Open no menu File.
n possvel usar os comandos load e save
32
-
Vetores
n O MATLAB pode trabalhar com vetores de elementos, realizando operaes sobre eles
33
-
Vetores
n Definio 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
saltoe o terceiro o valor final. 34
-
Vetores
n Funo linspace - Gera um vetor linearmente espaado a partir de um valor inicial, um valor final e um nmero de elementos. n >> X = linspace(0,pi,6) X = 0 0.6283 1.2566 1.8850 2.5133 3.1416
35
-
Vetores
n Funo logspace - Gera um vetor logaritmicamente espaado a partir de uma potncia inicial, uma potncia 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 criao de matrizes com tantas dimenses quanto necessrio para um dado problema
39
-
Matrizes
n Definio 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 so separados por
espao em branco e as linhas so separadas por ponto-e-vrgula.
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 Funes para manipular matrizes n eye matriz identidade n zeros matriz composta de 0s n ones matriz composta de 1s n rand matriz de nmeros aleatrio n diag matriz diagonal n Rot90 rotao de uma matriz em 90 graus n etc
Matrizes
43
-
n Operadores aritimticos n Forma Geral: A op B
n + Soma Estrutural e Matricial n - Subtrao Estrutural e Matricial n * Multiplicao Matricial n / Diviso Matricial Direita n \ Diviso Matricial Esquerda n ^ Expoente Matricial n Operador de Transposio
Operaes Aritmticas
44
-
5D =
=23
C
=
1 0 2 1-
B
=
1 20 1
A
Operaes Aritmticas
n Operadores aritmticos
45
-
n A + B 0 2 2 2
n A B 2 -2 2 0
n A + C Operao ilegal
n A + D 6 5 7 6
Operaes Aritmticas
n Operadores aritmticos
46
-
n A * B -1 2
2 5
n A * C 3 8
n A .* B -1 0 0 1
n A .* C Operao ilegal
Operaes Aritmticas
n Operadores aritmticos
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
Operaes Aritmticas
n Operadores aritmticos
48
-
Operaes Aritmticas
n Hierarquia de operaes aritmticas
49
Precedncia Operao
1 O contedo de todos os parnteses avaliado, a partir dos parnteses mais internos em direo aos mais externos
2 Todos os expoentes so avaliados, da esquerda para a direita
3 Todas as multiplicaes e divises so avaliadas, da esquerda para a direita.
4 Todas as somas e subtraes so avaliadas, da esquerda para a direita
distance = 0.5*accel*time^2 distance = 0.5*accel*(time^2) distance = (0.5*accel*time)^2
-
Operaes Aritmticas
n Avalie as hierarquias de operaes
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 Operao == Igual a ~= Diferente de > Maior que >= Maior que ou igual a < Menor que
-
n Operadores relacionais n Os operadores = so usados para
comparar a parte real dos operandos. n Os operadores == e ~= so usados para
comparar a parte real e imaginria dos operandos.
Operaes Relacionais
52
-
n Operadores relacionais Expresso Resultado
5 > 3 1 AC > BA 0 1 a > b 1 0 1 + j = [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]
Operaes Relacionais
53
-
n Operadores lgicos
Operao Lgica Binria Operao Lgica Unria A op B op A
Operador Operao
& E lgico l OU lgico xor Ou exclusivo lgico ~ No lgico
Operaes Lgicas
54
-
Entradas e ou xor no 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
Operaes Lgicas
n Operadores lgicos
55
-
n Operadores lgicos n Precedncia dos operadores
1. Os operadores aritmticos so avaliados primeiro. 2. Os operadores relacionais so avaliados da esquerda para a direita. 3. Todos os operadores ~ so avaliados. 4. Todos os operadores & so avaliados. 5. Todos os operadores I so avaliados.
OBS: Sempre use parnteses para indicar a ordem
correta desejada de avaliao de uma expresso.
Operaes Lgicas
56
-
Expresso 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
Operaes Lgicas
57
-
n Exerccios 1. Para as matrizes A e B, definidas a baixo, execute as seguintes operaes 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
Exerccios
58
-
n Exerccios 2. Utilizando os comandos zeros, ones e eye, construa as seguintes matrizes
Exerccios
=
=
=
=1001
11
111111111
0000000000000000
DCBA
!zeros(4)! ! ones(3) ! ones(2,1) ! eye(2)!
59
-
n Pode-se gerar grficos a partir de matrizes.
n Exemplo n >> X = linspace(0,2*pi,100);
>> Y = sin(X); >> plot(X,Y)
Grficos
60
-
n Duas linhas no mesmo grfico (seno e cosseno): n >> Z = cos(X);
>> plot(X,Y,X,Z)
Grficos
61
-
n Ttulo para o grfico: >> 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')
Grficos
62
-
n Resultado:
Grficos
63
-
n Linhas de grade n >> grid
Grficos
64
-
Grficos
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
-
Grficos
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');
-
Grficos
n Ferramentas de edio
67
-
Grficos
n Edio de desenhos
68
-
n Sequncia rampa n Uma sequncia rampa transladada com declive B
definida como n Sequncia rampa unitria e sequncias de rampa
transladada
)()( 0nnBng =
Cdigo MATLAB : n=-10:1:20; f=2*(n-10); stem(n,f);
Exerccios
69
-
Exerccios
70
-
n Sequncia exponencial Real n Definida como: n Exemplo para A = 10 e a = 0.9, a sequncia
aproxima-se de zero quando n tende para infinito e aproxima-se de mais infinito quando n tende para menos infinito
Exerccios
naAnf )()( =
Cdigo MATLAB: n=-10:1:10; f =10*(.9).^n; stem(n,f); axis([-10 10 0 30]); 71
-
Exerccios
72
-
n Sequncia senoidal n Uma sequncia senoidal pode ser descrita como:
n Onde A um nmero real positivo (amplitude), N o perodo, e a a fase.
n Exemplo: n A = 5, N = 16 n e
Exerccios
+= NnAnf 2cos)(
.4/=a
73
-
n Sequncia senoidal
Exerccios
Cdigo MATLAB: 1.n=-20:1:20; 2.f=5*[cos(n*pi/8+pi/4)]; 3.stem(n,f);
74
-
Exerccios
75
-
n Sequncia senoidal modulada exponencialmente n Obtm-se atravs da multiplicao de uma sequncia
exponencial por uma sequncia senoidal. n Pode ser descrita por :
n Exemplo: n A = 10, N = 16, a = 0.9 n
Exerccios
+= NnaAng n 2cos)()(
.4/ =76
-
n Sequncia senoidal modulada exponencialmente
Exerccios
Cdigo 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
-
Exerccios
78
-
n Grficos 3D n Grficos de Linhas - Funo plot3
>> X = linspace(0, 10*pi, 300); >> Y = sin(X); >> Z = cos(X); >> plot3(X,Y,Z) >> grid
Grficos
79
-
n Grficos 3D n Grficos de Superfcies - funco mesh
>> v = linspace(-10,10,20); >> [X, Y] = meshgrid(v,v); >> Z = X.^2 + Y.^2; >> mesh(X,Y,Z)
n Utilizamos a funo meshgrid para gerar X e Y como matrizes com valores repetidos que so utilizadas para gerar a matriz Z.
Grficos
80
-
n Grficos 3D n Grficos de Superfcies - funco mesh
>> v = linspace(-10,10,20); >> [X, Y] = meshgrid(v,v); >> Z = X.^2 + Y.^2; >> mesh(X,Y,Z)
n Utilizamos a funo meshgrid para gerar X e Y como matrizes com valores repetidos que so utilizadas para gerar a matriz Z.
Grficos
81
-
n Resultado
Grficos
82
-
n Grficos 3D n Funo mesh - superfcies em rede n Funo surf - superfcies coloridas (opacas) n Funo surfl - superfcies coloridas com uma
fonte de luz. n Exemplo 1: >> surf(X,Y,Z) n Exemplo 2: >> colormap(gray) >> surfl(X,Y,Z)
Grficos
83
-
n Resultado
Grficos
84
-
n Rotao em grficos 3D n Para rotacionar um grfico 3D primeiro clique no
boto presente na janela do grfico. n Aps isto, clique sobre o grfico e mantenha o
boto do mouse pressionado. n Uma caixa ir aparecer indicando a direo do
grfico. n Agora, basta movimentar o mouse para ajustar a
posio desejada do grfico.
Grficos
85
-
n Superfcies de contorno n Funo contour - Gera superfcies de
contorno. >> contour(X,Y,Z,30)
n Os trs primeiros parmetros so as matrizes com os dados para os grficos. O quarto parmetro o nmero de contornos.
Grficos
86
-
n Resultado
Grficos
87
-
n Superfcies de contorno n Funo pcolor - Grfico de pseudocores
n >> pcolor(X,Y,Z)
Grficos
88
-
PROGRAMAO EM MATLAB
89
-
Sumrio Programao em Matlab
n Projeto de programa n Arquivo de comando n Estruturas de controle n Funes definidas pelo usurio
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, possvel resolver a situao 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 cdigo;
91
-
Projeto de Programa
n Projeto Top-down
92
Estabelea o problema que voc est tentando resolver
Defina as entradas e sadas requeridas
Projete o algoritmo
Converta o algoritmo em MATLAB
Teste o programa MATLAB resultante
Incio
Fim
-
n Algoritmo n Srie de aes executadas em uma ordem
especifica. n Pseudocdigo
n Linguagem artificial e informal de representar o cdigo de um programa.
n til para desenvolver algoritmos que sero convertidos em programas estruturados no MATLAB.
Projeto de Programa
93
-
Projeto de Programa
n Exemplo de Pseudocdigo
94
Cdigo 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 usurio 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 execuo 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 difceis deve-se utilizar o script-file ou M-file, que tambm conhecido como arquivo de comando ou arquivo M.
Arquivos de comando
95
-
n Erro comum de Programao: Os nomes dos arquivos de comando precisam sempre terminar com a extenso .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 preferncia a salvar o arquivo no diretrio 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 extenso .m. Feito isso o MATLAB gera o executvel 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 executvel 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 criao 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 operaes futuras. Como em outras linguagens, o MATLAB possui recursos que permitem o controle de fluxo de execuo de comandos, com base em estruturas de tomada de decises. Sero apresentadas a seguir as seguintes estruturas de controle: n Ramificaes: if, elseif, switch n Laos: while, for
Estruturas de controle
102
-
n Simbologia
Smbolo de deciso
Indica que aes sero executadas
Inicio e fim de uma estrutura de uma controle
Estruturas de controle
103
-
n if n Estrutura de seleo para escolha de cursos de ao
especficos. n A estrutura de seleo if executa uma ao indicada
s quando a condio true (Verdadeira); caso contrrio, a ao saltada.
Estruturas de controle
104
-
n if
Condio Verdadeira
Falsa
Executa uma ao
Testa a condio
Estruturas de controle
105
-
n Pseudocdigo n Se a nota do estudante for maior ou igual que 7.0
Imprima Aprovado
n Cdigo no Matlab if nota >= 7
fprintf(Aprovado); end
Estruturas de controle
106
-
n elseif
Condio Verdadeira Falsa
Executa uma ao
Testa a condio
Executa uma ao
Estruturas de controle
107
-
n Pseudocdigo n Se a nota do estudante for maior ou igual que 7.0
Imprima Aprovado seno Imprima Reprovado
n Cdigo no Matlab if nota >= 7
fprintf(Aprovado); else fprintf(Reprovado); end
Estruturas de controle
108
-
Estruturas de controle
n Exerccio: Escreva um programa MATLAB para avaliar uma funo f(x,y) para quaisquer dos valores x e y especificados pelo usurio. A funo f(x,y) definida a seguir
109
f (x, y) =
x + y, x ! 0 e y ! 0x + y2, x ! 0 e y
-
n switch n Permite que um programador selecione um
bloco de cdigo a ser executado com base no valor de um nico inteiro, caractere ou expresso lgica
Estruturas de controle
110
-
Estruturas de controle
111
switch (expr_switch) case expr_case1 Declarao 1 Declarao 2 ... case expr_case2 Declarao 1 Declarao 2 ... ... otherwise, Declarao 1 Declarao 2 ... end
Bloco 1
Bloco 2
Bloco N
switch (expr_switch) case {expr_case1, expr_case2, expr_case3} Declarao 1 Declarao 2 otherwise, Declarao 1 Declarao 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 Laos so construes MATLAB que nos permitem executar uma sequncia de declaraes mais de uma vez.
n Existem dois tipos de laos: n while n for
Estruturas de controle
113
-
n while: um bloco de declaraes que se repete indefinidamente, enquanto uma condio for satisfeita.
A forma geral do while : while expresso ... ... Bloco de cdigo ... end
Estruturas de controle
114
-
n while
Condio Verdadeira
Falsa
Executa uma ao
Testa a condio
Estruturas de controle
115
-
n Lao for : Executa um bloco de declaraes durante um nmero especificado de vezes.
for indice = expresso Declarao 1 .... Corpo Declarao n
end
Estruturas de controle
116
-
cont = 1
cont
-
n Exemplo: Calcular a soma dos 10 primeiros inteiros.
10987654321 +++++++++=Soma
Estruturas de controle
118
soma = 0; % Inicializa a varivel 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 nmero n.
Estruturas de controle
119
n = 5; fatorial = 1; % Inicializa a varivel soma com zero for k = 1:n % Lao de repetio: n vezes fatorial = fatorial*k; % Clculo 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 varivel 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 cdigo
quando no desconhecido o nmero de iteraes do lao.
n for: utilizado para repetir um trecho de cdigo quando conhecido o nmero de iteraes do lao.
Estruturas de controle
121
-
n Break n Usada para controlar a operao dos laos for e while n Encerra a execuo do lao e passa o controle para a
prxima declarao logo aps o fim do lao.
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 lao!);
-
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 lao!);
Sada: k = 1 k = 2 Fim do lao!
-
n Continue n Usada para controlar a operao dos laos for
e while n Termina a passagem corrente pelo lao e
retorna o controle para o incio do lao.
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 lao!);
-
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 lao!);
Sada: k = 1 k = 2 k = 4 k = 5 Fim do lao!
-
Estruturas de controle
n Exerccio: Implemente um algoritmo que calcule a mdia e o desvio-padro de um conjunto de dados de entrada. n dados de entrada: x = [3 4 5 -1]
n mdia:
n desvio-padro:
128
x = 1N xii=1
N
!
s =N xi2
i=1
N
! " xii=1
N
!#
$%
&
'(
2
N(N "1)
-
n Clculo da srie de Fourier na forma complexa
Srie de Fourier Complexa
129
X[k]= 1N x[n]e! jk"0n
n=1
N
#
"0 =2!N
-
Srie 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);
-
Srie 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
-
Srie 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)')
-
Srie 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)')
-
Srie 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)
-
Funes definidas pelo usurio
n Um programa pode ser dividido em subtarefas;
n possvel codificar cada subtarefa como uma funo separada;
n Cada funo pode ser testada e depurada de forma independente das outras funes do programa;
135
-
Funes definidas pelo usurio
n Benefcios n Teste independente das subtarefas; n Cdigo reutilizvel; n Isolamento de efeitos colaterais indesejados;
n Uma funo MATLAB tipo especial de arquivo M executado em um espao de trabalho independente;
136
-
Funes definidas pelo usurio
n Forma geral
137
function [outarg1, outarg2, ...] = fname(inarg1, inarg2, ...) % H1 comment line % Other comment lines ... (Executable code) ... (return) (end)
-
Funes definidas pelo usurio
n Exemplo funo 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);
-
Funes definidas pelo usurio
n Exemplo Script que chama a funo 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);
-
Funes definidas pelo usurio
n Exerccio: A localizao de um ponto cartesiano pode ser expressa por coordenadas retangulares (x,y) ou polares (r,), como ilustrado abaixo.
140
-
Funes definidas pelo usurio
n Exerccio (continuao): A relao entre esses dois conjuntos de coordenadas dada por
n Escreva duas funes rect2polar e polar2rect, que convertam coordenadas de retangular para polar, e vice-versa, com expresso em graus
141
-
MATEMTICA SIMBLICA
142
-
Matemtica Simblica
n O Matlab permite o clculo simblico atravs do Toolbox de Matemtica Simblica;
n Esse toolbox utiliza o kernel do MAPLE;
n O Matlab realiza todas as operaes elementares entre expresses simblicas utilizando a sintaxe comum
143
-
Matemtica Simblica
n Operaes Matemticas n >> syms x n >> x+2*x n >> x*x - 5*x^2 n >> sqrt(x^2) n >> cos(pi-x)
144
-
Matemtica Simblica
n Substituio de varivel em uma expresso simblica n >>subs(4*x^2-4,x,2)
n Soluo simblica de equaes algbricas (ex: x^2-2*x+1 = 0) n >>solve(x^2-2*x+1)
145
-
Matemtica Simblica
n Grficos n >> ezplot(sin(3*x)+2*x)
146
-
Matemtica Simblica
n Grficos n >> ezplot(sin(3*x)+2*x,[1 2])
147
-
Matemtica Simblica
n Grficos n >> ezsurf(2*x^2-3*y^2-4)
148
-
Matemtica Simblica
n Limite n >> syms x n >> limit(sin(x-1)/(1-x),x,1)
n Srie n soma dos 100 primeiros termos de
n >> symsum((4*n+1)/(n+3),n,1,100)
149
-
Matemtica Simblica
n Derivada n >> syms x n >> diff(sin(2*x))
n Derivada de ordem superior n >> diff(sin(2*x),2)
150
-
Matemtica Simblica
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
-
Matemtica Simblica
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
-
Matemtica Simblica
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 GRFICAS E TOOLBOXES
154
-
Interface grfica e toolboxes
n Brao robtico
155
-
Interface grfica e toolboxes
n Controle de ngulo de ataque aeronave
156
-
Interface grfica e toolboxes
n Voo de um 747
157
-
Toolbox de Processamento de Imagens
n Pixel - Regio 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 Rudo na imagem.
162
n = imnoise(I, 'gaussian'); imshow(n)
-
Toolbox de Processamento de Imagens
163
-
SIMULINK
164
-
Sumrio Simulink
n O que ? n Variveis e funes n Vetores n Matrizes n Operaes n Grficos
165
-
n Um ambiente de modelagem e simulao de sistemas dinmicos e embarcados.
n Prov uma interface grfica interativa e um conjunto de bibliotecas de blolcos configurveis que permitem o projeto, a simulao, a implementao e o teste de uma grande variedade de sistemas variantes no tempo, inclundo: comunicaes, controle, processamento de sinais, de vdeo e de imagens.
O que ?
-
Iniciando o Simulink
1. Digitar simulink no prompt de comando
2. Clicar no boto na barra de ferramentas
ou
ou 3. Navegar pelo boto iniciar do MATLAB
Programao
-
n A programao no Simulink segue uma interface grfica intuitiva e fcil de usar:
1. Escolha os blocos funcionais desejados na biblioteca;
Programao
-
n A programao no Simulink segue uma interface grfica intuitiva e fcil de usar:
2. Arraste-os para o espao de trabalho (rea de programao)
Programao
-
n A programao no Simulink segue uma interface grfica intuitiva e fcil de usar:
3. Conecte-os da maneira adequada para obter o comportamento desejado
Programao
-
n A programao no Simulink segue uma interface grfica intuitiva e fcil de usar:
4. Ajuste os parmetros da simulao; 5. Execute o programa.
Programao
-
Exemplos
Biblioteca Math
Biblioteca Sources
n Exemplo 1 n Criando uma senide com nvel DC
-
n Exemplo 1 n Ajuste automtico da escala do grfico
Exemplos
-
n Exemplo 1 n Ajuste manual da escala do grfico
Exemplos
-
n Exemplo 1 n Inserindo um ganho de -1 (invertendo o sinal) e
comparando com a senide original
Exemplos
Biblioteca Math
-
n Exemplo 1 n Configurao dos parmetros do bloco product
Exemplos
Nmero de termos da multiplicao.
Multiplicao de matrizes ou termo a termo.
-
n Exemplo 1 n Alterando os parmetros da simulao
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 varivel A no workspace
Biblioteca Sinks
-
n Exemplo 1 n Configurao do bloco to workspace
Exemplos
Cria a varivel A no workspace
Formato da varivel
-
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
-
Exerccio
n Faa usando um arquivo de comando n Faa usando o simulink
-
n Exemplo 3 n Simulao de um tanque de nvel sob a
influncia de uma perturbao degrau na vazo da alimentao.
Exemplos
q1
q3
q2
h
A
-
n Exemplo 3 n Assumindo
n Densidade do lquido e a rea da seo
transversal do tanque (A) constantes.
n Relao entre a vazo e a carga linear:
Exemplos
Rhq /3 =
-
n Exemplo 3 n O modelo descrito por uma equao de
balano transiente de massa no tanque:
n Substituindo a hiptese II na equao:
Exemplos
321 qqqdtdhA +=
Rhqq
dtdhA += 21
-
n Exemplo 3 n Introduzindo as variveis-desvio e aplicando a
Transformada de Laplace, chega-sa s funes de transferncia:
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 dimetro
e uma vlvula na sada na linha atuando sob uma resistncia linear (R) de 6.37 min/m2.
n Sero simulados um degrau de 1 ft3 na vazo q1 a partir do tempo igual a 0 min (step) e um degrau de 1 ft3 na vazo 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 comea Em t=0s
Degrau comea Em t=10s
Bloco Funo de Transferncia
-
n Exemplo 3
Exemplos
A amplitude do degrau 1
-
n Exemplo 3 n Resultados
Exemplos
1 estado estacionrio
2 estado estacionrio
1 perturbao
2 perturbao
-
n Exemplo 4 n Considerando um sistema de controle de nvel
mostrado abaixo. O nvel de lquido medido e a sada do transmissor de nvel (LT) enviada para um controlador feedback (LC) que controla o nvel pelo ajuste da vazo volumtrica q2. A segunda vazo de fluido, q1, corresponde varivel perturbao (corrente chegando de outra unidade, no posso controlar essa corrente).
Exemplos q1
q3
q2
h
A
LT LC hm
-
n Exemplo 4 n Considerando uma vlvula com a seguinte
funo de transferncia:
n Considerando um medidor com a seguinte funo de transferncia:
Exemplos
psimKG vv min/0103.03==
mpsiKG mm /24==
-
Exemplos
n Exemplo 4
Set-point
Valor medido
Erro: (sp - valor medido)
-
Exemplos
n Exemplo 4 Controlador Processo
Medidor
Vlvula
-
Exemplos
n Exemplo 4 n Quando a funo de transferncia
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 ao proporcional, integral e derivativa.
-
Exemplos
n Exemplo 5 n Controle PID de um motor DC
-
Exemplos
n Exemplo 6 n Veculo eltrico hbrido de clula a
combustvel