Tutorial MatLab
Tutorial MatLab
Tutorial MatLab
Curso de MATLAB
SUMÁRIO
APRESENTAÇÃO
O que é o MATLAB?
Carregando o MATLAB
Editor de Linhas de Comando
1 Introdução
1.1 Entrando com Matrizes Simples
1.2 Elementos das Matrizes
1.3 Declarações e Variáveis
1.4 Obtendo Informações da Área de Trabalho
1.5 Números e Expressões Aritméticas
1.6 Números e Matrizes Complexas
1.7 Formato de Saída
1.8 As Facilidades do HELP (Ajuda)
1.9 Funções
2 OPERAÇÕES COM MATRIZES
2.1 Transposta
2.2 Adição e Subtração
2.3 Multiplicação
2.4 Divisão
2.5 Exponenciação
3 OPERAÇÕES COM CONJUNTOS
3.1 Adição e Subtração
3.2 Multiplicação e Divisão
3.3 Exponenciação
3.4 Operações Comparativas
4 MANIPULAÇÃO DE VETORES E MATRIZES
4.1 Gerando Vetores
4.2 Elementos das Matrizes
5 FUNÇÕES
5.1 Integração Numérica
5.2 Equações Não-Lineares e Otimização
5.3 Equações Diferenciais
6 GRÁFICOS
6.1 Gráficos Bidimensionais
6.2 Estilos de Linha e Símbolo
6.3 Números Complexos
6.4 Escala Logarítmica, Coordenada Polar e Gráfico de Barras
6.5 Plotando Gráficos Tridimensionais e Contornos
6.6 Anotações no Gráfico
7 CONTROLE DE FLUXO
7.1 Laço for
7.2 Laço while
7.3 Declarações if e break
8 ARQUIVOS ".m"
9 OPERAÇÕES COM O DISCO
O que é o MATLAB?
Carregando o MATLAB
>> A = [1 2 3; 4 5 6; 7 8 9]
colocando colchetes em volta dos dados e separando as linhas por ponto e vírgula..
Quando se pressiona a tecla <enter> o MATLAB responde com
A=
1 2 3
4 5 6
7 8 9
>> B = inv(A)
As teclas com setas podem ser usadas para se encontrar comandos dados
anteriormente, para execução novamente ou sua reedição. Por exemplo, suponha
que você entre com
ans =
-0.1597
Além das teclas com setas, pode-se usar outras teclas para reeditar a linha de
comando. A seguir é dada uma breve descrição destas teclas:
1 INTRODUÇÃO
A=
l 2 3
4 5 6
7 8 9
>>A = [1 2 3
>> 456
>> 7 8 9]
A= [1 2 3
4S6
7 8 9]
>>gera
resulta em
x=
-l.3000 1.4142 23.0400
x=
-1.3000 1.4142 23.0400 0 0 1.3000
>> r= [ l0 11 12];
>> A= [A;r]
___________________________________________________________Departamento de Engenharia Elétrica 6
Curso de MATLAB _______________________________________________________________________
que resulta em
A=
1 2 3
4 5 6
7 8 9
10 11 12
Note que o vetor r não foi listado porque ao seu final foi acrescentado “;”.
Pequenas, matrizes podem ser extraídas de grandes matrizes usando “;”.
Por exemplo,
>> A = A(1:3,:);
ou simplesmente
>> expressão
>> 1900/81
que produz
ans=
23.4568
>> who
A ans r s x
Uma informação mais detalhada mostrando a dimensão de cada uma das variáveis
correntes é obtido com whos que para nosso exemplo produz:
Cada elemento de uma matriz real requer 8 bytes de memória, assim nossa
matriz A de dimensão 3x3 usa 72 bytes e todas variáveis utilizadas um total de 160
bytes.
3 -99 0.00001
9.637458638 1.602E-20 6.06375e23
1 ^ exponenciação
2 / divisão a direita
2 \ divisão a esquerda
3 * multiplicação
4 + adição
4 - subtração
Deve-se notar que existem dois símbolos para divisão: as expressões 1/4 e
4\1 possuem o mesmo valor numérico, isto é, 0,25. Parênteses são usados em sua
forma padrão para alterar o mesmo a precedência usual dos operadores
aritméticos.
>> z= 3 + 4*i
ou
>> z= 3 +4*j
Outro exemplo é
>> w= r * exp(i*theta)
>> ii = sqrt(-1);
>> z = 3 + 4*ii
>> x = [-1 0 1]
sempre resulta em
x=
-1 0 1
>> x = 1.e20*x
X=
l.0e+20 *
1.3333 0.0000
>> help
HELP topics:
Graph annotation.
1.9 Funções
· Funções especiais;
· Matrizes elementares;
· Matrizes especiais;
· Decomposição e fatorização de matrizes;
· Análise de dados;
· Polinômios;
· Solução de equações diferenciais;
· Equações não-lineares e otimização;
· Integração numérica;
· Processamento de sinais.
· Adição;
· Subtração;
· Multiplicação;
· Divisão a direita;
· Divisão a esquerda;
· Exponenciação;
· Transposta;
2.1 Transposta
>> A = [1 2 3; 4 5 6; 7 8 0]
>> B = A`
que resulta em
A=
1 2 3
4 5 6
7 8 0
B=
l 4 7
2 5 8
3 6 0
e
>> x = [-1 O 2]`
produz
x=
-1
0
___________________________________________________________Departamento de Engenharia Elétrica 16
Curso de MATLAB _______________________________________________________________________
>> Z = [1 2; 3 4] + [5 6; 7 8]*i
>> Z1 = Z‟
>> Z2 = Z.‟
que resulta em
Z=
1.0000 + 5.0000i 2.0000 + 6.0000i
6.0000 + 7.0000i 4.0000 + 8.0000i
Z1 =
1.0000 - 5.0000i 3.0000 - 7.0000i
2.0000 - 6.0000i 4.0000 - 8.0000i
Z2 =
1.0000 + 5.0000i 3.0000 + 7.0000i
2.0000 + 6.0000i 4.0000 + 8.0000i
>> C = A + B
C=
2 6 10
6 10 14
10 14 0
>> y = x - 1
resulta em
y=
-2
-1
1
2.3 Multiplicação
>> x'* y
é aceitável, e resulta em
ans =
4
>> x*y‟
ans =
2 l -l
0 0 0
-4 -2 2
>> y*x‟
ans =
2 0 -4
___________________________________________________________Departamento de Engenharia Elétrica 18
Curso de MATLAB _______________________________________________________________________
1 0 -2
-1 0 2
>> b = A'x
que resulta em
b=
5
8
-7
>> pi*x
ans =
-3.1416
0
6.2832
2.4 Divisão
>> z = A\b
resulta em
z=
-1
0
2
2.5 Exponenciação
>> A^3
ans =
então,
>> z = x .* y
resulta em
z=
4 10 18
>> z = x .\ y
resulta em
z=
4.0000 2.5000 2.0000
3.3 Exponenciação
>> z = x .^ y
resulta em
z=
l 32 729
>> z = x..^2
z=
l 4 9
>> z = 2.^[x y]
z=
2 4 8 16 32 64
Estes são os seis operadores usados para comparação de duas matrizes com
as mesmas dimensões:
< menor
<= menor ou igual
> maior
>= maior ou igual
== igual
~= diferente
>> 2 + 2 ~= 4
ans =
0
Pode-se usar, também os operadores lógicos & (e) e I (ou). Por exemplo,
>> 1= = 1 & 4 = = 3
ans =
0
>> 1 = = 1 | 4 = = 3
ans =
1
>> x = 1 : 5
x=
l 2 3 4 5
>> y = 0 : pi/4 : pi
que resulta em
y=
0.0000 0.7854 1.5708 2.3562 3.1416
>> z = 6 : -l : l
z=
6 5 4 3 2 1
k=
0 0.2000 0.4000 0.6000 0.8000 1.0000
A=
l 2 3
4 5 6
7 8 9
a declaração
resulta em
A=
l 2 3
4 5 6
7 8 10
A=
92 99 11 18 15 67 74 51 58 40
98 80 17 14 16 73 55 57 64 41
14 81 88 20 22 54 56 63 70 47
85 87 19 21 13 60 62 69 71 28
86 93 25 12 19 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 15 82 89 91 48 30 32 39 66
79 16 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59
então
>> A(1:5,3)
ans =
11
17
88
19
25
especifica uma submatriz 5x1, ou vetor coluna, que consiste dos cinco primeiros
elementos da terceira coluna da matriz A. Analogamente,
>> A(1:5,7:10)
ans =
74 51 58 40
55 57 64 41
56 63 70 47
62 69 71 28
68 75 52 34
é uma submatriz 5x4, consiste das primeiras cinco linhas e as últimas quatro
colunas.
Utilizando os dois pontos no lugar de um subscrito denota-se todos
elementos da linha ou coluna. Por exemplo,
>> A(1:2:5,:)
ans =
92 99 11 18 15 67 74 51 58 40
14 81 88 20 22 54 56 63 70 47
86 93 25 12 19 61 68 75 52 34
é uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas e todas
colunas da matriz A.
Muitos efeitos sofisticados são obtidos usando submatrizes em ambos os
lados das declarações. Por exemplo, sendo B uma matriz 10x10 unitária,
B=
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
a declaração,
>> B(1:2:7,6:l0) = A(S:-1:2,1:5)
produz
1 1 1 1 1 86 93 25 12 19
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 85 87 19 21 13
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 14 81 88 20 22
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 98 80 17 14 16
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
5 FUNÇÕES
· Integração numérica;
· Equações não-lineares e otimização;
· Solução de equações diferenciais.
function y = humps(x)
O gráfico da função é:
>> x = -l:0.0l:2;
>> plot(x,humps(x))
q=
26.3450
>> xm = fmin(„humps‟,0.5,1)
xm =
0.6370
>> ym = humps(xm)
ym =
11.2528
>> x = 0.5:0.01:1
>> plot(x, humps(x), xm, ym, „o‟)
xzl = fzero('humps',0)
xzl =
-0.1316
>> xz2=fzero('humps',1)
xz2 =
1.2995
>> x = -1:0.01:2
>> plot(x, humps(x), xzl, humps(xzl),'*', xz2, humps(xz2), '+'), grid
x + (x2 - 1) . x + x = 0
x1 = x1 . (1-x22) - x2
x 2 = x1
function xdot=volpol(t,x)
xdot=[0 0]
xdot(2)=x(l);
>> t0 = 0; tf = 20;
>> x0 = [0 0.25];
>> plot(t,x)
6 GRÁFICOS
>> t = 0:0.05:4*pi;
>> y = sin(t);
>> plot(t,y)
resulta em
Os tipos de linhas, símbolos e cores usados para plotar gráficos podem ser
controlados se os padrões não são satisfatórios. Por exemplo,
>> X = 0:0.05:1;
>> subplot(l2l), plot(X,X.^2,‟k*‟)
>> subplot(l22), plot(X,X.^2,‟k --„)
TIPO DE LINHA
- ----
-- -----------------
-. ---------
:
TIPO DE PONTO
+ +++++++++
x xxxxxxx
CORES
y amarelo
m lilás
c azul claro
r vermelho
g verde
b azul escuro
w branco
k preto
Por exemplo:
7 CONTROLE DE FLUXO
>>for i=1:5,
X(i)=i^2;
end
for i=1:8
for j=1:8,
A(i,j)=i+j;
B(i,j)=i-j;
end
end
C=A+B;
a = l; b = 15;
while a<b,
clc
a = a+l
b = b-l
pause(l)
end
disp(„fim do loop‟)
a condição a<b é testada. Se ela for verdadeira o corpo do laço, será executado.
Então a condição é retestada, e se verdadeira o corpo será executado
novamente. Quando o teste se tornar falso o laço terminará, e a execução
continuará no comando que segue o laço após o end.
for i = l:5,
for j = l:5,
if i = = j
A(i,j) = 2;
elseif abs(i-j) = = 1
A(i,j) = -1;
else
A(i,j) = 0;
end
end
end
antecipada de um for ou while. Um comando break faz com que o laço mais
interno seja terminado imediatamente. Por exemplo,
%modifica a matriz A
clc
x = ‟s‟;
for i = l:5,
if x = = „q‟,
break
end
j = l;
while j<=5,
[„A(„num2str(i) „,‟ num2str(j)‟) = „num2str(A(i,j))]
x = input(„Modifica? (s-sim, n-não, p-próxima linha, q-sair) =>‟);
if x = = ‟s‟,
A(i,j) = input(„Entre com o novo valor de A(i,j) = = >‟);
j=j+l;
clc
end
if x = = „n‟,
j=j+l;
clc
end
if x = = „p‟,
clc
break
end
if x = = „q‟,
clc
break
end
end
end
8 ARQUIVOS “.m”
>> ! Notepad
Os dados obtidos por outros programas podem ser importados pelo MATLAB, desde
que estes dados sejam gravados em disco no formato apropriado. Se os dados são
armazenados no formato ASCII, e no caso de matrizes, com colunas separadas
por espaços e cada linha da matriz em uma linha do texto, o comando load
pode ser usado. Por exemplo suponha que um programa em linguagem C, depois de
executado, monta o arquivo “teste.sai” (mostrado abaixo) que contém uma matriz.
Executando o comando:
>> teste
teste =
1 2 3
4 5 6
7 8 9
save load
save X load x
save arq1 X Y Z load arq1
save arq2.sai X Y Z -ascii load arq2.sai
save arq3.sai X Y Z -ascii -double load arq3.sai
Deve-se ressaltar que o comando save, quando usado para exportar os dados
do MATLAB em formato texto, exporta apenas um bloco contendo todas as
variáveis. E quando importamos estes comandos através do comando load, apenas
uma variável com nome do arquivo é importada. Por exemplo
>> X=rand(3,3)
X=
0.2190 0.6793 0.5194
0.0470 0.9347 0.8310
0.6789 0.3835 0.0346
>> Y = rand(3,3)
Y=
0.0535 0.0077 0.4175
0.5297 0.3835 0.6868
0.6711 0.0668 0.5890
arq2 =
10 REFERÊNCIAS
[1] MATLAB for Windows User‟s Guide, The Math Works Inc., 1991.
[2] Dongarra J.J., Moler C.B., Bunch, J.R, Stewart, G.W., LINPACK User's Guide,
Society for Industrial and Applied Mathematics, Philadelphia, 1979.
[3] Smith, B.T., Boyle, J.M., Dongarra, J.J., Garbow, B.S., Ikebe, Y., Klema, V.C.,
Moler, C.B., Matriz Eigensystem Routines - EISPACK Guide, Lecture Notes in
Computer Science, volume 6, second edition, Springer-Verlag, 1976.
[4] Garbow, B.S., Boyle, J.M., Dongarra, J.J., Moler, C.B., Matriz Eigensystem
Roulines EISPACK Gide Extension, Lecture Notes in Computer Science,
volume 51, Springer-Verlag, 1977.
[5] Golub, G.H., Van Loan, C.F., Matriz Computations, Johns Hopkins University
Press, 1983.
[7] Kreith, F., Princípios da Transmissão de Calor, Ed. Edgard Blücher Ltda., São Paulo,
1977.
11 LISTA DE EXERCÍCIOS
m=1 L=10
k=1 T1= 100
hL = 2 T8 = 25
a = 2500/20
a = 2500/20;
b = [1 2 3 4 5 6 7 8 9]
c = [1 2 3 ; 4 5 6 ; 7 8 9]
c = [c ; [10 11 12]
c(2,2) = 0
l = length(b)
[m,n] = size(b)
[m,n] = size(c)
who
whos
clear
who
b = l + 2 + 3 + 4 + ...
5+6-7
x=1:2:9
x = (0.8 : 0.2 : 1.4);
y = sin(x)
help sin
dir
a = 2^3
a = 4/3
format long
a = 4/3
format short
clear
a=[1 2 3 ; 4 5 6 ; 7 8 9];
b = a‟
c=a+b
c=a-b
a(l,:) = [-1 -2 -3]
c = a(:,2)
c = a(2:3, 2:3)
x = [- 1 0 2];
y = [-2 -1 1]‟;
x*y
c=x+2
a = [1 0 2; 0 3 4 ; 5 6 0];
___________________________________________________________Departamento de Engenharia Elétrica 54
Curso de MATLAB _______________________________________________________________________
size(a)
b = inv(a);
c = b*a
c = b/a
c = b\a
clear a b x y
whos
% Multiplicação de polinômios
% x3 = (x^2 + 3x + 2).(x^2 - 2x + 1)
d = det(b)
l = eig(b)
help det
help eig
clear
help save
help load
a = [1 2 3 4 5 6 7 8];
b = a*2;
c = a - 1;
save arquivo 1 a b c
dir
clear
whos
load arquivo 1
whos
% Em que arquivo estão gravados os vetores a, b e c?
clear
% RECURSOS GRÁFICOS
y = [0 2 5 4 1 0];
plot(y)
help pi
t = 0:.4:4*pi
y = sin(t)
z = cos(t);
plot(t, y, „.‟, t, z “-.“)
title(„Funções‟)
xlabel(“t”)
ylabel(“Seno e Cosseno”)
text(3, 0.5, „Seno‟)
___________________________________________________________Departamento de Engenharia Elétrica 56
Curso de MATLAB _______________________________________________________________________
t = (-1:.1:1);
x = t.^2;
xr = x+0.2(rand(size(x))-.5);
figure(1); plot(t, xr, „g*‟)
p = polyfit(t, xr, 2)
xa = po1yval(p, t);
figure(l); plot(t, xr, „g*‟, t, xa)
% Após a próxima instrução, clique em dois pontos do gráfico, e os valores
% das coordenadas serão retornados em [x,y]
[x, y] = ginput(2)
n=3;
m = 3;
for i = 1: m
for j= 1 : n
a(i, j) = i + j;
end;
end
disp(„Matriz A‟)
disp(a)
%final do programa testel.m
v = 1:1:10;
m = media(v);
s = sprintf(„\n A média é: %4.2f‟, m);
disp(s);
% final do programa teste2.m
function x = media(u)
% function x = media(u) calcula a média do vetor u, colocando o resultado em x
x = sum(u)/length(u);
% final da subrotina media.m
teste2
echo on
teste2
echo off
clear
n = 30;
m = 30;
for i = 1:m
for j = 1:n
a(i,j) = sqrt(i+j);
end
end
b = [a+0.5 a‟-0.5;
(a.^2)/5 ((a‟-0.1).^2)/2];
mesh(b)