Você está na página 1de 7

Tutorial do MATLAB

São necessários alguns comandos básicos para usar o programa MATLAB. Este tutorial
resumido descreve esses comandos. Você precisa criar vetores e matrizes, alterá-los e operar
com eles. Todos eles são comandos curtos e de alto nível, pois o MATLAB trabalha
constantemente com matrizes. Acredito que vocês vão gostar do poder que esse software
fornece ao usuário para trabalhar com álgebra linear por meio de várias instruções resumidas:

criar E criar u mudar E multiplicar Eu


E = eye(3) u = E(:,1) E(3,1) = 5 υ=E∗ u

A palavra “eye” representa a matriz identidade. A submatriz u = E(:,1) seleciona a coluna 1. A


instrução E(3,1) = 5 reconfigura a entrada (3,1) para 5. O comando E ∗ u multiplica as matrizes
E e u. Todos esses comandos se repetem em nossa lista a seguir. Veja um exemplo de inversão
de uma matriz para solucionar um sistema linear:

criar A criar b inverter A resolver Ax = b


A = ones(3)+ eye(3) b=A(:,3) C = inv(A) x = A\b ou
x=C∗ b

A matriz com todos os ones foi acrescentada ao eye(3) e b é sua terceira coluna. A seguir, inv(A)
produz a matriz inversa (normalmente em decimais; para frações, use format rat). O sistema
Ax = b é resolvido por x = inv(A) ∗ b, que é a forma mais lenta. O comando barra invertida
x = A\b usa a eliminação gaussiana se A for quadrado e nunca calcula a matriz inversa. Quando
o lado direito b se iguala à terceira coluna de A, a solução x deverá ser [0 0 1]´. (O transpose
symbol ´ transforma x em um vetor coluna). A seguir, A ∗ x seleciona a terceira coluna de A, e
teremos Ax = b.
Alguns comentários. O símbolo do comentário é %:

% Os símbolos a e A são diferentes: o MATLAB diferencia maiúsculas de minúsculas.

% Digite help slash para uma descrição de como usar o símbolo de barra invertida. A
palavra help pode ser seguida de um símbolo do MATLAB ou do nome do comando ou
do nome do arquivo-M.

1
Obs.: O nome do comando está em letra maiúscula na descrição fornecida pela
Ajuda, mas deve ser digitado em letra minúscula ao usar o programa. E a barra
invertida A\b é diferente quando A não for quadrado.

% Para exibir todos os 16 dígitos, digite format long. O format short normal fornece 4
dígitos após o decimal.

% Um ponto e vírgula após um comando evita a exibição do resultado.


A = ones(3); não exibirá a matriz identidade 3 × 3.

% Use o cursor seta para cima para voltar aos comandos anteriores.

Como inserir um vetor coluna ou vetor linha


tem uma linha com três componentes (matriz 1 × 3)
tem três linhas separadas por ponto e vírgula (matriz 3 × 1)

ou é o vetor u transposto
gera o vetor linha = [2 3 4 5] com passos unitários
assume passo 2 para fornecer u = [1 3 5 7]

Como inserir matriz (uma linha de cada vez)


A = [1 2 3; 4 5 6] tem duas linhas (sempre um ponto e vírgula entre as linhas)
A = [1 2 3 também produz a matriz A mas é mais difícil de digitar
4 5 6]
B = [1 2 3; 4 5 6]´ é a transposta de A. Por isso, AT é A´ no MATLAB

Como criar matrizes especiais


diag produz a matriz diagonal com vetor υ na diagonal

toeplitz fornece a matriz diagonal-constante simétrica com como primeira linha e primeira
coluna
toeplitz fornece a matriz simétrica com diagonal-constante com como primeira coluna
e como primeira linha
ones fornece uma matriz n x n de um´s

2
zeros(n) fornece matriz n x n somente de zeros
eye (n) fornece matriz identidade n x n
rand(n) fornece matriz n x n com entradas aleatórias entre 0 e 1 (distribuição uniforme)
randn(n) fornece matriz n x n com entradas normalmente distribuídas (média 0 e variância 1)
one s(m, n) zeros(m,n) rand(m,n) fornecem matrizes m x n
ones(size (A)) zeros(size (A)) eye(size A)) fornecem matrizes com o mesmo formato de A

Como alterar entradas em uma dada matriz A


A(3,2) = 7 redefine a entrada (3,2) para igualar a 7
A(3, :) = redefine a terceira linha para igualar
A(:,2) = redefine a segunda coluna para igualar a
O símbolo dois pontos : significa todos (todas as colunas ou todas as linhas)
A([2 3], :) = A([3 2], :) permuta as filas 2 e 3 de A

Como criar submatrizes de uma matriz A de m x n


A(i, j) retorna a entrada (i, j) da matriz A (escalar = matriz 1 x 1)
A(i,: ) retorna a linha i de A (como vetor linha)
A(:, j) retorna a coluna j de A (como vetor coluna)
A(2 : 4,3 : 7) retorna as linhas de 2 a 4 e as colunas de 3 a 7 (como matriz 3 x 5)
A([2 4],:) retorna linhas 2 e 4 e todas as colunas (como matriz 2 x n )
A(;) retorna uma coluna longa formada pelas colunas de A ( matriz mn x 1)
triu(A) define todas as entradas abaixo da diagonal principal como- zero (triangular superior)
tril(A) define todas as entradas acima da diagonal principal como zero (triangular inferior)

Inversão e multiplicação matricial


A∗ B fornece a matriz produto AB (se A pode multiplicar B)
A. ∗ B fornece o produto entrada por entrada (se dimensão(A) = dimensão (B)
inv(A) fornece A-1 se A for quadrada e puder for inversível
pinv(A) fornece a pseudo-inversade A
A\B fornece inv(A) ∗ B se inv(A) existir: backlash é a divisão à esquerda
x = A\b fornece a solução para Ax = b se inv(A) existir
Veja help slash quando A for uma matriz retangular!

3
Números e matrizes associadas a A
det(A) é odeterminante (se A for uma matriz quadrada)
rank(A) é o posto (número de pivôs = dimensão do espaço da linha e do espaço da coluna)
size(A) é o par de números [m n]
trace(A) é o traço = soma das entradas diagonais = soma dos autovalores
null(A) é a matriz cujas colunas n - r são uma base ortogonal para o espaço nulo de A
orth(A) é a matriz cujas colunas r são uma base ortogonal para o espaço de coluna de A

Exemplos
E = eye(4);E(2,1) = -3 cria uma matriz elementar de eliminação 4 x 4
E ∗ A subtrai 3 vezes a linha 1 de A da linha 2.
B = [A b] cria a matriz aumentada com b como coluna extra
E = eye(3); P = E([2 1 3],:) cria uma matriz de permutação
Observe que triu(A) + tril(A) – diag(diag(A)) se iguala a A

Arquivos-M construídos para fatorações de matriz (todos são


importantes!)
[L, U, P] = lu(A) fornece três matrizes com PA = LU
e – eig (A) é um vetor que contém os autovalores de A
[S,E] = eig (A) fornece uma matriz diagonal E de autovalores e uma matriz S de autovetores
com AS = SE. Se A não for diagonalizável (poucos autovetores) então S não será
inversível.
[Q, R] = qr(A) fornece uma matriz Q ortogonal m x n e uma R triangular m x n com A = QR

Criando arquivos-M
Os arquivos-m são arquivos de texto terminando com a extensão .m, os quais o MATLAB usa
para funções e roteiros. Um roteiro é uma seqüência de comandos que podem ser executados
com freqüência e podem ser colocados em um arquivo-m de modo que os comandos não
precisem ser digitados novamente. Os demos do MATLAB são exemplos desses roteiros. Um
exemplo é o demo chamado house. A maioria das funções do MATLAB é, na verdade,
constituída de arquivos-m que podem ser visualizados escrevendo-se type xxx onde xxx é o
nome da função.

4
Para escrever seus próprios roteiros ou funções, você precisa criar um novo arquivo de texto
com qualquer nome de sua preferência, desde que termine com .m, para permitir que o
MATLAB reconheça o arquivo. Arquivos de texto podem ser criados, editados e salvos com
qualquer editor de texto como emacs, EZ ou vi. Um arquivo de texto é, simplesmente, uma lista
de comandos MATLAB. Quando se digita o nome do arquivo no prompt do MATLAB, o
conteúdo do arquivo será executado. Para que um arquivo-m seja uma função, é preciso iniciar
com a palavra function seguida pelas variáveis de saída entre colchetes, o nome da função e as
variáveis de entrada.

Exemplos
function [C] = mult(A)
r = rank(A);
C = A´∗ A;

Salve os comandos acima em um arquivo de texto nomeado como mult.m . Essa função toma
uma matriz A e retorna o produto matricial C. A variável r não é devolvida por que não foi
incluída como uma variável de saída. Os comandos são seguidos por ; de modo que não serão
impressos na janela do MATLAB toda vez que forem executados. Isso é útil quando se trata de
grandes matrizes. Eis um outro exemplo:

function [V, D, r] = properties (A)


% Esta função encontra rank, eigenvalues e eigenvectors de A
[m,n] =size(A);
se m = = n
[V,D] =eig(A);
r=rank(A);
else
disp (´Error: A matriz deve ser quadrada´);
end

Aqui a função toma a matriz A como entrada e retorna duas matrizes e o posto (rank) como
resultado. O % é usado como comentário. A função verifica se a matriz de entrada é quadrada e
a seguir encontra o posto, os autovalores e os autovetores de uma matriz A. Digitando-se
properties(A) o retorno será somente o primeiro resultado, V, a matriz de autovetores. Para obter
os três resultados, você precisará digitar [V, D, r}=properties(A).

5
Mantendo um diário de seu trabalho
O comando diary (‘file’) instrui o MATLAB a registrar tudo o que é feito na janela do
MATLAB e a salvar os resultados no arquivo denominado ‘file’. Ao digitar diary on ou diary
off você alterna o registro. Arquivos de diários antigos podem ser visualizados por meio de um
editor de texto, ou impresso usando-se lpr em Unix. No MATLAB, eles podem ser visualizados
com o comando type file.

Salvando suas variáveis e matrizes


O comando diary salva os comandos que você digitou, assim como o resultado do MATLAB,
mas não salva o conteúdo de suas variáveis e matrizes. Essas variáveis podem ser listadas pelo
comando whos que também lista os tamanhos das matrizes. O comando save ‘xxx’ salvará as
matrizes e todas as variáveis listadas pelo comando whos no arquivo chamado xxx. O
MATLAB rotula esses arquivos com a extensão .mat em vez de .m, que são roteiros ou funções.
Os arquivos xxx.mat podem ser lidos pelo MATLAB mais tarde digitando-se load xxx.

Gráficos
O comando mais simples é plot (x, y) que utiliza dois vetores x e y do mesmo comprimento. Os
pontos ( xi , yi ) serão impressos e conectados por linhas sólidas.
Se não houver vetor x o MATLAB assumirá que x(i)=i. Então plot (y) tem espaçamento
igual no eixo-x: os pontos são (i, y(i)).

O tipo e a cor da linha entre os pontos poderão ser alterados por um terceiro argumento. O
default sem argumento é uma linha sólida negra “-“. Use help plot para muitas opções, entre as
quais indicamos algumas:

MATLAB 5: plot (x, y,´r + :´) imprime em r = vermelho com + para pontos e linha pontilhada

MATLAB 4: plot (x, y,´- -´) é uma linha em traços e plot (x, y,´.´) é uma linha pontilhada

Você pode omitir as linhas e imprimir somente pontos discretos de várias maneiras:
plot (x, y, ´o´) fornece círculos. Outras opções são ´+´ ou ´x´ ou ´∗´

Para dois gráficos nos mesmos eixos use plot (x, y, X, Y). Substitua plot por loglog ou
semilogy ou semilogx para alterar um ou ambos os eixos para a escala de logaritmos.

6
O comando axis ([a b c d]) colocará o gráfico em uma escala que se ajuste ao retângulo a ≤ x ≤
b, c ≤ y ≤ d. Para dar nome ao gráfico ou rotular o eixo-x ou o eixo-y coloque o nome desejado
entre aspas, como nesses exemplos:

title (‘altura do satélite’) xlabel (‘tempo em segundos’) ylabel (‘altura em metros’)

O comando hold mantém o gráfico atual quando você imprimir um novo gráfico. Ao
repetir hold, você limpará a tela. Para imprimir, ou salvar a janela de gráfico em um arquivo,
veja help print ou use
print -Pprintername print –d filename

Você também pode gostar