Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso de Introdução
ao
MATLAB
PAULO ASSUNçÃO
1
DEE - CURSO DE INTRODUÇÃO AO MATLAB
INDICE
2
DEE - CURSO DE INTRODUÇÃO AO MATLAB
INTRODUÇÃO
Para criar uma variável no MATLAB basta escrever seu nome logo após o
prompt e separado por igual o valor que se deseja armazenar na variável. Por
exemplo, considere uma variável escalar:
Caso você não queira ver os valores armazenados na variável que foi
definida ou resultado de um cálculo, coloque “ ; ” no final da linha. Veja o
exemplo abaixo:
Para criar um vetor coluna coloque os elementos separados por ponto-e-
vírgulas:
3
DEE - CURSO DE INTRODUÇÃO AO MATLAB
1.2-Auto-ajuda em MATLAB
» help sqrt
É fácil perceber que o comando help apesar de poderoso tem uma limitação.
Você precisa saber o comando sobre o qual você deseja informação. Nem sempre é
o que acontece. Suponha que você deseje informação a respeito de interpolação de
funções, mas não conhece nenhum comando do MATLAB responsável por tal
tarefa. Você ainda pode usar o help, mas você vai fazê-lo de uma forma mais
geral. Digitando help apenas no prompt do MATLAB você terá acesso a uma lista
de tópicos. Experimente e verá:
4
DEE - CURSO DE INTRODUÇÃO AO MATLAB
» help
HELP topics:
Não memorize esta lista. Ela está a sua disposição no MATLAB. Voltando
ao nosso problema, para saber funções relacionadas com interpolação basta digitar
help polyfun e o MATLAB apresentará uma lista com os comandos de
interpolação e assim novos helps podem ser utilizados.
» lookfor interpolation
contents.m: % Polynomial and interpolation functions.
ICUBIC Cubic Interpolation of a 1-D function.
INTERP1 1-D data interpolation (table lookup).
INTERP2 2-D data interpolation (table lookup).
INTERP3 2-D biharmonic data interpolation and gridding.
INTERP4 2-D bilinear data interpolation.
INTERP5 2-D bicubic data interpolation.
5
DEE - CURSO DE INTRODUÇÃO AO MATLAB
Index: possui uma lista dos comandos. É só clicar em um deles para ter a
sua descrição.
1.3.1-Operadores aritméticos
1.3.1.1-Sobre escalares
6
DEE - CURSO DE INTRODUÇÃO AO MATLAB
1.3.1.2-Sobre vetores
Operadores Descrição
< Menor que
> Maior que
<= Menor que
>= Maior que
== Igual
~= Diferente
» -2<4
ans=1
7
DEE - CURSO DE INTRODUÇÃO AO MATLAB
» a=[ 1 3 4 2 5 6];
» b=5-a; Com esse comando o MATLAB comparou
» teste=a>b os dois vetores coordenada a coordenada e
expressou o resultado do teste numa variá-
teste = vel devidamente definida para esse fim.
0 1 1 0 1 1
» A=[ 1 3 4; 2 5 6; 9 7 8]
Uma vez que já temos a matriz definida podemos fazer uma série de
manipulações com ela. Vejamos algumas:
8
DEE - CURSO DE INTRODUÇÃO AO MATLAB
» v=[- 2 5 1];
» C=B;
» C(:,6)=v' Com este comando você está informando que
todos os elementos da sexta coluna de C é igual
C= à transposta do vetor v.
0 0 0 0 0 -2
0 1 1 0 3 5
1 1 1 0 0 1
» D=zeros(3) Este comando lhe possibilita criar uma matriz nula
de ordem três. Na prática isto serve como uma re
D= serva de memória.
0 0 0
0 0 0
0 0 0
9
DEE - CURSO DE INTRODUÇÃO AO MATLAB
1 1 0
1 0 0
0 0 0
1 2 3
0 0 0
0 0 0
Este comando concatena numa mesma matriz
» F=[B D] as matrizes B e D. O resultado dessa
operação é referenciado como uma nova
F= matriz, F.
0 0 0 0 0 1 2 3
0 1 1 0 3 0 0 0
1 1 1 0 0 0 0 0
10
DEE - CURSO DE INTRODUÇÃO AO MATLAB
9 7 8 3 4
2 5 6 5 6
1 3 4 7 8
1 1 1
1 1 1
1 1 1
J=
0 0 0
0 0 0
0 0 0
0 0 0
1 3 4
9 7 8
» J([1 3],:)=[ ]
Assim você exclui as linhas 1 e 3 de J. O mesmo
pode ser feito sobre as colunas.
J=
1 3 4
11
DEE - CURSO DE INTRODUÇÃO AO MATLAB
Grandeza x Grandeza y
0 0.02
1 0.57
2 0.99
3 1.27
4 1.50
5 1.65
6 1.78
7 1.81
8 1.86
9 1.90
10 1.92
15 1.98
20 1.99
» plot([0 1 2 3 4 5 6 7 8 9 10 15 20],[0.02 0.57 0.99 1.27 1.50 1.65 1.78 1.81 1.86
1.90 1.92 1.98 1.99],'r') 1.8
2
1.6
1.4
1.2
0.8
0.6
0.4
0.2
0
0 5 10 15 20
12
DEE - CURSO DE INTRODUÇÃO AO MATLAB
13
DEE - CURSO DE INTRODUÇÃO AO MATLAB
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
-15 -10 -5 0 5 10 15
1 1
0.8 0.8
0.6 0.6
0.4 0.4
0.2 0.2
0 0
-0.2 -0.2
-0.4 -0.4
-0.6 -0.6
-0.8 -0.8
-1 -1
-10 -5 0 5 10 -10 -5 0 5 10
14
DEE - CURSO DE INTRODUÇÃO AO MATLAB
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
15
DEE - CURSO DE INTRODUÇÃO AO MATLAB
Para inserir grades, título, nomes aos eixos e texto numa determinada
posição do gráfico, usa-se os comandos listados abaixo.
Veja o exemplo:
0.8 exp(-x)
0.6
cos(5x)
0.4
0.2
y 0
exp(-x)*cos(5x)
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
x
16
DEE - CURSO DE INTRODUÇÃO AO MATLAB
Você deve estar lembrado de quão trabalhoso era esboçar uma curva cuja
equação era dada em coordenadas polares. Interseções, simetrias, avaliação em
alguns pontos, eram alguns dos recursos utilizados para levar a cabo tal tarefa. Em
MATLAB, você dispõe do comando polar, cujos argumentos são o angulo
vetorial θ e o raio vetor r. Vejamos um exemplo simples. Suponha que desejamos
plotar um arco de 30º a 60º pertencente a uma circunferência de raio 2. Os
comandos abaixo realizam tal tarefa. 90
2
120 60
1.5
» theta=pi/6:pi/60:pi/3;
» r=2*ones(size(theta)); 150 1 30
» polar(theta,r,'r*')
0.5
180 0
210 330
240 300
270
150 6.2832 30
» theta=0:pi/60:4*pi;
» r=theta; 180 0
» polar(theta,r)
210 330
240 300
270
17
DEE - CURSO DE INTRODUÇÃO AO MATLAB
O que pode ser feito para resolver essa situação? O MATLAB possui o
comando axis que lhe permite total controle sobre a personalização dos eixos
horizontal e vertical. A tabela abaixo mostra as características e variações desse
comando.
Comandos Descrição
axis([xmin xmax ymin ymax]) O vetor que serve de argumento para o
comando tem como coordenadas os valores
minímos e máximos dos eixos horizontal e
vertical.
axis auto Retorna ao escalonamento automático, onde o
axis(‘auto’) xmin=min(vetor a ser plotado no eixo
horizontal), xmax=max(vetor a ser plotado no
eixo horizontal), etc.
axis(axis) Fixa a escala nos limites atuais de modo que se
o comando hold for executado, os gráficos a
serem plotados na mesma janela figure usam
os mesmos limites de eixos.
axis(xy) Usa a forma padrão de coordenadas
axis(‘xy’) cartesianas, ou seja o menor par de
coordenadas é plotado a esquerda e os valores
do eixo horizontal aumentam para a direita, ao
mesmo tempo em que os do vertical aumentam
para cima.
axis ij Usa a forma matricial em que o menor par de
axis(‘ij’) coordenadas é colocado no canto superior
esquerdo. O eixo horizontal cresce para a
direita enquanto que o vertical de cima para
baixo.
axis(square) Torna o gráfico quadrado e não mais
axis(‘square’) retangular como é o padrão.
axis equal Define o mesmo fator de escalonamento para
axis (‘equal’) ambos os eixos
axis normal Anula os efeitos dos dois comandos acima.
axis (‘normal’)
axis off Apagar nome de eixos, títulos, grades e
axis (‘off’) marcadores. Só não atua sobre text e gtext.
axis on Liga nome de eixos, marcadores e grades
axis (‘on’)
18
DEE - CURSO DE INTRODUÇÃO AO MATLAB
1.6-Gráficos tridimensionais
» t=0:pi/60:20*pi;
» plot3(sin(t),cos(t),t,'r') 80
60
Observe que foi utilizado uma
40
hélice circular parametrizada
segundo um parâmetro t. 20
Outro fato a ser observado é
0
que vc pode continuar 1
editando as cores usando o 0.5
0.5
1
0
mesmo procedimento já -0.5 -0.5
0
conhecido. -1 -1
Obs.: A exemplo do que acontecia para gráficos 2D, é possível nomear o gráfico e
seus eixos. Inclusive o eixo z. Use o comando zlabel para isso. O comando axis
tem como argumento agora um vetor com 6 coordenadas. [xmin xmax ymin ymax
zmin zmax]. Ou seja, os comando de formatação seguem o padrão já conhecido
com extensões bastante intuitivas.
19
DEE - CURSO DE INTRODUÇÃO AO MATLAB
20
DEE - CURSO DE INTRODUÇÃO AO MATLAB
» Z=X.^2+Y.^2;
» mesh(Z)
Veja que foi usado
mesh(Z), ou seja foi
80
plotada a matriz Z
60 elemento a elemento.
40
Cada ponto desta
curva é da forma
20
(i,j,Zij). Portanto, Z11
0 foi representado por
15
10 15 (1,1,Z11).
10
5
5
0 0
A outra forma é:
» mesh(X,Y,Z)
21
DEE - CURSO DE INTRODUÇÃO AO MATLAB
são os mesmos de rede exceto pelo fato de que os espaços entre as linha são
preenchidos com uma textura. Após a construção das matrizes X e Y, basta usar a
função surf ao invés da função mesh. Veja esta função aplicada ao exemplo
anterior:
» surf(X,Y,Z)
50
40
30
20
10
0
5
5
0
0
-5 -5
22
DEE - CURSO DE INTRODUÇÃO AO MATLAB
» i^2 » j^2
ans = ans =
» z1=6+8*i
z1 =
6.0000+ 8.0000i
23
DEE - CURSO DE INTRODUÇÃO AO MATLAB
ponto formado por essa duas coordenadas. Isto é feito utilizando os comandos real
e imag, que retornam, respectivamente, as partes real e imaginária do seu
argumento complexo. Vejamos:
» a=real(z1) » b=imag(z1)
a= b=
6 8
e assim:
» plot(a,b,'ro')
» xlabel('eixo real')
» ylabel('eixo imaginário')
» title('6+8i')
9
6+8i
8.8
eixo 8.6
ima 8.4
giná
8.2
rio
8
7.8
7.6
7.4
7.2
7
5 5.5 6 6.5 7
eixoreal
24
DEE - CURSO DE INTRODUÇÃO AO MATLAB
» compass(z1)
90
10
120 60
8
Obs.: É importante
150
6
30
ressaltar que esse
4 resultado foi obtido
2 utilizando-se a versão 5.0
180 0
do MATLAB. Se a 4.0 for
utilizada o resultado
diferirá um pouco do aqui
apresentado. Ele não será
210 330
representado sobre um
“papel” de coordenadas
240 300
polares. Experimente.
270
Magnitude= 10
Argumento= 0.923
» mag=10;
» theta=0.9273;
» z1=mag*(cos(theta)+i*sin(theta))
z1 =
6.0000 + 8.0000i
25
DEE - CURSO DE INTRODUÇÃO AO MATLAB
» z1=mag*exp(i*theta)
z1 =
6.0000 + 8.0000i
» z1= 3+4i;
» z2= 6+8i;
» z=[0 z1 z2]
»z
z=
1.7.2-Polinômios
>>p=[an . . . a0]
Raizes de polinômios
26
DEE - CURSO DE INTRODUÇÃO AO MATLAB
» p=[1 0 -7 6];
» roots(p)
ans = 2
é zero. Se esquecessemos desse
Observe que o coeficiente de x
Suponha agora que nos foi dado as raízes e a partir delas desejamos
encontrar o polinômio associado. A função poly resolve este problema. Veja o
exemplo.
» raizes=[-3 2 1];
» p=poly(raizes)
p=
1 0 -7 6
» x=-5:1:5;
Esta função é de particular interesse quando
» polyval(p,x)
estudarmos interpolação em outro momento
deste curso
27
DEE - CURSO DE INTRODUÇÃO AO MATLAB
ans =
-84 -30 0 12 12 6 0 0 12 42 96
1 2 -3
resto =
0 0 0 0
28
DEE - CURSO DE INTRODUÇÃO AO MATLAB
Essa estrutura permite que você execute uma série de comandos uma
quantidade de vezes determinada. Sua forma geral é:
for x = vetor
comandos
end
Por que esse vetor? Nas linguagens que conheçemos o loop for é indexado
por uma sequência do tipo i=1,2,...,n. Talvez você esteja se perguntando isto agora.
Bem, se lembre que o MATLAB trabalha com vetores e portanto a sequência que
você estava acostumado é representada por um vetor. Para esclarecer vejamos
alguns exemplos:
Suponha que estamos interessados nos gráficos da função sen(n.t), para
valores de n variando de 1 a 4 no intervalo de tempo de -1 a 1. O loop for abaixo
leva a cabo tal tarefa:
t = -1:0.1:1;
for n=1:4 Criou-se o vetor n = [1 2 3 4]
y = sin(n*t);
plot(t,y)
pause
end
29
DEE - CURSO DE INTRODUÇÃO AO MATLAB
Tente executar este programa. O pause é um comando que permite que você
plote um gráfico de cada vez. A janela figure ficará em pause mode. Após teclar
em qualquer tecla o próximo gráfico será executado na janala figure.
if expressão 1
comandos
else if expressão 2
comandos
else
comandos
end
x=fix(100*rand);
n=7;
teste=1;
for k=1:7;
numb=int2str(n);
disp([‘Você tem direito a ’ numb ‘ tentativas’])
disp( ‘Uma tentativa é um número entre 0 e 100’)
tentativa=input(‘Entre sua tentativa’)
30
DEE - CURSO DE INTRODUÇÃO AO MATLAB
if tentativa<x
disp(‘abaixo’)
elseif tentativa>x
disp(‘acima’)
else
disp(‘Você venceu’)
teste=0
break
end
n=n-1;
end
if teste>0
disp(‘Você perdeu’)
end
31
DEE - CURSO DE INTRODUÇÃO AO MATLAB
O loop while é utilizado até que uma determinada condição seja satisfeita.
Então ele possui uma característica comum às duas estruturas anteriores. Ele
realiza um teste lógico e executa um bloco de comandos repetidamente como um
loop for. Veja a sua estrutura:
while expressão
Comandos
end
Vejamos um exemplo:
32
DEE - CURSO DE INTRODUÇÃO AO MATLAB
plot(t,fourier)
n=n+2;
cont=cont+1;
end
4 4
2 2
0 0
-2 -2
-4 -4
-2 0 2 -2 0 2
4 4
2 2
0 0
-2 -2
-4 -4
-2 0 2 -2 0 2
33