Buscar

Tutorial do MATLAB

Prévia do material em texto

1 
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 
E = eye(3) 
criar u 
u = E(:,1) 
mudar E 
E(3,1) = 5 
multiplicar Eu 
u = 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 
A = ones(3)+ eye(3) 
criar b 
b=A(:,3) 
inverter A 
C = inv(A) 
resolver Ax = b 
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. 
2 
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 u 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 
3 
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) 
ones(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! 
4 
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. 
5 
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). 
6 
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. 
7 
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

Continue navegando