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 =⎥
⎦
⎤
⎢
⎣
⎡
=
2
3
C
⎥
⎦
⎤
⎢
⎣
⎡
=
10
21-
B⎥
⎦
⎤
⎢
⎣
⎡
=
12
01
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) 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
n  Exercícios
2. Utilizando os comandos zeros, ones e eye, construa as seguintes
matrizes
Exercícios
⎥
⎦
⎤
⎢
⎣
⎡
=⎥
⎦
⎤
⎢
⎣
⎡
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
10
01
1
1
111
111
111
0000
0000
0000
0000
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
n
aAnf )()( =
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
⎟
⎠
⎞
⎜
⎝
⎛
+= α
π
N
n
Anf
2
cos)(
.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
⎟
⎠
⎞
⎜
⎝
⎛
+= α
π
N
n
aAng n 2
cos)()(
.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 ! 0
x + y2
, x ! 0 e y<0
x2
+ y, x<0 e y ! 0
x2
+ 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 = %dn’, 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 = %dn’, 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 = %dn’, 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 = %dn’, 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 =
1
N
xi
i=1
N
!
s =
N xi
2
i=1
N
! " xi
i=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]=
1
N
x[n]e! jk"0n
n=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 %fn',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 qqq
dt
dh
A ρρρρ −+=
R
h
qq
dt
dh
A ρρρρ −+= 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 +
==
s
K
sG
sq
sh p
τ
1
)(
)(
)('
2'
2 +
==
s
K
sG
sq
sh p
τ onde:
AR
RK 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
==
==
AR
RKp
τ
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

Minicurso Matlab IVSEE 2013 UERJ

  • 1.
    Mini-curso de MATLAB IVSemana de Engenharia Elétrica Professores: Téo Revoredo – teorevoredo@uerj.br Michel Tcheou – mtcheou@uerj.br
  • 2.
    Referência Bibliográfica n  StephenJ. Chapman, “Programação em MATLAB para Engenheiros”, 2 edição, Cengage Learning. n  www.mathworks.com 2
  • 3.
    Sumário n  Introdução n  MatlabBásico n  Programação em Matlab n  Matemática Simbólica n  Interfaces gráficas e Toolbox n  Simulink 3
  • 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  Facilidadede 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 quemais? 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
  • 9.
  • 10.
  • 11.
    Introdução n  Informações dosistema 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
  • 12.
  • 13.
    Sumário – MatlabBásico n  Números e formatos n  Variáveis e funções n  Vetores n  Matrizes n  Operações n  Gráficos 13
  • 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 formatshort 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 armazenarvalores 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 queao 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 criaruma 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 comandowho 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 comandoclear “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
  • 26.
    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
  • 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 MATLABpode trabalhar com vetores de elementos, realizando operações sobre eles 33
  • 34.
    Vetores n  Definição devetores 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 aum 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 acessarmais 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 Matlabpermite a criação de matrizes com tantas dimensões quanto necessário para um dado problema 39
  • 40.
    Matrizes n  Definição dematrizes: 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 criarmatrizes 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 criarmatrizes 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 paramanipular 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
  • 45.
  • 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  Hierarquiade 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  Avalieas 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ãoResultado 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çãoLó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 ouxor 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 Al 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. Paraas 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
  • 59.
    n  Exercícios 2. Utilizandoos comandos zeros, ones e eye, construa as seguintes matrizes Exercícios ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ =⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 10 01 1 1 111 111 111 0000 0000 0000 0000 DCBA !zeros(4)! ! ones(3) ! ones(2,1) ! eye(2)! 59
  • 60.
    n  Pode-se gerargrá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 linhasno mesmo gráfico (seno e cosseno): n  >> Z = cos(X); >> plot(X,Y,X,Z) Gráficos 61
  • 62.
    n  Título parao 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
  • 63.
  • 64.
    n  Linhas degrade n  >> grid Gráficos 64
  • 65.
    Gráficos n  Cores eestilos 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');
  • 67.
  • 68.
  • 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
  • 70.
  • 71.
    n  Sequência exponencialReal 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
  • 72.
  • 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
  • 74.
    n  Sequência senoidal Exercícios CódigoMATLAB: 1.  n=-20:1:20; 2.  f=5*[cos(n*pi/8+pi/4)]; 3.  stem(n,f); 74
  • 75.
  • 76.
    n  Sequência senoidalmodulada 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
  • 77.
    n  Sequência senoidalmodulada 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
  • 78.
  • 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
  • 82.
  • 83.
    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
  • 84.
  • 85.
    n  Rotação emgrá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 decontorno 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
  • 87.
  • 88.
    n  Superfícies decontorno n  Função pcolor - Gráfico de pseudocores n  >> pcolor(X,Y,Z) Gráficos 88
  • 89.
  • 90.
    Sumário – Programaçãoem 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ériede 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-seo 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 comumde 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 Criarum 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 descript-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 Executarum 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 deFluxo 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 dedecisã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  Estruturade 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
  • 105.
    n  if Condição Verdadeira Falsa Executa umaação Testa a condição Estruturas de controle 105
  • 106.
    n  Pseudocódigo n  Sea 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
  • 107.
    n  elseif Condição Verdadeira Falsa Executa umaação Testa a condição Executa uma ação Estruturas de controle 107
  • 108.
    n  Pseudocódigo n  Sea 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  Permiteque 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ãoconstruçõ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
  • 115.
    n  while Condição Verdadeira Falsa Executa umaação Testa a condição Estruturas de controle 115
  • 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: Calculara 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: Calcularo 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: Calculara 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 Xwhile 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  Usadapara 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 dobreak 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 dobreak 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  Usadapara 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 doContinue 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 doContinue 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 dasé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 FourierComplexa 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 FourierComplexa 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 FourierComplexa 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 FourierComplexa 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 FourierComplexa 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 pelousuá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 pelousuá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 pelousuá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 pelousuá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 pelousuá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 pelousuá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 pelousuá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
  • 142.
  • 143.
    Matemática Simbólica n  OMatlab 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
  • 144.
    Matemática Simbólica n  OperaçõesMatemáticas n  >> syms x n  >> x+2*x n  >> x*x - 5*x^2 n  >> sqrt(x^2) n  >> cos(pi-x) 144
  • 145.
    Matemática Simbólica n  Substituiçãode 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
  • 146.
  • 147.
    Matemática Simbólica n  Gráficos n >> ezplot(sin(3*x)+2*x,[1 2]) 147
  • 148.
  • 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
  • 150.
    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
  • 151.
    Matemática Simbólica n  DerivadasParciais 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
  • 152.
    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
  • 153.
    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)
  • 154.
  • 155.
    Interface gráfica etoolboxes n  Braço robótico 155
  • 156.
    Interface gráfica etoolboxes n  Controle de ângulo de ataque aeronave 156
  • 157.
    Interface gráfica etoolboxes n  Voo de um 747 157
  • 158.
    Toolbox de Processamento deImagens n  Pixel - Região da Imagem 158 I = imread('lena.jpg'); imshow(I); impixelregion;
  • 159.
  • 160.
    Toolbox de Processamento deImagens 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');
  • 161.
  • 162.
    Toolbox de Processamento deImagens n  Inserindo um Ruído na imagem. 162 n = imnoise(I, 'gaussian'); imshow(n)
  • 163.
  • 164.
  • 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 ambientede 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çãono 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çãono 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çãono 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çãono 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
  • 172.
  • 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
  • 178.
    n  Exemplo 1 n Criando um subsistema Exemplos Sub-sistema
  • 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)
  • 183.
    n  Exemplo 1 n Girando um bloco Exemplos CTRL R
  • 184.
    n  Exemplo 1 n Combinando sinais Exemplos Bloco MUX Biblioteca Signals & Sys.
  • 185.
    n  Exemplo 1 n Combinando sinais Exemplos
  • 186.
    n  Exemplo 1 n Configurando... Exemplos
  • 187.
    n  Exemplo 2 n Sistema massa-mola-amortecedor Exemplos
  • 188.
    Exercício n  Faça usandoum arquivo de comando n  Faça usando o simulink
  • 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 τ
  • 194.
  • 195.
  • 196.
    n  Exemplo 3 Exemplos Degraucomeça Em t=0s Degrau começa Em t=10s Bloco Função de Transferência
  • 197.
    n  Exemplo 3 Exemplos Aamplitude do degrau é 1
  • 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==
  • 201.
    Exemplos n  Exemplo 4 Set-point Valormedido Erro: (sp - valor medido)
  • 202.
    Exemplos n  Exemplo 4Controlador Processo Medidor Válvula
  • 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.
  • 205.
    Exemplos n  Exemplo 5 n Controle PID de um motor DC
  • 206.
    Exemplos n  Exemplo 6 n Veículo elétrico híbrido de célula a combustível