1. MATLAB/Simulink/CVX
Ramon Mayor Martins - mayor@mtel.inatel.br
Ricardo Augusto da Silva Junior - ricardojunior@inatel.br
Rodrigo Cogliatti – rodrigocogliatti@hotmail.com
2. PARTE 3:
• Declaração de Variáveis
• Números,Vetores e Matrizes
• Operadores e Funções
• Comandos Básicos
• Vetores Sequenciais
• Funções Matriciais
PARTE 1 :
• Histórico
MATLAB/Simulink/CVX
PARTE 2:
• Overview Matlab
• Comparações
• Potencialidade
PARTE 4:
• Operadores Booleanas
• Condicionais
• Controles de Fluxos (Laços)
• Scripts e Funções
• Gráficos
Segunda-Feira: Introdução ao MATLAB Terça-Feira: Programação no MATLAB
PARTE 5:
Técnicas de Programação
3. PARTE 3:
• Declaração de Variáveis
• Números,Vetores e Matrizes
• Operadores e Funções
• Comandos Básicos
• Vetores Sequenciais
• Funções Matriciais
PARTE 1 :
• Histórico
MATLAB/Simulink/CVX
PARTE 2:
• Overview Matlab
• Comparações
• Potencialidade
PARTE 4:
• Operadores Booleanas
• Condicionais
• Controles de Fluxos (Laços)
• Scripts e Funções
• Gráficos
Segunda-Feira: Introdução ao MATLAB Terça-Feira: Programação no MATLAB
PARTE 5:
Técnicas de Programação
5. Histórico
O Criador!
Cleve Moler
• Ph.D em Matemática pela Universidade de Stanford
• Professor de Matemática e Ciencia da Computação
em Stanford
• Autor do LINPACK e EISPACK (bibliotecas de FORTRAN
para calculos numéricos)
• Fundador da Mathwork
• Criador do MATLAB
6. Histórico
A Inspiração!
James Hardy Wilkinson (1919-1986)
• Foi a maior autoridade em analises numéricas
e calculos matriciais.
• Pesquisou Algoritmos de Autovalores
• Suas implementações em ALGOL levaram
diretamente ao EISPACK (fundamento
matemático do primeiro MATLAB)
7. Histórico
A Inspiração!
James Hardy Wilkinson (1919-1986)
• No começo da 2ª Guerra Mundial juntou-se
ao time de matemáticos em Cambridge.
• Calculavam trajetórias de projéteis de
artilharia usando calculadoras mecânicas.
• Tambem pesquisou sobre a Termodinamica
das Explosoes.
8. Histórico
A Inspiração!
James Hardy Wilkinson (1919-1986)
• Com o fim da 2ª guerra, Jim transferiu-se para
o NPL (National Physical Laboratory), onde se
tornou assistente de Alan Turing.
• Jim lecionava cursos de métodos numéricos
na Universidade de Michigan.
• Descreveu as Matrizes Tridiagonais ( hoje
conhecidas como Matrizes Wilkinson).
9. Histórico
A Inspiração!
James Hardy Wilkinson (1919-1986)
• Muito da pesquisa de Wilkinson foi publicado em uma
série de artigos na revista Numerische Mathematik no final
dos anos 60
• Os artigos descreviam algoritmos para computacao de
matrizes e incluia programas em ALGOL 60.
• Os codigos em ALGOL fornecem uma descricao legivel das
tecnicas que se encontram na biblioteca do MATLAB
• Wilkinson nao esta diretamente envolvido com o
MATLAB, mas com certeza foi a principal fonte
10. Histórico
3 Homens chave na origem do
MATLAB!
George Forsythe
John Todd
• 2 Matemáticos da INA (Institute for
Numerical Analysis), trabalharam em um dos
primeiros computadores dos USA, em
meados de 1957.
• Quando INA foi dissolvido, George Forsythe
foi para Stanford e Todd foi para a Caltech
11. Histórico
3 Homens chave na origem do MATLAB!
George Forsythe
John Todd
• Cleve Moler foi para a Caltech em 1957 e conheceu John Todd
• Sob orientação de John Todd , Cleve Moler estudou as matrizes de Hilbert
• Cleve Moler , escreveu seus programas usando fita, e queria calcular a inversa de H
• Ao se graduar, John Todd recomendou Stanford para Cleve trabalhar com Forsythe.
• Forsythe estava criando o departamento de ciencia da computação em Stanford
(um dos primeiros do mundo).
12. Histórico
A Origem do MATLAB !
• Em 1962, Cleve Moler criou um programa
em FORTRAN para resolver sistemas de
equações lineares (em cartão perfurado)
• Em 1965 sob orientação de Forsythe,
defendeu a tese “Finite Difference Methods
for the Eigenvalues of Laplaces Operator”,
no qual Forsythe e Wilkinson trabalharam
mais cedo , como L-Shaped Membrane.
• QUE É O LOGO DA MATHWORKS !!!
14. Histórico
A Origem do MATLAB !
• -EM 1967 Forsythe e Cleve publicaram um livro sobre Matriz computacional;, que
continha programas em Algol, Fortran e PL/I para resolver sistemas de equacoes
lineares.
• -Pesquisadores da Argonnes National Lab, traduziram os codigos para calculo de
matriz de autovalores de Wilkinson em FORTRAN, produzindo o EISPACK, seguido
para LINPACK, um pacote de programas em FORTRAN para resolver equacoes
lineares.
15. Histórico
A Origem do MATLAB !
• Cleve queria possibilitar o uso de novos pacotes sem escrever programas em
FORTRAN, então estudou o livro de Niklaus Wirth para aprender sobre analise de
linguagens de computador.
• Em 1970, usando a metodologia de Niklaus e porções do LINPACK e EISPACK Cleve
desenvolveu a primeira versão do MATLAB.
• -Com apenas 80 funções, ainda sem m-files ou toolboxes, se vc quisesse adicionar
funcoes, teria que modificar o codigo fonte FORTRAN e recompilar.
16. Histórico
A Origem do MATLAB !
Niklaus Wirth, foi o
inventor e
desenvolvedor da
linguagem PASCAL
Help
command
17. Histórico
O Primeiro MATLAB !
• -O primeiro Matlab rodou em um
Tektronix 4081, que Argonne Lab
adquiriu em 1978, tinha 64k d
memoria.
• -Em 1981, Jack Little um
engenheiro do MIT e Stanford, foi
o principal desenvolvedor do
produto comercial baseado em
Fortran MATLAB. Quando a IBM
anunciou seu primeiro PC em 81,
Jack Little anteviu a possibilidade
d uso do MATLAB nesse sistema.
• -Ele e um amigo, Steve Bangert reprogramaram o
MATLAB em C e adicionou m-files, toolboxes e
muitos graficos poderosos.
• Os 3 foram os fundadores da Mathworks em
1984.
18. PARTE 3:
• Declaração de Variáveis
• Números,Vetores e Matrizes
• Operadores e Funções
• Comandos Básicos
• Vetores Sequenciais
• Funções Matriciais
PARTE 1 :
• Histórico
MATLAB/Simulink/CVX
PARTE 2:
• Overview Matlab
• Comparações
• Potencialidade
PARTE 4:
• Operadores Booleanas
• Condicionais
• Controles de Fluxos (Laços)
• Scripts e Funções
• Gráficos
Segunda-Feira: Introdução ao MATLAB Terça-Feira: Programação no MATLAB
PARTE 5:
Técnicas de Programação
19. O MATLAB
• MATLAB não é somente uma toolkit é um workbench segundo Doug Hull
• O MATLAB (abreviatura de Matrix Laboratory) é um programa para
desenvolvimento e implementação de algoritmos numéricos ou simbólicos que
oferece ao usuário um ambiente interativo de programação para estudo e pesquisa
nas diversas áreas das ciências exatas.
• O MATLAB tem matrizes como elemento basico para manipulacao de dados.
• Robusto quando se requer tratamento de sistemas criticos com grande exigencia
de capacidade numerica.
• MATLAB é uma linguagem orientada a objeto ,possui a linguagem procedural como
base , e a programação estruturada como veículo.
20. Comparação:
MATLAB e Linguagem C:
MATLAB C
Tradutor Interpretável Compilável
Linguagem de
Programação
Dynamic Typing
(verificação em tempo de
execução)
Static Typing
(verificação em tempo de
compilação)
Leitura Top Down Top Down
Variáveis Em tempo de
programação
Globais e Locais no
escopo
Internamente LAPACK e outros Bibliotecas para funções
Elemento Básico Matriz Byte
Formato Maximo LongE Long double
Indicador de fim de
função
Linha abaixo ponto e vírgula
Plataformas Somente em MATLAB Multi-plataformas
21. Comparação:
MATLAB e Linguagem C:
MATLAB C
Complexidade de
Sistemas
baixa alta
Funcoes Alta (inclusive contando
com ANSI C) + proprias
ANSI C / Borland / +
proprias
Funcionalidades Workbench + Toolkit +
Linguagem
Linguagem
Tempo de Programação Baixo alto
Apontadores Cell Array Ponteiros
Robustez Matematica Alto devido a herança do
FORTRAN
baixo
Robustez Computacional Alto (JIT) alto
Embarcação possibilidade (HDL) finalidade
Executável VB + compilador + .mex Finalidade (obj + exe)
22. Comparação:
MATLAB e MATHEMATICA:
MATLAB MATHEMATICA
Funcoes Matriciais Maior Menor
Funcoes Gerais Mais funções
implementadas
Menor que o MATLAB
Matemática Numerica menor Maior de todas
ferramentas
Funcoes de Probab. e
Estatistica
menor Maior de todas
ferramentas
Funcoes de DSP maior menor
Funcoes Algebricas maior menor
Capacidade Grafica maior menor
Funcionalidade de
Programação
maior menor
23. Comparação:
MATLAB e MATHEMATICA:
MATLAB MATHEMATICA
Importação e Exportação
de Dados
menor maior
Capacidade de
Processamento de Dados
maior menor
Tempo de
Processamento
maior menor
Similaridade de
Programação
BASIC, FORTRAN LISP,APL
Testes Gerais¹ 69.58% 71.05%
Usabilidade,Facilidade menor maior
¹ http://www.scientificweb.com/ncrunch/ncrunch5.pdf
24. Potencialidades do MATLAB e Simulink
[JPL NASA] - Projeto Curiosity
-Engenheiros da JPL usaram MATLAB e Simulink para numerosas fases do MER (Mars
Exploration Rover), incluindo navegação e analise de dados.
-Usaram o Matlab para entender mais sobre os dados geologicos que o Curiosity coletará.
25. Potencialidades do MATLAB e Simulink
[U.S Airforce] – Projeto F-22 Raptor
-Projeto: Propulsores do F-22, calcular a recuperacao de entrada e de distorção espacial e
planar.Testes de desempenho do motor.
-Projeto: Usaram Signal Processing Toolbox para remover o ruído e extrair frequencias de
dados de séries temporais.
"We need to identify the cause of an anomaly in test data to determine if we can fly the next
day. We don’t have enough time to conduct our analysis with C++. MATLAB helps us get
answers immediately because it is quick, easy, and intuitive.“
26. Potencialidades do MATLAB e Simulink
[European Aeronautic Defence and Space Company (EADS)] – Projeto Astrium System
-Laser Optical Link Aircraft/Communication Satellite (50Mbp/s)
-Engenheiros usaram Simulink e Optimization Toolbox do MATLAB para simular e verificar os
algoritmos de controle, e implantação de sistemas em tempo real.
“With Simulink we can make the necessary modification, re-generate
the software using Simulink Coder, and start the test again in a half-
day.
27. Potencialidades do MATLAB e Simulink
[Smithsonian Astrophysical Observatory (SAO)] - Projeto: X-Ray Telescope (XRT)
-Ajudar a compreender a dinamica da atmosfera do Sol, do plasma solar, corona
-Uso do Simulink para modelar efeitos de imagem com várias fontes de distorção
28. Potencialidades do MATLAB e Simulink
As Aplicações são infinitas:
Controle de Sistemas, DSP, Processamento de Imagens, Mecatronica, Robôtica, IA, Sistemas
de Telecomunicações, Energia, Areas biológicas, médicas, aeroespaciais, defesa, mineração,
automobilística, economia, etc...
35. Conceitos Básicos
Declaração de Variáveis
No MATLAB o nome da variável deve ser
Alfanumérico começado com letra e
Sucedido do = que significa atribuição
É case senstive, isto é diferencia
maiúsculas de minúsculas
Ficam armazenadas em memória em
uma região denominada workspace
>> x = 12
x =
12
Isso é um escalar !
36. Conceitos Básicos
<<Números , Vetores e Matrizes >>
- O elemento básico do MATLAB é a matriz
- um número (escalar) no MATLAB é uma matriz com dimensão 1x1
- O MATLAB utiliza:
. para indicar a casa decimal
e para notação científica
i e j para números complexos.
37. Conceitos Básicos
<<Números , Vetores e Matrizes >>
- FORMATOS: short 4 digitos decimais
long 15 digitos decimais
short e 4 digitos notacao exponencial
long e 15 digitos notacao exponencial
long g escolhe o melhor long
shor g escolhe o melhor short
bank 2 digitos decimais (centavos)
>> format short
>> pi
ans =
3.1416
>> format long e
>> pi
ans =
3.141592653589793e+000
38. Conceitos Básicos
<<Números , Vetores e Matrizes >>
- VETORES e MATRIZES:
- - Vetores e Matrizes sao definidos entre [ ]
- - as colunas sao delimitadas por , ou espaço
- - as linhas sao delimitadas por ; dentro dos colchetes
>> vetor_linha = [1 2 3 4]
vetor_linha =
1 2 3 4
>> vetor_coluna = [1;2;3;4]
vetor_coluna =
1
2
3
4
39. Conceitos Básicos
<<Números , Vetores e Matrizes >>
- VETORES e MATRIZES:
>> matriz_3x3 = [1 2 3 ; 4 5 6 ; 7 8 9]
matriz_3x3 =
1 2 3
4 5 6
7 8 9
- é possivel na regiao workspace editar a
variável utilizando o Array Editor
40. Conceitos Básicos
<<Operadores e Funcoes>>
- OPERADORES
Os operadores no MATLAB lidam
com situacoes matriciais e escalares.
+ soma
- subtracao
* multiplicação matricial
.* multiplicação escalar
/ divisao matricial (a/b equivale a*b^-1)
divisao matricial (ab equivale a^-1 *b)
./ divisao escalar
^ potenciacao
.^ potencia escalar
>> a = 1
a =
1
>> b = 2
b =
2
>> soma = a+b
soma =
3
>> multiplica = a*b
multiplica =
2
41. Conceitos Básicos
<<Operadores e Funcoes>>
- OPERADORES
Os operadores no MATLAB lidam
com situacoes matriciais e escalares.
+ soma
- subtracao
* multiplicação matricial
.* multiplicação escalar
/ divisao matricial (a/b equivale a*b^-1)
divisao matricial (ab equivale a^-1 *b)
./ divisao escalar
^ potenciacao
.^ potencia escalar
>> a = [1 2 ; 3 4]
a =
1 2
3 4
>> b = [5 6; 7 8]
b =
5 6
7 8
>> multiplica = a*b
multiplica =
19 22
43 50
42. Conceitos Básicos
<<Operadores e Funcoes>>
- EXPRESSOES
Expressoes no MATLAB são compostas
de numeros, vetores, matrizes, variaveis,
operadores, funcoes.
As expressoes sao avaliadas pela
precedencia.
A precedencia no MATLAB é o ( )
O MATLAB irá resolver o que está dentro
do parênteses primeiro.
>> a = 2+(4/2)+1
a =
5
>> b = (2+4)/2+1
b =
4
>> c = (2+4)/(2+1)
c =
2
43. Conceitos Básicos
<<Operadores e Funcoes>>
- FUNCOES TRIGONOMETRICAS
O MATLAB fornece uma completa lista
de funções trigonométricas.
Há as relações elementares e as relações
em graus.
Para mais detalhes digite:
>>help elfun
Mais procurados:
sin(x) , cos(x), tan(x), sec(x)
sind(x), cosd(x), tand(x) ...
>> sind(45)
ans =
0.7071
>> tand(90)
ans =
Inf
>> sin(0.5)
ans =
0.4794
44. Conceitos Básicos
<<Operadores e Funcoes>>
- FUNCOES EXPONENCIAIS
O MATLAB fornece uma completa lista
de funções exponenciais.
Para mais detalhes digite:
>>help elfun
Mais procurados:
sqrt()
log()
log10()
log2()
exp()
>> exp(2)
ans =
7.3891
>> sqrt(4)
ans =
2
>> log(3)
ans =
1.0986
45. Conceitos Básicos
<<Comandos Básicos>>
!
chama um comando do sistema
operacional.
a cor muda pra identificar que se esta
chamando um shell
clc
limpa a tela
who
retorna as variaveis q foram usadas
>> ! ping www.google.com
Disparando www.google.com
[74.125.234.51] com 32 bytes de
dados:
Resposta de 74.125.234.51: bytes=32
tempo=20ms TTL=56
Resposta de 74.125.234.51: bytes=32
tempo=18ms TTL=56
Resposta de 74.125.234.51: bytes=32
tempo=18ms TTL=56
Resposta de 74.125.234.51: bytes=32
tempo=18ms TTL=56
>> clc
>> who
Your variables are:
a b matriz_3x3 soma
vetor_linha
ans c multiplica vetor_coluna x
46. Conceitos Básicos
<<Comandos Básicos>>
ans
retorna o valor da ultima variavel,
significa answer
clear
elimina todas variáveis do sistema ou
algumas em especial
whos
lista as propriedades da variável
(nome,tamanho,número de bytes e
classe)
>> ans
ans =
1.0986
>> clear b
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
Ans 1x1 8 double
48. Conceitos Básicos
<<VETORES SEQUENCIAIS>>
-função linspace
-cria vetores linearmente espaçados
- de,até,com N elementos
>>linspace(1,10,5)
>>linspace(1,10,10)
- se o numero de elementos nao for declarado,
o MATLAB assume por default 100
>>linspace(1,10)
>> linspace(1,10,5)
ans =
1.0000 3.2500 5.5000 7.7500
10.0000
>> linspace(1,10,10)
ans =
1 2 3 4 5 6 7
8 9 10
49. Conceitos Básicos
<<FUNCOES MATRICIAIS>>
-Como ja visto, matrizes sao
delimitadas por [ ]
>>A = [1 2 3;3 4 5;3 8 3]
-Transposta da Matriz
A'
-Inversa da Matriz
inv(A)
>> A = [1 2 3;3 4 5;3 8 3]
A =
1 2 3
3 4 5
3 8 3
>> A'
ans =
1 3 3
2 4 8
3 5 3
>> inv(A)
ans =
-1.4000 0.9000 -0.1000
0.3000 -0.3000 0.2000
0.6000 -0.1000 -0.1000
50. Conceitos Básicos
<<FUNCOES MATRICIAIS>>
-Determinante da Matriz
det(A)
-Diagonal principal da Matriz
diag(A)
-Traço (soma dos elementos da
diagonal) da Matriz
trace(A)
-Criando uma matriz identidade
eye(2) %dimensao quadrada
eye(2,3) %dimensao informada
>> det(A)
20.0000
>> diag(A)
1
4
3
>> trace(A)
ans =
8
>> eye(2)
ans =
1 0
0 1
51. Conceitos Básicos
<<FUNCOES MATRICIAIS>>
-Acessando elementos:
>>A(1,1)
>>A(3,3)
-Acessando elementos particulares
-B recebe os elementos da 2a linha
começando da 2a até a 3a coluna
>>B = A(2,2:3)
-B recebe os elementos da 2a linha, a
1a coluna E a 3a coluna somente
>>B = A(2,[1 3])
-C recebe a 3a coluna de A
>>C = A(:,3)
-D recebe a 1a linha de A
>>D = A(1,:)
>> A
A =
1 2 3
3 4 5
3 8 3
>> A(1,1)
ans =
1
>> A(2,2:3)
ans =
4 5
52. Conceitos Básicos
<<FUNCOES MATRICIAIS>>
-Reformatando as dimensões de uma
matriz (mantendo o numero original
de elementos)
>>Y = [4 3 2 ;1 2 9]
>>YY = reshape(Y,1,6)
-Organizando a nova matriz
>> sort(Y)
>> sort(Y,'ascend')
>> sort(Y,'descend')
>> Y
Y =
4 3 2
1 2 9
>> sort(Y)
ans =
1 2 2
4 3 9
>> sort(Y,'descend')
ans =
4 3 9
1 2 2
53. Conceitos Básicos
<<FUNCOES MATRICIAIS>>
-Numero de elementos da matriz
>>numel(Y)
-Dimensao da Matriz (linhas x
colunas)
>>size(Y)
>>[i,j] = size(Y)
-Dimensao das colunas
>>length(Y)
-Dimensao das linhas
>>ndims(Y)
>> Y
Y =
4 3 2
1 2 9
>> numel(Y)
6
>> size(Y)
2 3
>> length(Y)
3
>> ndims(Y)
2
56. Conceitos Básicos
<<FUNCOES MATRICIAIS>>
-Comando find
-Retorna os indices dos elementos da
matriz que forem diferentes de 0 ou q
satisfaçam a condição determinada
>>find(H)
>>find(H < 20)
>> H = [30 20 10 0 10]
H =
30 20 10 0 10
>> find(H<20)
ans =
3 4 5
57. Conceitos Básicos
<<FUNCOES MATRICIAIS>>
-Comando find
-Retorna os indices dos elementos da
matriz que forem diferentes de 0 ou q
satisfaçam a condição determinada
>>ones(2,5)
>>zeros(2,5)
>> ones(2,5)
ans =
1 1 1 1 1
1 1 1 1 1
>> zeros(2,5)
ans =
0 0 0 0 0
0 0 0 0 0
58. Conceitos Básicos
<<FUNCOES MATRICIAIS>>
-Comando find
-Retorna os indices dos elementos da
matriz que forem diferentes de 0 ou q
satisfaçam a condição determinada
>>ones(2,5)
>>zeros(2,5)
>> ones(2,5)
ans =
1 1 1 1 1
1 1 1 1 1
>> zeros(2,5)
ans =
0 0 0 0 0
0 0 0 0 0
60. Conceitos Básicos
<<FUNCOES MATRICIAIS>>
-Celulas (Indexam vários elementos
em uma celula, considerada uma
matriz de elementos de natureza
distinta - Tabela de apontadores -
funcionam como a struct em C ,
inclusive há no Matlab tb a struct, q é
semelhante a cell)
>> cell = {pi 2 eye(3) [1 2 3] [0:5]}
cell =
[3.1416] [2] [3x3 double] [1x3
double] [1x6 double]
>> cell{5}
ans =
0 1 2 3 4 5
>> celula = cell{5}
celula =
0 1 2 3 4 5
>> celula(3)
ans =
2