Mestrado em Informática
Inteligência Computacional
Redes Neurais
Iniciação ao MATLAB
Sumário
1. Introdução
2. Ambiente de Trabalho
3. Escalares, Vetores e Matrizes
4. Operadores e Funções
5. Gráficos
6. Programação no MATLAB
1
1. Introdução
• MatLab – Matrix Laboratory (Universidades de Stanford e Novo
México - 1970)
• originalmente escrito para trabalhar com matrizes e vetores
• evoluiu ao longo do anos até se tornar uma ferramenta de ampla
abrangência
• o MatLab é uma poderosa ferramenta matemática e uma
linguagem de programação de alto-desempenho para a
computação científica
• integra cálculos matemáticos, visualização e programação em
um ambiente interativo
• é de fácil utilização
Aplicações
• matemática e computação
• desenvolvimento de algoritmos
2
Por dentro do MATLAB
MATLAB
• Núcleo Funcional (rotinas C compiladas – built-in)
• Interpretador de comandos/linguagens (Arquivos “.m” ou m-files)
Toolboxes
– Agrupamento de arquivos “.m “
– Arquivos “.m” contêm códigos escritos na linguagem
interpretada pelo MATLAB;
– Arquivos “.m” podem ser abertos, alterados e copiados;
– Arquivos “.m” são independentes da plataforma;
Simulink
– É um módulo de interface gráfica para simulação de
sistemas dinâmicos
3
2. Ambiente de Trabalho
Menu and Toolbar
Current
Directory Menu
Pop-Up
Tabs
Command Window
Command
History
Start Button
4
Comandos no Espaço de Trabalho
>>who lista variáveis existentes no espaço de trabalho
>>whos lista variáveis com informações detalhadas
>>what lista os arquivos do MATLAB contidos no diretório
>>which identifica e localiza arquivo
>>clear apaga as variáveis existentes no espaço de trabalho
>>save salva as variáveis em um arquivo .mat
>>load carrega as variáveis contidade em um .mat
>>edit <arquivo> abre arquivo para edição
>>type <arquivo> mostra o conteúdo do arquivo
5
Tipos de dados (class)
>>double ponto flutuante dupla precisão
>>single ponto flutuante simples precisão
>>logical lógico
>>char caracter
>>cell célula
>>struct estrutura
>>function handle função handle
>>int8,uint8,..16,32,64 inteiro com sinal 8-bits, inteiro sem sinal 8-bits
>><java_class> nome da classe java
Constantes
>> pi π 3.14159265358...
>> i ou j raiz imaginária −1
6
Formatos
>>format short 4 dígitos decimais 3.1416
>>format long 15 dígitos decimais 3.14159265358979
>>format short e 4 dígitos n. exp 3.1416e+000
>>format long e 15 dígitos n. exp. 3.141592653589793e+000
>>format short g melhor opção short 3.1416
>>format long g melhor opção long. 3.14159265358979
>>format hex hexadecimal 400921fb54442d18
>>format rat fracionário 355/113
>>format + pos (+) e neg(-) +
>>format bank 2 dígitos decimais 3.14
Indexação
ai,j=a(i,j) ai=a(i)
am,n=a(m,n) Ù am.n=a(m.n)
7
Operador Colon (:)
Indexa todos os elementos ou um intervalo específico:
>> a=1:10 >> a=[1:2:10;10:-2:1]
a= a=
1 2 3 4 5 6 7 8 9 10 1 3 5 7 9
>> a(2:5) 10 8 6 4 2
ans=
2 3 4 5 >> a(:,2)
>> a(5:end) ans=
ans= 3
5 6 7 8 9 10 8
>> a(1,1:2:end) >> a(1,3:end)
ans= ans=
1 3 5 7 9 5 7 9
Mais exemplos
>>a=[1:5;linspace(1,10,5)] >>a(2,:)
a= ans=
1.00 2.00 3.00 4.00 5.00 1.00 3.25 5.50 7.75 10.00
1.00 3.25 5.50 7.75 10.00 >>a(1,2:end)+5
>>a(1,3) ans=
ans= 7.00 8.00 9.00 10.00
3.00 >>a + .5
>>a(2,4) ans=
ans= 1.50 2.50 3.50 4.50 5.50
7.75 1.50 3.75 6.00 8.25 10.50
>> a(5:7) >>a(1,:)=a(1,:)+a(2,:)
ans= a=
3.00 5.50 4.00 2.00 5.25 8.50 11.75 15.00
1.00 3.25 5.50 7.75 10.00
8
Matriz multidimensional
>>b(:,:,1)=[10:-2:6;1 2 3];
amn ( p −1) +1 amn ( p −1) + m +1 L amnp − m +1
a
>>b(:,:,2)=[1:3;3:-1:1] mn ( p −1) + 2 amn ( p −1) m + 2 L amnp − m + 2
.
M
..
b(:,:,1) = M M O
10 8 6 a1 aa( m + 1 ) L a a ( m *( n − 1 ) +L 1) amnp
a mn ( p −1) + m mn ( p −1) + 2 m
1 2 3
2 a ( m + 2 ) L a ( m *( n − 1 ) + 2 )
b(:,:,2) =
M M O M
.
..
1 2 3
3 2 1 a m a(m +m ) L a m *n
Indexação Seqüencial
Manipulação de matrizes
Exclusão Concatenação
>>a=[1 2 3; 4 5 6] >>a=[1 2 3] ;
a(1,:) = [ ] >>b=[4 5 6];c=1
4 5 6 >>[a b]
>>b=[6 5 4; 3 2 1] ans=
1 2 3 4 5 6
b(:,3) = [ ] >>[a;b]
6 5 ans=
3 2 123
>>c=[1 2 3; 4 5 6] 456
b(3,3)=[ ] >>[a;c]
??? Indexed empty matrix ??? Error using ==> vertcat
assignment is not allowed.
9
4. Operadores e funções
>>a=[1 2;3 4] >>b=[5 6;7 8]
a= b=
1 2 5 6
3 4 7 8
>>a+b
+ Soma
6 8
10 12
>>a-b
- Subtração
-4 -4
-4 -4
>>a*b
* Multiplicação matricial
19 22
43 50
Operadores (continuação)
>>a=[1 2;3 4] >>b=[5 6;7 8]
a= b=
1 2 5 6
3 4 7 8
>>a.*b
.* Multiplicação escalar
5 12
21 32
>>a/b
/ Divisão matricial
3.0000 -2.0000
(a*b-1) 2.0000 -1.0000
>>a./b
./ Divisão escalar
0.2000 0.3333
0.4286 0.5000
10
Operadores (continuação)
>>a=[1 2;3 4] >>b=[5 6;7 8]
a= b=
1 2 5 6
3 4 7 8
>>a\b
\ Divisão ‘esquerda’
-3.0000 -4.0000
(a\b equivale a (a-1*b)) 4.0000 5.0000
>>a^3
^ Potência (matriz^escalar)
37 54
(a^3 equivale a (a*a*a)) 81 118
>>a.^b
.^ Potência escalar
1 64
2187 65536
Operadores (continuação)
>>a=[1 2;3 4] >>b=[5 6;7 8]
a= b=
1 2 5 6
3 4 7 8
>>a’
‘ Transposta
1 3
2 4
>>a+b*a
() Precedência
24 36
34 50
>>(a+b)*a
30 44
46 68
11
Funções Elementares
Trigonométricas
Exponenciais
Arrendondamento
12
Funções Matriciais Elementares (continuação)
>>numel(A) retorna o número de elementos da matriz
>>a=[1 2 3; 4 5 6] ; >>a=[1 2 3; 4 5 6] ;
>>ind=find(a>3) >>[indx,indy]=find(a>3)
ind = indx = indy =
2 2 1
4 2 2
6 2 3
13
5. Gráficos
Gráfico Bidimensional
>> x = linspace(0, 2 ∗ pi, 30);
>> y = sin(x);
>> z = cos(x);
>> plot(x,y,x,z)
14
Funções Básicas de Geração de Gráficos
>>loglog(x1,y1,cmt1,...,xn,yn,cmtn) gera um gráfico bidimensional com eixos X e Y
logarítmicos
>>semilogx(x1,y1,cmt1,...,xn,yn,cmtn) gera um gráfico bidimensional com eixos X
logarítmico e Y linear
>>semilogy(x1,y1,cmt1,...,xn,yn,cmtn) gera um gráfico bidimensional com eixos X linear
Y logarítmico
>>polar(theta,rho,cmt) gera um gráfico com eixos de coordenadas
polares
>>subplot(m,n,ind) gera vários eixos em uma mesma janela
m: números de eixos na vertical
n: números de eixos na horizontal
ind: índice do eixo corrente
Exemplos
%Script Exemplo
x=logspace(0,2);
theta=-2*pi:0.1:2*pi;
rho=1:size(theta,2);
subplot(2,2,1);loglog(x,x);
title('loglog');grid;
subplot(2,2,2);semilogx(x,x,'r+');
title('semilogx');grid
subplot(2,2,3);semilogy(x,x,'go')
title('semilogy‘);grid
subplot(2,2,4);polar(theta,rho,'bs')
title('polar');grid
15
Funções Básicas de Geração de Gráficos
>>axis controla escala dos eixos
16
6. Programação no MATLAB
O MATLAB permite criar programas do mesmo modo que outra
linguagem qualquer. Por não ser uma linguagem compilada, recomenda-
se abusar do seu poder matricial e das suas funções nativas.
Script
É uma seqüência de comandos do MATLAB e serve
basicamente, para automatizar algum processo repetitivo. Não tem
parâmetros de entrada, nem de saída e utiliza as variáveis do
Workspace.
Função
É uma seqüência de comandos do MATLAB, mas aceita
parâmetros de entrada e retorna parâmetros de saída. Funções utilizam
seu próprio espaço de memória para armazenar variáveis locais.
& e (and)
| ou (or)
~ não (not)
17
Estruturas de Controle - Seleção
18
Estruturas de Controle - Repetição
-while
while <Expr.Bool.1>
<Expressão1>
...
<ExpressãoN>
end
-for
for <Variável>=<Inicio>:<Incremento>:<Fim>
<Expressão1>
...
<ExpressãoN>
end
Otimização de Código
- o laço de repetição
for i = 0:999
x(i+1) = sin(2 ∗ pi ∗ i / 100);
end
- pode ser substituído por
x = sin(2 ∗ pi ∗ [0:999] / 100);
19
Comandos de E/S e depuração
FIM
20