Você está na página 1de 5

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

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’ 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 % linha, coluna, matriz
>> a(3) = 2 % 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] % valores em ASCII
>> char(a)
>> a = Resposta

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) % concatena os vetores a e b na dimensão Dim
>> cat(2,célula{:})

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 = ‘ST01’


>> s(2).Identificador = 201
>> s(2).Valores = [0.1 5]

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 % para j de 1 até 11
a(j) = (j-1)/10; % compute o j-ésimo termo
>> end % 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
Concatena matrizes em linhas
>> a = [a b]
Concatena matrizes em colunas
>> a = [a ; b]

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ÍCIO
1) Calcular o vetor Y = sin(2 * pi * xi /100), x = 1, 2, ..., 10000