Escolar Documentos
Profissional Documentos
Cultura Documentos
1 0
0
4 0
3 0 4 0
2 0 3 0
2 0
1 0 1 0
0 0
Introdução ao MATLAB
Agosto de 1997
Introdução ao MATLAB 1
A maneira mais simples de entrar pequenas matrizes é utilizar uma lista explícita
de elementos. Em uma lista de elementos, os elementos aparecem entre colchetes
separados por espaços ou vírgula, sendo o ponto-e-vírgula utilizado para indicar o fim de
uma linha. As matrizes são criadas e dimensionadas automaticamente não sendo
necessário nenhuma declaração inicial de tipo ou dimensão. Por exemplo, digitando
» A = [1 2 3; 4 5 6; 7 8 9] ↵
resulta
A=
1 2 3
4 5 6
7 8 9
Matrizes grandes podem ser separadas em várias linhas de entrada com a tecla ↵
substituindo os ponto-e-vírgulas:
»A=[123↵
456↵
7 8 9] ↵
Prof. Eduardo Nunes Gonçalves 2
Elementos de matrizes
6 -56 0.0005
5.3856091 2.3265E-12 8.00412e9
resulta em
Os elementos das matrizes podem ser referenciados com índices entre parêntesis:
» x(6) = abs(x(1)) ↵
que produz
Note que o tamanho do vetor x é redimensionado para acomodar o novo elemento, sendo
que os elementos indefinidos são considerados nulos.
Matrizes grandes podem ser construídas usando outras matrizes como elementos.
Por exemplo, para inserir uma nova linha na matriz A:
resulta em
B= 1 2 3
4 5 6
7 8 9
10 11 12
ou
» B = [A [10 11 12]’] ↵
resulta em
B= 1 2 3 10
4 5 6 11
7 8 9 12
Introdução ao MATLAB 3
» B = A(1:2,2:3) ↵
resulta
B= 2 3
5 6
Expressões e Variáveis
variável = expressão
ou simplesmente
expressão
O resultado de uma expressão é uma matriz que é armazenada na memória para uso
futuro. Se o nome da variável e o sinal = são omitidos, então o resultado da expressão é
armazenado em uma variável chamada de ans que significa "answer". Por exemplo:
» 19/8 ↵
produz
ans = 2.3750
» 20/5; ↵
Para ver o valor de uma variável basta entrar com o seu nome:
» ans ↵
produz
ans = 4
Quando uma expressão não couber em uma única linha, pode-se usar três pontos
(separados de um número por um espaço) antes da tecla ↵ para indicar que a expressão
prossegue na próxima linha:
Os nomes das variáveis e funções são formados por uma letra seguida de qualquer
numero de letras e dígitos (ou _). Apenas os primeiros 19 caracteres são considerados.
As funções eye( ), ones( ) e zeros( ) podem ser usadas para gerarem matrizes quadradas
ou retangulares:
» C = eye(3) ↵
Para gerar uma matriz retangular passe para a função o número de linhas e
colunas:
» C = eye(3,4) ↵
resulta
C=
1 0 0 0
0 1 0 0
0 0 1 0
Introdução ao MATLAB 5
» x = ones(2) ↵
» y = zeros(1,4) ↵
» w = ones(3,2) ↵
resultam
x= 1 1
1 1
y= 0 0 0 0
w= 1 1
1 1
1 1
Você pode usar estas funções para construir matrizes grandes. Por exemplo, para
obter a matriz:
F= 0 1 0 0
0 0 1 0
0 0 0 1
2 1 3 2
» F = [zeros(3,1) eye(3); 2 1 3 2] ↵
Para gerar uma matriz identidade com a mesma dimensão de uma outra matriz utilize o
comando size( ) que retorna o número de linhas e colunas de uma matriz:
» A = [1 2 3; 4 5 6; 7 8 9] ↵
» C = eye(size(A)) ↵
resulta
C=
1 0 0
0 1 0
0 0 1
Obs: O uso do comando eye(A) produz o mesmo efeito, só que existe a previsão de não
ser mais aceito em futuras versões do MATLAB.
» C = A - 2*eye(size(A)) ↵
Prof. Eduardo Nunes Gonçalves 6
» G=rand(2,4) ↵
resulta por exemplo em
G = 0.2190 0.6789 0.9347 0.5194
0.0470 0.6793 0.3835 0.8310
A função diag( ) pode ser usada tanto para extrair a diagonal de uma matriz como
para criar uma matriz diagonal:
» C = diag([-3 -1 -5]) ↵
resulta
C= -3 0 0
0 -1 0
0 0 -5
» x = diag(A) ↵
resulta
x= 1
5
9
» C = diag(diag(A)) ↵
resulta
C= 1 0 0
0 5 0
0 0 9
A seguir são apresentados exemplos do uso das funções tril( ) e triu( ):
» L = tril(A) ↵
resulta
L= 1 0 0
4 5 0
7 8 9
» U = triu(A) ↵
resulta
U= 1 2 3
0 5 6
0 0 9
Introdução ao MATLAB 7
» who ↵
A ans s x
Além das variáveis criadas, existe um grupo de variáveis permanentes: eps, pi,
Inf, NaN, realmin e realmax. A variável eps = 2-52 = 2,2204x10-16 é o menor número que
somado a 1 cria um número de ponto flutuante maior que 1. As variáveis
realmin = 2-1022 = 2,2251x10-308 e realmax = 21024 = 1,7977x10308 são respectivamente o
menor e o maior números positivos de ponto flutuante que o computador pode
representar. A variável pi equivale a constante π. A variável Inf significa infinito. Um
modo de gerar Inf é por uma divisão por zero:
» s = 1/0 ↵
resulta em
s= Inf
Ao contrário das maiorias das linguagens de programação, uma divisão por zero apenas
emite uma mensagem de aviso sem abortar o programa ou o comando em execução.
A variável NaN significa "Not a Number" sendo gerada por uma indefinição:
» s = 0/0 ↵
resulta em
s= NaN
Prof. Eduardo Nunes Gonçalves 8
Uma visão mais detalhada das variáveis é obtida através do seguinte comando:
» whos ↵
que produz
Name Size Element Bytes Density Comple
s x
A 3 by 3 9 72 Full No
ans 1 by 1 1 8 Full No
s 1 by 1 1 8 Full No
x 1 by 5 5 40 Full No
Grand total is 16 elements using 128 bytes
Operadores aritméticos
+ adição
- subtração
* multiplicação
/ divisão à direita
\ divisão à esquerda
^ potenciação
» 2/4 ↵
resulta
ans = 0.5000
» 2\4 ↵
resulta
ans = 2.0000
Na versão inicial para DOS, para entrar com números complexos era necessário
utilizar uma das variáveis predefinidas: i ou j; que são definidas como
i=sqrt(-1)
Deste modo para entrar com o numero complexo z = 3 + 4i usava-se o seguinte
comando:
Introdução ao MATLAB 9
» z = 3 + 4*i ↵
Nas novas versões já é possível escrever os números complexos diretamente como:
» z = 3 + 4i ↵
ou
» z = 3 + 4j ↵
Uma outra opção é escrever o número complexo na forma: w = r*exp(i*theta),
onde r e theta são as variáveis contendo o módulo e o ângulo do vetor, respectivamente.
As matrizes com elementos complexos podem ser geradas de duas formas:
Formatos de saída
» x = [-1 0 1] ↵
resulta em
x = -1 0 1
Prof. Eduardo Nunes Gonçalves 10
» y = [4/3 1.2345e-6] ↵
resulta
y = 1.3333 0.0000
A seguir são apresentados vários exemplos de tipos de formatos e os seus
resultados:
» format short e ↵
»y↵
produz
y = 1.3333E+000 1.2345E-006
» format long ↵
»y↵
produz
y = 1.333333333333333 0.000001234500000
» format long e ↵
»y↵
produz
y = 1.333300000000000E+000 1.234500000000000E-006
» format rat ↵
»y↵
produz
y = 4/3 1/810045
Com os formatos short e long, se existir pelo menos um elemento cujo módulo é
maior que 1000 ou menor que 0,001, um fator de escala comum é aplicado a todos os
elementos da matriz:
» format ↵
» y = 1e20*y ↵
resulta
y= 1.0E+020 *
1.3333 0.0000
Introdução ao MATLAB 11
Pedindo auxílio
Para obter uma lista dos tópicos que possuem auxílio, digite:
» help ↵
Para obter o auxílio de um tópico específico, digite help tópico. Por exemplo,
» help inv ↵
» lookfor integration ↵
Esse comando é muito útil para descobrir quais as funções disponíveis no MATLAB que
executam determinada operação.
Matrizes Vazias
A expressão
x=[]
fixa x com dimensão zero por zero. Subseqüentes usos da variável x não levam a uma
condição de erro. Esta expressão é diferente do comando:
clear x
que elimina a variável da lista de variáveis existentes. A função exist( ) permite verificar
a existência de uma matriz, ao passo que a função size( ) permite verificar as dimensões
de uma matriz:
» x = [ ]↵
» size(x) ↵
» exist(‘x’) ↵
» clear x ↵
» exist(x) ↵
» size(x) ↵ % produz erro de variável inexistente
Observe que para a função exist( ), o MATLAB retorna ‘1’ para indicar
verdadeiro e ‘0’ para indicar falso.
Para sair do MATLAB digite quit ou exit. Antes de sair do MATLAB, pode-se
salvar as variáveis para uso posterior através do comando:
Prof. Eduardo Nunes Gonçalves 12
» save ↵
Este comando salva todas as variáveis no arquivo matlab.mat. A forma mais geral deste
comando é
save nome_arquivo lista_variáveis
Por exemplo,
» save temp A y ↵
salva as variáveis x e y no arquivo temp.mat. Para recuperar as variáveis armazenadas no
arquivo matlab.mat utilize o comando load como no exemplo a seguir, onde o camando
clear é usado para apagar todas as variáveis da memória:
» clear ↵
» whos ↵
» load ↵
» whos ↵
ou para ler as variáveis no arquivo temp.mat:
» clear ↵
» load temp ↵
» whos ↵
2. OPERAÇÕES MATRICIAIS
Matriz Transposta
» A = [1 2 3;4 5 6;7 8 0] ↵
» B = A' ↵
resulta em
B=
1 4 7
2 5 8
Introdução ao MATLAB 13
3 6 0
» x = [-1 0 2]' ↵
produz
x=
-1
0
2
Adição e Subtração
»C=A+B↵
resulta
C=
2 6 10
6 10 14
10 14 0
»y=x-1↵
fornece
y= -2
-1
0
Multiplicação de Matrizes
» x'*y ↵
resulta
ans =
4
» x*y' ↵
fornece
ans =
2 1 -1
0 0 0
-4 -2 2
» b = A*x ↵
resulta
b=
5
8
-7
Um escalar pode multiplicar ou ser multiplicado por uma matriz, como por
exemplo:
» pi*x ↵
Divisão de Matrizes
A\B = inv(A)*B
B/A = B*inv(A)
De maneira geral:
Por exemplo, deste que o vetor b foi calculado a partir de A*x, então a expressão
» z = A\b ↵
resulta
z= -1
0
Introdução ao MATLAB 15
2
o qual é o valor do vetor x.
Potenciação de Matrizes
» A^3 ↵
terá o mesmo resultado que
» A*A*A ↵
Por exemplo,
» expm(A) ↵
produz um resultado diferente que
» exp(A) ↵
o qual calcula a função ex para cada elemento individual de A.
Da mesma forma,
» sqrt(A)↵
calcula a raiz quadrada de cada elemento de A, ao passo que
» B = sqrtm(A)↵
Calcula a matriz B tal que B*B=A
» A = [ 1 2 3; 4 5 6; 7 8 0 ] ↵ » B = [ 1 2 3; 4 5 6; 7 8 9 ] ↵
Prof. Eduardo Nunes Gonçalves 16
» inv(A) ↵ » inv(B) ↵
» det(A) ↵ » det(B) ↵
» rank(A) ↵ » rank(B) ↵
Os autovalores da matriz A podem ser calculados pela função eig() que pode ser usada de
dois modos distintos:
» eig(A) ↵
» [V,D] = eig(A) ↵
» x = [1 2 3] ↵
» y = [4 5 6] ↵
» z = x.*y ↵
resulta
z= 4 10 18
» z = x.\y ↵
resulta
» z = x.^y ↵
resulta
z= 1 32 729
» z = x.^2 ↵
fornece
z= 1 4 9
» z = 2 .^[x y] ↵
produz
z= 2 4 8 16 32 64
Quando usando operações sobre arranjos deve-se ter o cuidado de deixar um
espaço entre um número e o símbolo da operação. Caso isto não seja feito, o MATLAB
interpretará o ponto como ponto decimal e a operação passa a ser matricial.
4. Vetores e Índices
Gerando Vetores
» x = 1:5 ↵
gera um vetor linha com os elementos variando de 1 a 5 com incremento de um:
x=
1 2 3 4 5
» y = 0:pi/4:pi ↵
resulta em
» z = 5:-1:1 ↵
gera
z= 5 4 3 2 1
» x = (0:0.02:3)' ↵
» y = exp(-x).*sin(x) ↵
» [x y] ↵
» plot(x,y) ↵
» x = linspace(-2, 5, 6) ↵
que resulta
Índices
» A = [1 2 3;4 5 6;7 8 0] ↵
» A(3,3) = A(1,2) + A(3,1) ↵
resulta
A= 1 2 3
4 5 6
7 8 9
onde o elemento da linha 3, coluna 3 passa a ser a soma do elemento da linha 1, coluna 2,
mais o elemento da linha 3, coluna 1.
Introdução ao MATLAB 19
Os índices podem ser vetores quando se deseja selecionar mais que uma linha ou
coluna:
» B=A(1:2,3) ↵
resulta
B= 3
6
ou
» x = A(2,1:3) ↵
que fornece
x= 4 5 6
Quando se deseja uma linha completa ou uma coluna completa, como no exemplo acima,
pode se usar o dois-pontos como índice:
» x = A(2,:) ↵
» y = A(:,3) ↵
Para eliminar uma linha ou coluna de uma matriz pode-se usar a matriz vazia [].
Por exemplo para eliminar a coluna 2 da matriz A basta executar o comando:
» A(:,2) = [] ↵
» y = x(3:-1:1) ↵
resulta
y= 6 5 4
ou
» y = x([3 1 2]) ↵
que fornece
y=
6 4 5
Prof. Eduardo Nunes Gonçalves 20
5. Polinômios
digite,
» p = [2 1 3 0 4 8] ↵
Para calcular as raízes do polinômio use,
» roots(p) ↵
Para obter o polinômio para um determinado conjunto de raízes, pode ser utilizada a
função poly( ):
» r = [-1 -2] ↵
» p = poly(r) ↵
resultando
p=
1 3 2
A função poly( ) também pode ser utilizada para obter a equação característica de uma
matriz quadrada:
» A = [1 2 3;4 5 6;7 8 0] ↵
» q = poly(A) ↵
resulta
p= 1 -6 -72 -27
Para obter os autovalores (que são as raízes do polinômio característico), pode-se utilizar
o seguinte comando
» r = roots(q) ↵
ou usar diretamente a função eig(A) vista anteriormente.
Para calcular os valores de um polinômio p, para um conjunto de valores x,
utiliza-se a função polyval():
» x = 0:10; ↵
» y = polyval(p,x) ↵
Introdução ao MATLAB 21
» f = [0 2 0 1] ↵
» g = [3 0 5 4] ↵
»h=f+g↵
que resulta
g= 3 2 5 5
» f = [2 0 1] ↵
» g = [3 0 5 4] ↵
» h = conv(f, g) ↵
» [q, r] = deconv(h, f) ↵ % q(x) = quociente e r(x) = resto da divisão
que resultam
» h = polyder(g) ↵
resulta
h= 9 0 5
6. Gráficos
O MATLAB possui vários tipos diferentes de gráficos. Para ver os tipos de
gráficos e comandos disponíveis use o comando help para os tópicos plotxy e plotxyz
para gráficos de duas e três dimensões respectivamente. A tabela a seguir apresenta os
tipos de gráficos mais comuns.
Uma vez que o gráfico foi criado, pode-se adicionar as seguintes características:
O MATLAB pode trabalhar com várias janelas gráficas ao mesmo tempo. Para
esse fim existe um conjunto de comandos específicos.
Gráficos Lineares
» gtext(‘Curva 1’) ↵
Você também pode ler os valores do gráfico selecionados pelo mouse através da
função ginput onde o terceiro parâmetro é o número de pontos que serão selecionados:
» [x y] = ginput(3) ↵
» t = 0:0.05:4*pi; ↵
» y = sin(t) ↵
» plot(t,y) ↵
onde X1, Y1, ..., Xn, Yn são os pares de vetores necessários para cada curva. Pode-se
definir a cor ou o tipo de linha para cada uma das curvas. Os tipos de linhas, marcas e
cores disponíveis são listados na tabela a seguir.
» p = [1 2 4 1 3] ↵
» x = 0:0.1:1 ↵
» y = polyval(p,x) ↵
» pe = polyfit(x,y,2) ↵
» ye = polyval(pe,x) ↵
» plot(x,y,x,ye) ↵
Prof. Eduardo Nunes Gonçalves 24
Para escolher o tipo de linha, marca ou cor, passe um terceiro parâmetro entre
aspas como no exemplo abaixo cujo gráfico resultante é apresentado a a seguir.
» plot(x,y,'*r',x,ye,'--') ↵
11
10
3
0 0.2 0.4 0.6 0.8 1
Para alterar o escalonamento automático dos eixos dos gráficos utilizado pelo
MATLAB pode-se usar o comando axis(V), onde V é um vetor com quatro elementos
especificando os valores mínimo e máximo do eixo x e os valores mínimo e máximo do
eixo y. O uso do comando axis() pode ser verificado através do seguinte exemplo:
» v = [0 0.5 3 4]; ↵
» axis(v) ↵
Gráficos 3D
» t = 0:pi/50:10*pi; ↵
Introdução ao MATLAB 25
4 0
3 0
2 0
1 0
0
1
0 .5 1
0 0 .5
0
-0 .5 -0 .5
-1 -1
» plot3(sin(t),cos(t),t); ↵
» A = zeros(10) ↵
» A(4:6,4:6) = ones(3) ↵
» mesh(A) ↵
0.8
0.6
0.4
0.2
0
10
10
5
5
0 0
Operadores Relacionais
Existe seis operadores relacionais que podem ser utilizados para comparar duas
matrizes de mesma dimensão elemento por elemento. O resultado é uma matriz com a
mesma dimensão dos operandos composta de 0's e 1's, onde o 0 representa falso e o 1
representa verdadeiro. Os operadores relacionais são apresentados na tabela a seguir.
Operadores Relacionais
< menor que
<= menor igual
> maior que
>= maior igual
== igual
~= diferente
A função find() é útil para determinar os elementos da matriz que não são nulos.
Se não houver nenhum elemento não nulo, esta função retorna uma matriz vazia.
Operadores Lógicos
Operadores Lógicos
& AND
| OR
~ NOT
if a > b
maior = a
else
maior = c
end
Introdução ao MATLAB 27
Quando se deseja testes em sequência, o comando elseif pode ser útil. No exemplo
a seguir a variável “sinal” receberá os valores 0, -1 ou 1 caso a variável “a” seja nula,
negativa ou positiva respectivamente.
if a == 0
sinal = 0
elseif a < 0
sinal = -1
else
sinal = 1
end
O comando for permite que um grupo de comandos seja repetido por um número
determinado de vezes. A forma geral do comando for é
for v = expressão
comandos
end
( At ) 2 ( At ) 3
e At = I + At + + + ...
2! 3!
usando 11 termos para t = 0,1.
» A = [ 0 1; -2 -3] ↵
» t = 0.1 ↵
» termo = eye(size(A)) ↵
» serie = termo ↵
» for i=1:10 ↵
termo = termo*A*t/i; ↵
serie = serie+termo; ↵
end ↵
» serie ↵
» expm(A*t) ↵
while expressão
comandos
end
Prof. Eduardo Nunes Gonçalves 28
A variável eps que representa a diferença entre 1 e o número mais próximo pode ser
calculada através de
» eps = 1; ↵
» while (1+eps) > 1, eps=eps/2; end ↵
» eps=2*eps ↵
O comando break pode ser usado em conjunto com o comando while para forçar
o fim da repetição em um ponto diferente do início. O seguinte exemplo ilustra o uso do
comando break.
» while 1 ↵
n = input('Entre n (0 para terminar):'); ↵
if n == 0, break, end ↵
sqrt(n) ↵
end ↵
» help media ↵
» v = [1 2 4 6] ↵
» m = media(v) ↵