clique aqui para fazer do resumo do

Propaganda
UFRJ - Instituto de Matemá tica – Departamento de Ciência da Computaç ã o
Curso de Bacharelado em Informá tica
Disciplina Tó picos Especiais em Inteligência Computacional – Redes Neurais – 2002/1
Anderson Canêdo de Oliveira
MATLAB – LABORATÓ
RIO DE MATRIZES
BIBLIOGRAFIA
MATLAB 6 – Fundamentos de Programaç ão - É lia Yathie Matsumoto - Editora É rica
AJUDA
help – help on-line em linha de texto
helpwin – janela de help on-line
helpdesk – documentaç ão em hipertexto (html)
COMANDOS
pathtool – janela para configuraç ão da lista de diretó rios de busca
workspace – janela do workspace
path / matlabpath – exibem path de busca corrente
what – exibe arquivos ‘.m’ e ‘.mat’ contidos no diretó rio de trabalho
clc – limpa tela
which – identifica e localiza arquivo
! – chama comandos do SO
>> !del teste.m
format – formato de exibiç ão dos nú meros na tela
who – lista nomes das variáveis em uso
whos – lista nomes e tipos das variáveis em uso
clear – elimina variáveis
OPERADORES
*
multiplicação
.* multiplicação por escalar
./ divisão por escalar
\
divisão à esquerda (a\b equivale a a -1 * b)
.^ potência escalar
‘
transposta
EXPRESSÕ ES BOOLEANAS
•
0 (zero) ou nil (nulo, vazio) indica condiç ão falsa
•
1 (um) ou diferente de 0 (zero) indica condiç ão verdadeira
Símbolos e operadores booleanos:
Operador
Teste retorna verdadeiro se
Exemplo
==
I igual a J
I == J
~=
I diferente de J
I ~= J
<
I menor que J
I < J
>
I maior que J
I > J
<=
I menor igual a J
I <= J
>=
I maior igual a J
I >= J
~ (not)
I falso
~ I
& (and)
I e J verdadeiros
I & J
| (or)
I ou J verdadeiro
I | J
VARIÁ VEIS
São case-sensitive e o nome deve ser formado com o máximo de 32 caracteres
CONTANTES NUMÉ RICAS
pi – 3.141592...
inf – infinito (1/0)
NAN – não nú mero (0/0)
realmin – menor nú mero real (2-1022)
realmax – maior nú mero real (2-1023)
FUNÇ Õ ES TRIGONOMÉ TRICAS
sin – seno
cos – cosseno
sinh – seno hiperbó lico
FUNÇ Õ ES MATEMÁ TICAS
sqrt – raiz quadrada
exp – exponencial
log – logaritmo
abs – retorna o valor absoluto
fix – parte inteira de um nú mero real
round – inteiro mais pró ximo
floor – menor inteiro mais pró ximo
ceil – maior inteiro mais pró ximo
FUNÇ Õ ES MATRICIAIS
eye – matriz identidade
>> a = eye(3)
>> a = 1 0 0
0 1 0
0 0 1
zeros – matriz de zeros
ones – matriz de 1’s
det – determinante
inv – inversa
reshape – reformata matriz
size – vetor contendo o tamanho de cada dimensão da matriz
lenght – comprimento do vetor ou dimensão máxima da matriz
diag – retorna a diagonal de uma matriz ou cria matriz diagonal a partir de um vetor
tril – matriz triangular inferior
triu – matriz triangular superior
fliplr – inverte ordem das colunas
flipud – inverte ordem das linhas
INDEXAÇ Ã O DOS ELEMENTOS DE UMA MATRIZ
>> a = [4 3; 2 1];
>> a = 4 3
2 1
>> a(1,1) = 4
>> a(3) = 2
% linha, coluna, matriz
% indexação seqüencial (ordem em linhas)
TIPOS DE DADOS
String (Cadeia de carcteres)
>>
>>
>>
>>
>>
txt = ‘Resposta’
a = double(txt)
a = [82 101 115 112 111 115 116 97]
char(a)
a = Resposta
% valores em ASCII
Cell Array (células)
Permite o armazenamento de matrizes de naturezas diferentes em uma ú nica estrutura identificada por
um ú nico nome.
>>
>>
>>
>>
>>
celula = cell(2)
celula{1,1} = eye(3)
celula{1,2} = ‘matriz identidade’
celula{2,1} = pi
celula{2,2} = 0:1:10
num2cell – transforma um vetor numérico em células
>> v = 1:5
% v = [1 2 3 4 5]
>> c = num2cell(v)
>> c = [1] [2] [3] [4] [5]
cat – faz a funç ão inversa, concatena vetores
>> cat(Dim,a,b)
>> cat(2,célula{:})
% concatena os vetores a e b na dimensão Dim
STRUCT (ESTRUTURA)
Permite o armazenamento de matrizes de naturezas diferentes, identificáveis por nome de campos.
>> s = struct(‘Nome’, {‘ST01’}, ‘Identificador’, {200}, ‘Valores’, {[10 20 30]})
>> s =
Nome: ‘ST01’
Identificador: 200
Valores: [10 20 30]
>> s.Nome
>> ans = ST01
>> s(2).Nome = ‘ST02’
>> s(2).Identificador = 201
>> s(2).Valores = [0.1 5]’
>> s(1)
>> ans =
>> s(2)
>> ans =
Nome: ‘ST01’
Identificador: 200
Valores: [10 20 30]
Nome: ‘ST02’
Identificador: 201
Valores: [0.1
5]
>> s(1).Nome(2)
>> ans = T
MONTANDO VETORES
>> a = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]
ou
>> for j=1:11
a(j) = (j-1)/10;
>> end
% para j de 1 até 11
% compute o j-ésimo termo
% indicação de final
ou
>> a = linspace(0,1,11)
ou
>> a = 0:0.1:1
% a = <inicio>:<incremento>:<final>
linspace(a,b,c) – vetor linearmente espaç ado (a = inicial, b = final, c = nú mero de elementos)
logspace(a,b,c) – vetor logaritmicamente espaç ado (inicial = 10a, final = 10b, c = nú mero de elementos)
CONCATENANDO MATRIZES
a = [1 2]
b = [3 4]
Concatena matrizes em linhas
>> c = [a b]
% c = [1 2 3 4]
Concatena matrizes em colunas
>> d = [a ; b]
% d = [1 2
3 4]
find – retorna um vetor coluna com os índices seqüenciais dos elementos = 0 ou que satisfazem a
condiç ão determinada
>> b = find(a < 20)
% retorna um vetor coluna com os índices dos elementos de a
% menores de 20
sort(a, Dim) – ordena elementos da matriz a na dimensão Dim, se DIM não for informado ordena as
colunas.
RESOLVENDO SISTEMAS LINEARES
Ax = b
x = A-1 b
>> A = [ 3 1
5 2]
>> b = [2; -9]
>> x = A\b
Combinando as linhas
>> U = [A b]
>> u = rref(U)
>> xu = u(:,3)
EDITOR DE PROGRAMAS
>> edit
% - comentários
... – linha de comando continua na próxima linha
SCRIPT
Seqüência de comandos para automatizar algum processo repetitivo. Não trabalha com parâmetros de
entrada nem de saída. Sempre trabalha com as variáveis do workspace (usa variáveis pré-definidas e
define variáveis no workspace)
FUNÇ Ã O
Também é uma seqüência de comandos, mas que aceita comandos de entrada, retorna parâmetros de
saída. Utilizam seu pró prio espaç o de memó ria para armazenar suas variáveis locais.
function [ps1, ps2, ..., psn] = nome_da_funcao (pe1, ..., pem)
ps1, ..., psn = Parâmetros de saída
pe1, ..., pem = Parâmetros de entrada
% estat.m - Exemplo 1
% [media, desvio_padrão = stat(x)
% retorna média e desvio padrão dos valores em x
function [media, desvio_padrão = stat(x)
media = mean(x);
% media
desvio_padrao = std(x)
% desvio padrão
•
Interessante aproveitar o cabeç alho para documentar o programa e gerar os textos de auxílio
par o comando help.
•
A funç ão e o arquivo m-file devem ter o mesmo nome.
•
Variáveis do workspace não são reconhecidas dentro das funç õ es
•
Podem ser criadas subfunç õ es dentro de uma funç ão
ESTRUTURAS DE SELEÇ Ã O
If, elseif, else
if I == J
A(I,J) = 2;
elseif abs(I – J) == 1
A(I,J) = -1;
else
A(I,J) = 0;
end;
Switch
switch Val
case 0
A(I,J) = 2;
case 1
A(I,J) = -1;
otherwise
A(I,J) = 0;
end
ESTRUTURAS DE REPETIÇ Ã O
While
while I < J
if I == J
A(I,J) = 2;
elseif abs(I – J) == 1
A(I,J) = -1;
else
A(I,J) = 0;
end
I = I + 1;
end
For
for <Valor> = <inicio>:<incremento>:<fim>
<Expressão1>
...
<Expressão2>
end
for i=1:10000
x(i) = cos(2*pi*i/100);
end;
EXERCÍCIOS
1) Montar o vetor X = sin(2 * pi * i/100), i = 1, 2, ..., 10000
2) Escreva um programa no Matlab para um valor n e construir uma matriz A (nxn) com elementos
aij = 3ij. Tenter fazer usando laç os e depois tente refazer sem usar laç os
3) Escreva um pequeno programa para achar o menor inteiro positivo r, tal que 2 r = ∝ no ponto
aritmético flutuante. Dica: Constante do Matlab inf = infinito, ex. 1/0
4) Diferenç a entre (A * A) e (A .^ A) ?
Exercício aula anterior
SCRIPTS
Linhas de comentário para documentaç ão
FUNÇ Õ ES
Ex1: Criar funç ão para calcular média e desvio padrão
Ex2: Criar funç ão com subfunç õ es para calcular a média e o desvio padrão
function m = calc_media(x)
[nl, nc] = size(x);
if nl == 1
nl = nc;
end
m = sum(x) / nl;
function d = calc_dp(x)
[nl, nc] = size(x);
if nl == 1
nl = nc;
nc = 1;
x = x’;
end
m = sum(x) / nl;
for i=1:nc
m2(:,i) = (x(:,i) - m(i)) .^ 2;
end
m2 = sum(m2) / (n1 – 1);
d = sqrt(m2);
VARIÁ VEIS GLOBAIS
global <nome da variável>
which – pesquisa arquivos
>> which sin
>> which polyfit
struct e cell array
RESOLVENDO SISTEMAS LINEARES
>> A = fix (10 * rand(10));
% declarar também dentro da função
>>
>>
>>
>>
B
C
D
E
=
=
=
=
fix (100 * rand(10,1))
[A B]
rref(A)
A\B
Calcular a diferenç a de D(:,11) e E
Format – muda a formato de apresentaç ão
format long
format short
IF, Switch, For
Save e Load
>>
>>
>>
>>
save
save
load
load
(nome do arquivo)
(arquivo) <nome das variáveis> - salvar variáveis (.mat)
(nome do arquivo.mat)
(nome do arquivo) (variável)
find – retorna um vetor coluna com os índices seqüenciais dos elementos = 0 ou que satisfazem a
condiç ão determinada
>> b = find(a < 20)
% retorna um vetor coluna com os índices dos elementos de a
% menores de 20
FUNÇ Õ ES PARA IMPORTAÇ Ã O DE DADOS
Arquivos ASCII
>> dlmread (<arquivo>, <delimitador>)
>> dlmwrite (<arquivo>, <matriz>, <delimitador>)
% importa dados
% exporta dados
Outras funç õ es - Matlab 6
importdata – importa dados de vários tipos de arquivos (bmp, mat, txt, wav, etc)
xlsread – importa dados de planilhas excel
PLOT
>>
>>
>>
>>
>>
>>
% Exemplo: Gráfico f(x) = x * cos(x), -2π < x < 2π
x = -2*pi : 0.1 : 2*pi;
y = x .* cosx(x);
figure(1);
plot(x,y);
% default : linha contínua azul
plot(x,y,’r*’);
% marcador * na cor vermelho
CONFIGURAÇ Õ ES DO GRÁ FICO
hold on – habilita / desabilita exibiç ão de gráficos na mesma janela.
grid on – habilita / desabilita grid do gráfico
zoom(fator) – zoom no gráfico
legend(‘x * cos(x)’) - legenda
xlabel(‘Eixo x’) – nome do eixo x
ylabel(‘Eixo y’) – nome do eixo y
title(‘Grá fico f(x)=x * cos(x)’) – titulo do gráfico
axis([xmin xmax ymin ymax]) – altera limites do gráfico (escala)
>> axis([-pi pi –1 1]);
VÁ RIOS GRÁ FICOS NUMA SÓ JANELA
>> plot (x,sin(x),’r’, x,cos(x),’k:’, x,sin(x).*cos(x),’b>’);
>> legend(‘sin(x)’,’cos(x)’,’sin(x).*cos(x)’);
Plotando matrizes – cada coluna gera uma curva
>> A = fix(10 * rand(10));
>> plot(A);
plotyy – duas curvas no mesmo gráfico com escalas diferentes
>>
>>
>>
>>
>>
x = 0.1:0.1:10
plot(x, sin(x));
plot(x, exp(x));
plot(x, sin(x), ‘r’, x, exp(x), ‘b’);
plotyy(x, sin(x), x, exp(x));
subplot(linhas, colunas, posiç ã o) – gera vários gráficos numa mesma janela.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
x = -2*pi:0.1:2*pi;
y = x .* cos(x);
subplot(1,3,1)
plot(x,y);
% 1 linha, 3 colunas na posição 1
subplot(1,3,2)
plot(x,y);
zoom(2);
% na posição 2 com zoom
subplot(1,3,3)
plot(x,y,’r’);
hold
plot(x, x.*sin(x));
% na posição 3, 2 funções no mesmo gráfico
exportar grá fico – grava gráfico como imagem no disco
>> print –dbitmap –r300 <arquivo>
GRÁ FICOS PARA FUNÇ Õ ES ESPECIAIS
polar, loglog, semilogx, semilogy
plot3 – cria uma curva no espaç o 3D
>> x = -4*pi : 0.1 : 4*pi
>> y = -4*pi : 0.1 : 4*pi
>> plot3(cos(x), sin(y), (x+y))
% fornecer coordenadas x, y, z
FUNÇ Õ ES GRÁ FICAS 2D ESPECIAIS
area – gráfico de área
bar – gráfico de barra vertical
barh – gráfico de barra horizontal
stairs – gráfico escada
pie – gráfico de pizza
scatter – gráfico discreto que indica pontos com marcadores
stem – gráfico discreto que indica pontos com hastes
Download