Este documento apresenta um mini-curso de MATLAB com os seguintes tópicos: 1) Introdução ao MATLAB, 2) Matlab Básico, 3) Programação em Matlab, 4) Matemática Simbólica, 5) Interfaces gráficas e Toolbox, 6) Simulink. O documento inclui referências bibliográficas e informações sobre os professores.
4. 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
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 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
6. 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
7. 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
8. 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
11. 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
14. 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
15. 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
16. 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
17. 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
18. n Exemplo:
>> distancia = 100
distancia =
100
>> tempo = 3
tempo =
3
>> velocidade_media = distancia /
tempo
velocidade_media =
33.3333
Variáveis e funções
18
19. 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:');
20. 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));
21. 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
22. 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
23. 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
24. 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
25. 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
27. 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
28. 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
29. 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
30. 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
31. 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
32. 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
33. Vetores
n O MATLAB pode trabalhar com
vetores de elementos, realizando
operações sobre eles
33
34. 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
35. 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
36. 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
37. 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
38. 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
39. Matrizes
n O Matlab permite a criação de matrizes com
tantas dimensões quanto necessário para um
dado problema
39
40. 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
41. 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
42. 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
43. 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
44. 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
46. 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
47. 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
48. 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
49. 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
50. 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);
51. 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
52. 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
53. 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
54. 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
55. 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
56. 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
57. 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
58. 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) AB j) A/B k) A/B – eye(3)
l) A*inv(B) – eye(3)
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
073
110
013
113
210
321
BA
Exercícios
58
60. 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
61. n Duas linhas no mesmo gráfico (seno e
cosseno):
n >> Z = cos(X);
>> plot(X,Y,X,Z)
Gráficos
61
62. 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
65. 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
66. 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');
69. 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
71. 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
n
aAnf )()( =
Código MATLAB:
n=-10:1:10;
f =10*(.9).^n;
stem(n,f);
axis([-10 10 0 30]); 71
73. 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
⎟
⎠
⎞
⎜
⎝
⎛
+= α
π
N
n
Anf
2
cos)(
.4/π=a
73
76. 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
⎟
⎠
⎞
⎜
⎝
⎛
+= α
π
N
n
aAng n 2
cos)()(
.4/πα =
76
79. 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
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
80
81. 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
85. 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
86. 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
90. 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
91. 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
92. 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
93. 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
94. 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
95. 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
96. 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
97. 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
98. 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);
99. 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
100. 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
101. 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
102. 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
103. 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
104. 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
106. 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
108. 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
109. 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 ! 0
x + y2
, x ! 0 e y<0
x2
+ y, x<0 e y ! 0
x2
+ y2
, x<0 e y<0
"
#
$
$
%
$
$
110. 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
111. 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
112. 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
113. 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
114. 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
116. 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
117. 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
118. 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);
119. 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);
120. 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);
121. 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
122. 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
123. n Uso do break
Estruturas de controle
123
for k = 1:5
if k == 3;
break;
end
fprintf(‘k = %dn’, k);
end
disp(‘Fim do laço!’);
124. n Uso do break
Estruturas de controle
124
for k = 1:5
if k == 3;
break;
end
fprintf(‘k = %dn’, k);
end
disp(‘Fim do laço!’);
Saída:
k = 1
k = 2
Fim do laço!
125. 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
126. n Uso do Continue
Estruturas de controle
126
for k = 1:5
if k == 3;
continue;
end
fprintf(‘k = %dn’, k);
end
disp(‘Fim do laço!’);
127. n Uso do Continue
Estruturas de controle
127
for k = 1:5
if k == 3;
continue;
end
fprintf(‘k = %dn’, k);
end
disp(‘Fim do laço!’);
Saída:
k = 1
k = 2
k = 4
k = 5
Fim do laço!
128. 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 =
1
N
xi
i=1
N
!
s =
N xi
2
i=1
N
! " xi
i=1
N
!
#
$
%
&
'
(
2
N(N "1)
129. n Cálculo da série de Fourier na forma complexa
Série de Fourier Complexa
129
X[k]=
1
N
x[n]e! jk"0n
n=1
N
#
"0 =
2!
N
130. 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);
131. 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
132. 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)')
133. 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)')
134. 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)
135. 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
136. 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
137. 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)
138. 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);
139. 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 %fn',result);
140. 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
141. 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
143. 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
149. 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
165. Sumário – Simulink
n O que é?
n Variáveis e funções
n Vetores
n Matrizes
n Operações
n Gráficos
165
166. 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 é?
167. 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
168. 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
169. 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
170. 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
171. 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
173. n Exemplo 1
n Ajuste automático da escala do gráfico
Exemplos
174. n Exemplo 1
n Ajuste manual da escala do gráfico
Exemplos
175. n Exemplo 1
n Inserindo um ganho de -1 (invertendo o sinal) e
comparando com a senóide original
Exemplos
Biblioteca Math
176. 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.
177. n Exemplo 1
n Alterando os parâmetros da simulação
Exemplos
Tempo inicial
Tempo final
179. n Exemplo 1
n Editando um subsistema
Exemplos
Sub-sistema
180. 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
181. n Exemplo 1
n Configuração do bloco “to workspace”
Exemplos
Cria a variável
A no workspace
Formato da variável
182. n Exemplo 1
n E lá no Workspace...
Exemplos
>> plot(tout,A)
189. 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
190. 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 =
191. 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 qqq
dt
dh
A ρρρρ −+=
R
h
qq
dt
dh
A ρρρρ −+= 21
192. 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 +
==
s
K
sG
sq
sh p
τ
1
)(
)(
)('
2'
2 +
==
s
K
sG
sq
sh p
τ onde:
AR
RK p
=
=
τ
193. 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
==
==
AR
RKp
τ
198. n Exemplo 3
n Resultados
Exemplos
1º estado
estacionário
2º estado
estacionário
1ª
perturbação
2ª
perturbação
199. 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
200. 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==
203. 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==
204. Exemplos
n Exemplo 4
n O controlador é representado pelo bloco
PID Controller. Podemos regular a sua
ação proporcional, integral e derivativa.