Anda di halaman 1dari 20

IM/NCE – UFRJ

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

• modelagem, simulação e prototipação

• análise de dados, exploração e visualização

• gráficos científicos em duas e três dimensões

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

Para saber mais


• Help On-line
- help; helpwin; helpdesk; lookfor; demo
• Apostilas e Manuais
- www.mathworks.com
- Sites de Universidades
• Bibliografia
- Hanselman, Duane; MATLAB 5 - versão do estudante; São Paulo;
Markron Books; 1999
- Hanselman, Duane; Littlefield, Bruce; Matlab 6 - Curso Completo;
Prentice Hall (Pearson); 2002.
- Matsumoto, E.Y. Matlab 6.5 Fundamentos de Programação. São
Paulo. Editora Érica, 2002.

3
2. Ambiente de Trabalho
Menu and Toolbar

Current
Directory Menu
Pop-Up
Tabs

Command Window

Command
History

Start Button

Comandos do Sistema Operacional

>> dir ou ls arquivos do diretório


>> cd ou pwd diretório corrente
>> cd . . diretório acima do corrente
>> cd \ diretório raiz
>> delete <arquivo> apaga arquivo
>> quit ou exit sai do ambiente
>>! <comando do SO> chama um comando do SO

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

3. Escalares, Vetores e Matrizes


Definindo escalares, vetores e matrizes :
>> a _escalar = 1 >> a_vetorlin= [ 1 2 3 ]
a_escalar = a_vetorlin =
1 1 2 3

>> a_vetorcol = [ 1; 2; 3 ] >> a_matriz = [ 1 2 3;4 5 6 ]


a_vetorcol = a_matriz =
1 1 2 3
2 4 5 6
3

Elementos delimitados por “ [ ] ”


Colunas delimitadas por “<espaço>” ou “,”
Linhas delimitadas por “<enter>” ou “;”

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

>> eps precisão numérica relativa 2.2204e-016


>> realmin menor número real 2.2251e-308
>> realmax maior número real 1.7977e+308
>> Inf infinito 1/0
>>NaN not a number 0/0

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

Indexação Matricial Indexação Seqüencial

 a1,1 a1, 2 L a1,n   a1 a( m +1) L a( m*( n −1) +1) 


a a L a( m*( n −1) + 2 ) 
 2,1 a2, 2 L a2,n   2 a( m + 2 )
 M M O M  M M O M 
   
am,1 am, 2 L am , n  am a( m + m ) L am*n 

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 aa( 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

sin(x) seno sinh(x) seno hiperbólico asin(x) arco seno

cos(x) cosseno cosh(x) cosseno hiperbólico acos(x) arco cosseno

tan(x) tangente tanh(x) tangente hiperbólico atan(x) arco tangente

Exponenciais

exp(x) exponecial log(x) logaritmo neperiano log10(x) logaritmo base 10

Arrendondamento

fix(x) floor(x) round(x)

Para listar outras funções matemáticas, execute: >>help elfun

Funções Matriciais Elementares


As funções abaixo podem ter um (n) ou dois (n,m) parâmentros.
(n): dimensão da matriz quadrada e (n,m): dimensões da matriz

>>rand(n) ou rand(n,m) matriz de números pseudo-aleatórios


uniformemente distribuídos entre 0 e 1
>>randn(n) ou randn(n,m) matriz de números pseudo-aleatórios com
distribuição normal
>>eye(n) ou eye(n,m) matriz identidade

>>zeros(n) ou zeros(n,m) matriz de zeros

>>ones(n) ou ones(n,m) matriz de uns

12
Funções Matriciais Elementares (continuação)
>>numel(A) retorna o número de elementos da matriz

>>size(A) retorna um vetor contendo o tamanho de cada dimensão da matriz


>>size(A,dim) retorna o tamanho da dimensão
>>lenght(A) retorna comprimento do vetor ou dimensão máxima da matriz

>>ndims(A) retorna o número de dimensões da matriz

>>diag(A) se A é matriz então retorna a diagonal da matriz


se A é vetor então cria uma matriz diagonal a partir do vetor
>>tril(A) retorna a matriz triangular inferior da matriz

>>triu(A) retorna a matriz triangular superior da matriz


Para listar outras funções matriciais, execute: >>help elmat

Funções Matriciais Elementares (continuação)


>>ind = find(A) retorna o índice sequencial dos elementos da
>>ind = find(Expr.Bool) matriz que forem diferentes de 0 (zero) ou que
satifazem a condição determinada
>>[indx,indy] = find(A) retorna o índice matricial dos elementos da matriz
>>[indx,indy] = find(Expr.Bool) que forem diferentes de 0 (zero) ou que satifazem
a condição determinada

>>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)

Funções Básicas de Geração de Gráficos


>>plot(x,y) gera um gráfico XY, na cor azul e com linha contínua

>>plot(x,y,cmt) gera um gráfico XY, na cor “c”,com o marcador “m” e


com o tipo de linha “t”
>>plot(x1,y1,cmt1,...,xn,yn,cmtn) gera n gráficos XY, cada um conforme sua cor, seu
marcador e seu tipo de linha

Cor Marcador Tipo de Linha

y(amarelo); . (ponto); o(círculo); x(xis); +(cruz); : (pontilhada); -.(ponto-traço); --


m(magenta);c(azul- *(estrela); s(quadrado); d(losango); (tracejada); solid(sólida)
claro); r(vermelha); v(triângulo p/baixo); ^(triângulo
g(verde); b(azul); p/cima); <(triângulo p/esquerda);
w(branca); k(preta) >(triângulo p/direita); p(pentagrama);
h(hexagrama)

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

>>grid habilita/desabilita exibição de grade

>>box habilita/desabilita exibição de caixa de contorno do gráfico

>>hold habilita/desabilita exibição de gráficos na mesma janela

>>axes cria um eixo em uma posição específica na janela

>>title configura o título do gráfico

>>xlabel, ylabel, zlabel configura label do eixo X, eixo Y e eixo Z

>>text cria um texto posicionado em uma coordenada fornecida

>> legend cria texto de legenda no gráfico

Outros recursos gráficos

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.

Operadores Relacionais e Lógicos


Operadores Descrição
== igual
~= diferente
< menor
<= menor ou igual
> maior

& e (and)
| ou (or)
~ não (not)

17
Estruturas de Controle - Seleção

- if, elseif, else


if <Expr.Bool.1>
<Expressão1>
elseif <Expr.Bool.2>
<Expressão2>
...
else
<Expressão3>
end

Estruturas de Controle - Seleção


-switch
switch <Variável>
case <Expr_case1>
<Expressão1>
case <Expr_case2>
<Expressão2>
...
otherwise
<ExpressãoN>
end

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

disp(x) mostra o resultado sem identificar a variável


echo controla a exibição dos comandos
input solicita ao usuário que forneça a entrada
keyboard transfere o controle para o teclado
pause(n) suspende a execução por n segundos
pause suspende até que uma tecla seja pressionada

FIM

20

Anda mungkin juga menyukai