Você está na página 1de 33

DEE - CURSO DE INTRODUÇÃO AO MATLAB

Universidade Federal da Bahia


Escola Politécnica
Departamento de Engenharia
Elétrica

Curso de Introdução
ao
MATLAB

PAULO ASSUNçÃO

1
DEE - CURSO DE INTRODUÇÃO AO MATLAB

INDICE

Parte 1: Comandos Básicos

1.1-Criação de Variáveis: Armazenando escalares e vetores


1.2-Auto-ajuda em MATLAB
1.2.1-Comando Help
1.2.2- Comando lookfor
1.2.3- Comando lookfor
1.3-Operadores aritméticos e relacionais
1.3.1-Operadores aritméticos
1.3.1.1-Sobre escalares
1.3.1.2-Sobre vetores
1.3.2- Operadores relacionais e lógicos
1.3.3- Operadores relacionais e lógicos
1.3.4- Operadores relacionais e lógicos
1.4- Definindo e manipulando matrizes
1.5- Fazendo gráficos no MATLAB
1.6-Gráficos tridimensionais
1.6.1- Gráficos de linha
1.6.2-Gráficos de rede e superfície
1.7- Números complexos, polinômios, equações lineares e funções
trigonométricas
1.7.1- Números complexos
1.7.2-Polinômios
1.7.3- Equações Lineares
1.8-Tomada de decisões e controle de fluxo no MATLAB
1.8.1- Loops for
1.8.2- Estruturas condicionais
1.8.3- Loops while

2
DEE - CURSO DE INTRODUÇÃO AO MATLAB

INTRODUÇÃO

Curso de Introdução ao MATLAB

Parte 1: Comandos Básicos

1.1-Criação de Variáveis: Armazenando escalares e vetores

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:

>>x=-2 O MATLAB armazena o número -2 na variável x.


x=
-2

Ao pressionar ENTER o MATLAB mostrará que o valor da variável x é -2.


Considere a criação de um vetor:

>>x=[1 2 3 4 5] Cria o vetor linha x cujos elementos são 1,2,3,4 e 5.


x=
1 2 3 4 5

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:

>>x=[1;2;3;4;5]; Cria o vetor coluna x cujos elementos são 1,2,3,4 e 5. (3)

Outras formas possíveis de criação de uma variável vetor são:

>>x=0:0.01:1; Cria um vetor de 0 até 1, com uma diferença entre elementos


igual a 0.01.

>>x=linspace(a,b,n) Cria um vetor com primeiro elemento a e o último b com


n elementos linearmente espaçados.

3
DEE - CURSO DE INTRODUÇÃO AO MATLAB

>>x=logspace(d1,d2,N) Cria um vetor logaritmicamente espaçado. Ou seja, ele


constrói um vetor linha de 10 d1 até 10d2 com N ele-
mentos onde os logaritmos na base 10 desses elemen-
tos estão linearmente espaçados. (6)

Obs. Definições default: Se em (4) o passo, em (5) o número n e em (6) N, não


forem especificados por você o MATLAB assumirá esses valores como sendo
1,100 e 50 respectivamente.

1.2-Auto-ajuda em MATLAB

O MATLAB possui uma série de comandos que permitem ao seu usuário


uma ajuda on-line. Quando você esquecer um comando ou quiser mais
informações sobre uma função do MATLAB existem três formas de se obter a
informação desejada:

1.2.1- Comando Help

Esta é a forma mais fácil de se obter informações no ambiente MATLAB.


Basta digitar help <nome de um comando> e o MATLAB irá apresentar um breve
resumo do comando e a função por ele desempenhada. Considere um exemplo
simples.

» help sqrt

SQRT Square root.


SQRT(X) is the square root of X. Complex results are
produced if X is not positive.

See also SQRTM.

É 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:

d:\matlab - Establish MATLAB session parameters.


matlab\general - General purpose commands.
matlab\ops - Operators and special characters.
matlab\lang - Language constructs and debugging.
matlab\elmat - Elementary matrices and matrix manipulation.
matlab\specmat - Specialized matrices.
matlab\elfun - Elementary math functions.
matlab\specfun - Specialized math functions.
matlab\matfun - Matrix functions - numerical linear algebra.
matlab\datafun - Data analysis and Fourier transform functions.
matlab\polyfun - Polynomial and interpolation functions.
matlab\funfun - Function functions - nonlinear numerical methods.
.
. continua
.

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.

1.2.3- Comando lookfor

Na sequência, um outro método é, conhecido o assunto de interesse, usar o


comando lookfor. Novamente, desejamos informações sobre interpolação. Faça:

» 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

INTERPFT 1-D interpolation using a FFT method.


SPLINE Cubic spline data interpolation.
.
. continua

O MATLAB lista uma série de comandos relacionados com interpolação.


Para maiores informações sobre cada função use o help.

1.2.3-Help da Barra de Menu

Clique com o mouse em Help e encontrará:

Table of Contents: possui uma lista das áreas de atuação do MATLAB.

Index: possui uma lista dos comandos. É só clicar em um deles para ter a
sua descrição.

É fundamental que você crie o hábito de utilizar as ferramentas de ajuda On-


line do MATLAB. Elas são extremamente fáceis, práticas e poderosas.

1.3-Operadores aritméticos e relacionais

1.3.1-Operadores aritméticos

1.3.1.1-Sobre escalares

Operação Símbolo Exemplo


adição,a+b + 3+4
subtração,a-b - 5-1
multiplicação,a.b * 4*9.5
divisão,a/b \ ou / 15/3=15\3
potenciação,ab ^ 5^2

6
DEE - CURSO DE INTRODUÇÃO AO MATLAB

1.3.1.2-Sobre vetores

Considere os vetores genéricos: a=[a1 a2 a3 ... an], b=[b1 b2 b3 ...bn] e o escalar


c.

Operação O que o MATLAB faz


Adição escalar a+c=[a1+c a2+c . . . an+c]
Multiplicação escalar a*c=[a1*c a2*c . . . an*c]
Adição de vetores a+b=[a1+b1 a2+b2 . . . an+bn]
Multiplicação de vetores a.*b=[a1*b1 a2*b2 . . . an*bn]
Divisão direita de vetores a./b=[a1/b1 a2/b2 . . . an/bn]
Divisão esquerda de vetores a.\b=[a1\b1 a2\b2 . . . an\bn]
Potenciação de vetores a.^b=[a1^b1 a2^b2 . . . an^bn]

Obs.: Observe que o ponto “. “ seguido da operação (*, /, \ ou ^) significa a


operação feita elemento a elementos dos dois vetores. Além disso se você desejar
efetuar uma operação escalar sobre cada coordenada do vetor isto pode ser feito
através do ponto ‘. ‘seguido da operação desejada. Por exemplo: fazer a.^2
significa quadrar todas as coordenadas do vetor a.

1.3.5- Operadores relacionais e lógicos

Você pode interrogar o MATLAB a respeito de questões lógicas tanto no


prompt como numa rotina, um programa .m . Os comandos utilizados são listados
abaixo:

Operadores Descrição
< Menor que
> Maior que
<= Menor que
>= Maior que
== Igual
~= Diferente

A utilização deste operadores vai desde simples comparação entre escalares:

» -2<4

ans=1

7
DEE - CURSO DE INTRODUÇÃO AO MATLAB

» 2>4 Observe que quando a resposta à questão lógica levantada por


você é positiva o MATLAB apresenta 1 na sua variável default
para respostas. Caso contrário a resposta será 0.
ans=0

ou comparação entre vetores. Por exemplo:

» 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

1.5- Definindo e manipulando matrizes

A definição de matrizes é muito simples. Observe:

» A=[ 1 3 4; 2 5 6; 9 7 8]

A= Criou-se então uma matriz quadrada de ordem 3.


Observe que cada linha foi introduzida como um
1 3 4 vetor e as linhas foram separadas por pontos-e-
2 5 6 vírgulas. Se a matriz que você deseja armazenar
9 7 8 segue alguma regra de definição, ela pode ser in-
troduzida via uma rotina MATLAB. Veremos is-
so posteriormente.

Uma vez que já temos a matriz definida podemos fazer uma série de
manipulações com ela. Vejamos algumas:

» A(3,2) Se você deseja selecionar um determinado elemen


to da matriz, entre com o nome da matriz (no

8
DEE - CURSO DE INTRODUÇÃO AO MATLAB

caso, A) e entre parênteses a posição dele.


ans =

» B=A>4 Este comando interroga o MATLAB a respeito


dos elementos de A que são maiores do que 4 e
B= a resposta é dada na forma de uma matriz onde
as posições dos elementos maiores do que 4 são
0 0 0 ocupadas por 1s e as demais por 0s.
0 1 1
1 1 1

» B(2,5)=3 Suponhamos que você deseje especificar um de


terminado elemento da matriz, atribuindo a ele um
B= valor. Isto pode ser feito entrando o nome da ma
triz com a posição entre parênteses e igualando
0 0 0 0 0 isto ao número desejado. Observe um fato interes
0 1 1 0 3 sante. O MATLAB complementa a matriz com ze
1 1 1 0 0 ros caso a posição do elemento especificado
não exista na matriz original.

» 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

» A<=3 Novamente é levantada uma questão lógica ao


MATLAB. Que elementos de A são menores ou
ans = iguais a 3 ?

1 1 0
1 0 0
0 0 0

» e=A(A<=3) Este comando cria um vetor cujos elementos são


os elementos de A que são menores ou iguais a 3
e=
1
2
3

» D(1,:)=e' Aqui a primeira linha de D é substituída pela trans


posta do vetor e.
D=

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

» G=A(3:-1:1,1:3) Este comando inverte a matriz A. Este comando


funciona da seguinte forma: a construção de matri
G= zes se dá linha por linha, coluna a coluna. Isto sig
nifica que G(1,1)=A(3,1), G(1,2)=A(3,2) e assim
9 7 8 por diante segundo a definição.
2 5 6
1 3 4

10
DEE - CURSO DE INTRODUÇÃO AO MATLAB

» H=[G A(:,[2 3])] Este comando concatena a matriz G com as colu


nas 2 e 3 da matriz A.
H=

9 7 8 3 4
2 5 6 5 6
1 3 4 7 8

» I=ones(3) Cria uma matriz de ordem 3 totalmente preenchi-


das por 1s.
I=

1 1 1
1 1 1
1 1 1

» J=zeros(3) Cria uma matriz nula com a ordem especificada.

J=
0 0 0
0 0 0
0 0 0

» J(2:3,:)=A([1 3],:) Com este comando você define as linhas 2


e 3 da matriz J como as linhas 1 e 3 de A.
J=

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

Estas são apenas algumas manipulações possíveis envolvendo matrizes. O


leitor deve se sentir estimulado a experimentar outras.

1.5- Fazendo gráficos no MATLAB

Nesta seção você aprenderá como fazer gráficos bidimensionais usando o


MATLAB. O comando que mais frequentemente aparece em situações envolvendo
gráficos bidimensionais é o comando plot. Com esse comando você pode plotar
um vetor versus um outro vetor. Vejamos um exemplo: suponha que você realizou
um experimento onde determinadas grandezas x e y foram medidas. Os resultados
obtidos foram listados numa tabela.

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

Suponha agora que um dos seus objetivos após a realização do experimento


é justamente identificar uma relação entre as duas grandezas. É justamente aí em
que o MATLAB lhe pode ser útil. Você pode plotar esses pontos e através do
gráfico obtido, tentar identificar tal relação. Assim você ordenará ao MATLAB:

» 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

Observe que no comando plot existem dois argumentos, o primeiro vetor


contém os elementos do domínio e o segundo os elementos da imagem. Existe
ainda uma letra entre apóstrofos. Essa letra indica a cor em que desejamos o
gráfico. A letra r avisa ao MATLAB que o gráfico deve ser feito em vermelho.
Falaremos sobre outras cores e comandos de formatação para gráficos.
A propósito, os mais atentos devem ter percebido que apesar dos poucos
dados oferecidos ao MATLAB o resultado foi uma curva contínua e não um
conjunto discreto de pontos. Isto se deve à propriedade que o MATLAB possui de
unir os pontos dados por retas.
Agora já sabemos que a relação entre y e x é da forma y = [1- exp(-a.x)].
Após essa motivação, vamos iniciar um estudo mais sistemático das
ferramentas gráficas do MATLAB. Exemplos serão apresentados e novos
comandos utilizados.
Suponha agora que seu desejo é plotar dois gráficos no mesmo sistema de
coordenadas. Bem, existe duas formas muito simples de fazer isto. Vejamo-las:

» x=linspace(-4*pi,4*pi,100); Observe que foi definido o vetor x como um


» y=sin(x); vetor de extremos –4*pi e 4*pi, com 100 ele
» z=sin(x)./x; mentos linearmente espaçados. Em seguida
» plot(x,y,'b',x,z,'r') y e z foram definidos e o comando plot
foi
utilizado. É fácil ver que primeiramente
plotou-se y versus x (em azul) e depois z versus x (em vermelho).

Uma forma alternativa de se conseguir o mesmo resultado é:

» x=linspace(-4*pi,4*pi,100); Aqui foi utilizado o comando hold on que


» y=sin(x); “segura” o gráfico de y versus x e sobre
ele
» z=sin(x)./x; plota o gráfico de z versus x.
» plot(x,y,'b')
» hold on
» plot(x,z,'r')

Observe que o comando hold on informa ao MATLAB que todos os


gráficos devem ser realizados na mesma janela figure. Para voltar a situação inicial
em que cada comando plot, “limpa” a janela antes de plotar, use o comando hold
off no prompt da Command Window (ambiente de trabalho do MATLAB) ou na
sua rotina .m.

13
DEE - CURSO DE INTRODUÇÃO AO MATLAB

Para plotar gráficos diferentes sem apagar o gráficos anteriormente plotado,


uma possibilidade é o comando figure(número da janela), que cria uma nova
janela com o número por você especificado onde seu novo gráfico será realizado.

Voltando aos exemplos. O resultado obtido é mesmo nos dois casos:

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-15 -10 -5 0 5 10 15

O comando subplot lhe permite plotar mais de um gráfico na mesma janela


Figure do MATLAB. Vejamos um exemplo:

» x=linspace(-2*pi,2*pi,50); Novamente se definiu um vetor x,y e z. Em


» y=sin(x); seguida o comando subplot se apresenta alo
» z=cos(x); cando memória para dois gráficos na janela
» subplot(1,2,1) Figure. Essa subdivisão é feita segundo a se
» plot(x,y) guinte estrutura: O primeiro argumento diz
» subplot(1,2,2) em quantas “linhas” a tela Figure será divi
» plot(x,z) dida. O segundo argumento informa o núme
mero de “colunas”. O terceiro argumento nu
mera o gráfico. Vejamos o resultado:

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

Como personalizar um gráfico do MATLAB? Existem muitos recursos,


alguns até já utilizados nos exemplos acima. O MATLAB lhe permite adicionar
grades, títulos, textos, etc. Além disso, como dito anteriormente, você pode definir
a cor e o tipo de linha em deseja visualizar o gráfico. A tabela abaixo lista as
possibilidades:

Símbolo Cor Símbolo Tipo de linha


y Amarelo . Ponto
m Magenta o Círculo
c Ciano x Marca x
r Vermelho + Marca +
g Verde * Asterisco
b Azul - Linha contínua
w Branco : Linha pontilhada
k Preto -. Traços e pontos
-- Linha tracejada

O exemplo abaixo mostra como devem ser utilizados os comandos acima:

» x=0:0.1:2*pi; Observe que a estrutura a ser seguida é:


» y=exp(-x); plot(var1,var2,’cor tipo de linha ‘)
» z=cos(5*x);
» h=y.*z;
» plot(x,y,'b*',x,z,'r-.',x,h,'g')

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.

Comando Estrutura Descrição


xlabel xlabel(‘texto’) Nomeia o eixo horizontal com
o texto entre apóstrofos
ylabel ylabel(‘texto’) Nomeia o eixo vertical com o
texto entre apóstrofos
grid grid Ativa grades
grid off grid off Desativa grades
title title(‘texto’) Coloca o texto entre
apóstrofos como título
text text(xt,yt,‘texto’) Coloca o texto entre
apóstrofos no ponto (xt,yt) por
você determinado
gtext gtext Coloca o texto entre
apóstrofos em qualquer
posição a ser especificada com
um clique do mouse.

Veja o exemplo:

» title('Funções senoidal, exponencial e senoidal amortecida')


» ylabel('y')
» xlabel('x')
» grid
» text(0.5,0.8,'exp(-x)')
» text(2.7,0.5,'cos(5x)')
» gtext('exp(-x)*cos(5x)')
Funções senoidal, exponencial e senoidal amortecida
1

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

Observe que o primeiro argumento do comando polar é o ângulo vetorial e o


segundo é o raio vetor. Vejamos um outro exemplo:
90
12.5664
120 60

150 6.2832 30

» theta=0:pi/60:4*pi;
» r=theta; 180 0
» polar(theta,r)

210 330

240 300
270

Esta é a espiral de Arquimedes. Você encontrará outras belas curvas para


plotar na lista de exercícios.
Até agora todos os comandos plot empregados retornaram gráficos
cujos eixos foram escalonados automaticamente. Pode acontecer que este
escalonamento, em determinada situação, não satisfaça a sua vontade.

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

Até agora trabalhamos exclusivamente com gráficos em duas dimensões.


Nesta seção serão introduzidos os dois tipos de gráficos em 3 dimensões: os
gráficos de linha e de rede.

1.6.1- Gráficos de linha

Podemos considerar este tipo de gráficos 3D como uma extensão daqueles


obtidos pelo comando plot. O comando plot3 executa um gráfico de linha. Ao
contrário de plot, plot3 possui três argumentos cada qual associado a uma dos
eixos cartesianos. Veja o exemplo.
0

» 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.

1.6.2-Gráficos de rede e superfície

Nos gráficos de rede o MATLAB irá considerar z como a imagem de um


domínio formado por pontos (x,y). Ou seja, serão plotadas funções do tipo
z=f(x,y). Para o MATLAB executar esta tarefa deve ser definido o domínio para x
e para y. A partir deste domínio, uma grade deve ser estabelecida usando a função

19
DEE - CURSO DE INTRODUÇÃO AO MATLAB

meshgrid. Esta grade é que de fato servirá para o cálculo de Z e posterior


confecção do gráfico. Vejamos um exemplo:

» x=-5:1:5; Observe que a função tem -5<x,y<5. O comando


» y=x; meshgrid gerará uma repetição para x e y, chamadas
» [X Y]=meshgrid(x,y) de matriz X e Y. Veja:
X=

-5 -4 -3 -2 -1 0 1 2 3 4 5 A função meshgrid criou


-5 -4 -3 -2 -1 0 1 2 3 4 5 uma matriz X cujas
-5 -4 -3 -2 -1 0 1 2 3 4 5 linhas são cópias do
-5 -4 -3 -2 -1 0 1 2 3 4 5 vetor x e uma matriz Y,
-5 -4 -3 -2 -1 0 1 2 3 4 5 cujas colunas são cópias
-5 -4 -3 -2 -1 0 1 2 3 4 5 do vetor y. Pra que isso
-5 -4 -3 -2 -1 0 1 2 3 4 5 afinal de contas? Bem,
-5 -4 -3 -2 -1 0 1 2 3 4 5 observe que todas as
-5 -4 -3 -2 -1 0 1 2 3 4 5 combinações possíveis
-5 -4 -3 -2 -1 0 1 2 3 4 5 para pares (x,y), podem
-5 -4 -3 -2 -1 0 1 2 3 4 5 ser conseguida a partir
destas matrizes. O que
vai nos permitir avaliar
Y= em todos os pontos do
domínio a função
-5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 z=f(x,y). O comando
-4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 utilizado para plotar será
-3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 mesh(X,Y,Z) ou apenas
-2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 mesh(Z). O primeiro
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 plota os pontos do tipo
0 0 0 0 0 0 0 0 0 0 0 (Xij,Yij,Zij), enquanto o
1 1 1 1 1 1 1 1 1 1 1 segundo plota pontos do
2 2 2 2 2 2 2 2 2 2 2 tipo (i,j,Zij) onde i,j são
3 3 3 3 3 3 3 3 3 3 3 índices relativos à ordem
4 4 4 4 4 4 4 4 4 4 4 das matrizes.
5 5 5 5 5 5 5 5 5 5 5 Explicaremos a seguir,
após a execução do
gráfico.

20
DEE - CURSO DE INTRODUÇÃO AO MATLAB

Consideremos uma função qualquer. Por exemplo z=x2+y2.

» 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)

Veja a diferença nos


eixos x e y. No gráfico
50
ao lado eles estão
dimensionados de –5 a
40
5. Enquanto no gráfico
30
anterior tem-se de 0 a
20 15. Isto se deve ao fato
10 que temos todos os
0 elementos de Z
5
5
representados
0
0
graficamente por pontos
-5 -5
(Xij,Yij,Zij) e como
sabemos X e Y somente
possui elementos entre
–5 e 5.
Uma vez dominada a rotina para execução de gráficos de rede, você também
já aprendeu os gráficos de superfície. Como? Simples. Os gráficos de superfícies

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

Existem ainda uma série de comando relacionados com gráficos. Contudo


os aqui apresentados são os mais importantes e satisfazem a 90% das necessidades.
Mais recursos gráficos serão objetos de um outro capítulo dessa apostila. Lá será
abordado mapas de contorno, mapas de cor, transformações geométricas,
manipulação de gráficos, animações e etc.

1.7- Números complexos, polinômios, equações lineares e funções


trigonométricas

Nesta seção veremos alguns tópicos da matemática cujo contato é frequente.


Você aprenderá como tratar tais assuntos no MATLAB.

1.7.1- Números complexos

A unidade imaginária no MATLAB pode ser representada tanto pela letra i


quanto pela letra j. Veja o exemplo:

22
DEE - CURSO DE INTRODUÇÃO AO MATLAB

» i^2 » j^2

ans = ans =

-1.0000+ 0.0000i 1.0000+ 0.0000i

Com a ajuda da unidade imaginária se define o número complexo da forma


usual:

» z1=6+8*i

z1 =

6.0000+ 8.0000i

Os comandos conj, abs e angle calculam, respectivamente, o conjugado, o


módulo e o ângulo do número complexo.

» conj(z1) » abs(z1) » angle(z1)

ans = ans = ans =

6.0000- 8.0000i 10 0.9273

As operações elementares são efetuadas da mesma maneira que com os


número reais.
Obs.: - Não é obrigatório o uso de ‘*’, antes de i ou j na parte imaginária do
número complexo. Ou seja o MATLAB, aceitará tanto 6+8*i, quanto 6+8i.
- Não se esqueça que os ângulos em MATLAB são sempre dados em
radianos, por isso angle(z1) foi igual a 0.923 no exemplo anterior.
- Se as letras i e j forem utilizadas para definir variáveis, o MATLAB não
as considerará como unidade imaginária.

Como plotar um número complexo?

Números complexos podem ser representados como pontos no plano de


Argand-Gauss. Para tanto, devemos separar a parte real da imaginária e plotar o

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

O resultado não é muito empolgante. Talvez com compass tenhamos um


pouco mais de diversão.

» compass(z1)

Este comando plota a representação polar do número complexo.

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

Vejamos agora as representações trigonométrica e exponencial dos números


complexos. Para tanto, imagine que agora só conheçamos a magnitude ou módulo
e o argumento do número complexo. Sejam esses os valores:

Magnitude= 10
Argumento= 0.923

Conhecidos estes valores, os números podem entrados na forma


trigonométrica. O MATLAB lhe devolvera a forma retangular. Veja o exemplo:

» 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

Um modo mais conveniente é utilizar-se da fórmula de Euler. Veja:

» z1=mag*exp(i*theta)

z1 =

6.0000 + 8.0000i

Arranjos de números complexos


Os números complexos podem ser ordenados em arranjos da mesma maneira
que os números reais. Veja o exemplo:

» z1= 3+4i;
» z2= 6+8i;
» z=[0 z1 z2]
»z

z=

0 3.0000 + 4.0000i 6.0000 + 8.0000i

o mesmo procedimento pode ser utilizado para arranjos bidimensionais. Aplicando


o sinal de apóstrofo, você obterá não o transposto do vetor, mas sim a transposta
conjugada do vetor que é a transposta com os elementos conjugados.

1.7.2-Polinômios

Os polinômios são representados por arranjos unidimensionais no


MATLAB. Ou seja, se você deseja representar o polinômio p(x)=anxn +...+a0 no
MATLAB você utilizará o seguinte arranjo para os seus coeficientes.

>>p=[an . . . a0]

Vejamos agora algumas necessidades relacionadas com polinômios e as


soluções que o MATLAB nos oferece:

Raizes de polinômios

26
DEE - CURSO DE INTRODUÇÃO AO MATLAB

Suponha que é desejado as raízes do polinômio x3-7x+6. O método a ser


utilizado no MATLAB é ilustrado abaixo:

» p=[1 0 -7 6];
» roots(p)

ans = 2
é zero. Se esquecessemos desse
Observe que o coeficiente de x

-3.0000 fato, teríamos entrado com o polinômio x2-7x+6 e não o


2.0000 desejado. Por isso tome cuidado e entre com os
1.0000 coeficientes nulos também.

O problema inverso: Calculando coeficientes de raízes

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

Avaliando um polinômio num conjunto de valores

Agora você possui um polinômio e deseja saber o seu valor em um


determinado valor da variável ou em um conjunto de valores. Isto pode ser feito
utilizando a função polyval(p,x), onde o primeiro argumento é o polinômio que se
deseja avaliar e o segundo o valor ou conjunto de valores em que se deseja.
Vejamos um exemplo:

» 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

Multiplicação e divisão de polinômios

Não deixe o bom senso enganá-los. A multiplicação de polinômios não é


executada da mesma maneira que uma multiplicação vetorial. Mesmo por que o
que vc faria com a divisão?
Existem duas funções do MATLAB dedicadas a estas operações entre
polinômios. Suponha que você deseje dividir o nosso polinômio p(x) por x-2. Para
isso usamos a função deconv(dividendo, divisor) que resultará num arranjo do
tipo[quociente, resto]. Vejamos:
Observe que foi definido dois
» p=[1 0 -7 6]; vetores, quociente e resto que
» divisor=[1 0 -7 6]; guardam em suas coordenadas os
» dividendo=[1 -2]; coeficientes dos respectivos
» [quociente,resto]=deconv(divisor,dividendo) resultados. Para multiplicação
tudo se dá de uma forma mais
simples.Usa-se o comando conv,
cujos argumentos são os vetores
relacionados aos polinômios que
quociente = se deseja multiplicar.

1 2 -3

resto =

0 0 0 0

1.7.3- Equações Lineares

1.8-Tomada de decisões e controle de fluxo no MATLAB

Certamente você já escreveu algum programa de computador por mais


simples que ele tenha sido. Se você utilizou uma linguagem de programação

28
DEE - CURSO DE INTRODUÇÃO AO MATLAB

estruturada para tal, já deve conhecer as estruturas de controle do fluxo de


execução de um programa. Essa palavras-chaves de uma linguagem são
extremamente importantes, pois permitem que resultados de cálculos feitos
anteriormente influenciem operações futuras.
Até agora, temos trabalhado com o MATLAB do ponto de vista de
operadores. Mas, MATLAB também pode ser encarado como uma linguagem de
programação. Portanto, você pode escrever rotinas e sub-rotinas e salvá-las como
programas que você poderá utilizar toda vez que desejar. Para estar habilitado para
escrever tais rotinas, você precisa estar afeito as estruturas de tomada de decisões
e controle de fluxo do MATLAB. Vamos a elas então.

1.8.1- Loops for

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.

1.8.2- Estruturas condicionais

Quando um comando deve ser executado mediante a satisfação de uma


determinada condição, você utilizará estruturas condicionais. A exemplo de outras
linguagens o MATLAB possui a estrutura if-else-end. Sua utilização segue a
configuração abaixo:

if expressão 1
comandos
else if expressão 2
comandos
else
comandos
end

Você pode se utilizar de quantos else if forem necessários. Além disso os


comandos associados à primeira expressão verdadeira é que são executados. Veja
um exemplo (extraído do livro MATLAB for Engineers – Biran & Breiner).

%HI_LO executa o jogo do mesmo nome


% Quando perguntado, entre sua tentativa, o computador
% irá lhe dizer se você está correto ou não, dizendo se sua tentativa está “acima”
% ou “abaixo” do número aleatório calculado pelo computador

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

Este programa foi escolhido porque além de exemplificar o uso das


estruturas condicionais, ele contém também uma série de comandos que você ainda
não conhece, mas que aprenderá agora. Vejamos o que o programa faz. Primeiro o
nome do programa: HI_LO (ou seja High-Low). O nome do programa e uma
sucinta explicação do que ele é capaz de fazer é colocado à direita de sinais
percentuais. Estes sinais indicam comentários. Quando você salva HI_LO ele será
armazenado como um arquivo .m e como tal, poderá ser acessado pelo comando
help. Se você fizer isto, este comentário aparecerá na MATLAB Command
Window explicando (ou relembrando) o que o programa é capaz de fazer.
A primeira linha do programa propriamente é x=fix(100*rand). Aí você
encontra duas novas funções fix e rand. A segunda gera um número aleatório entre
0 e 1 que obedece a uma distribuição gaussiana de probabilidades. Este número é
multiplicado por 100 gerando um número decimal entre 0 e 100. A função fix
considera somente a parte inteira e assim um número inteiro é armazenado na
variável x.
Em seguida aparece um loop for, que lhe dará as 7 tentativas para ganhar o
jogo. Temos a função int2str que transforma o seu argumento inteiro numa string.
Ou seja, o número n será armazenado não mais como um número e sim como uma
string, que é chamada de numb. Aparece a gora a função disp que apresenta na tela
a string que tem como argumento. Observe que na sua primeira aparição, seu
argumento é o vetor [‘Você tem direito a ’ numb ‘ tentativas’] que contém 3
strings: ‘Você tem direito a ‘, numb e ‘ tentativas’. Veja a importância da utilização
da função int2str. Se ela não fosse usada haveria problemas na execução do
programa, pois a função disp esta preparada para receber argumentos string e não

31
DEE - CURSO DE INTRODUÇÃO AO MATLAB

números. Já na segunda aparição os colchetes são dispensados pois só temos uma


string e não um vetor delas.
Finalmente temos a função input na linha que segue. Esta função apresenta
a string que é seu argumento e então espera uma entrada do teclado, que pode ser
qualquer expressão do MATLAB. Esta expressão será calculada com as variáveis
correntes do espaço de trabalho (se possível) e um valor será retornado como
resposta. No nosso caso, estamos apenas esperando um número inteiro entre 0 e
100 a ser armazenado na variável tentativa.
Vem agora a parte condicional, que você entende por simples inspeção e no
interior do bloco else aparece o comando break. Este comando interrompe a
execução do programa e o finaliza quando você acerta o número secreto. O resto
do programa também é facilmente entendido.

1.8.3- Loops while

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:

» t=-2:0.05:2; Este programa gera o


» omega=2*pi; gráfico da aproximação
» n=1; por série de Fourier de
» cont=n; uma onda quadrada. Foi
» fourier=0; usado o loop while, mas
» while n<=7 o loop for podia ser
fourier=fourier+(4/n)*cos(n*omega*t)*sin(n*pi/2); utilizado.
subplot(2,2,cont)

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

Você também pode gostar