Beruflich Dokumente
Kultur Dokumente
Introduo ao Matlab
Um computador uma ferramenta essencial na resoluo de problemas de
Engenharia. Nestes apontamentos faz-se uma introduo ao Matlab, um pacote de
software com a capacidade de computao numrica, anlise de dados e grficos.
O software Matlab foi originalmente desenvolvido para um uso especfico e da a
origem do seu nome Matrix Laboratory. Actualmente as suas capacidades vo
muito alm das originalmente pensadas: um sistema interactivo e permite todas
as capacidades de uma linguagem de programao. Como propriedade
fundamental o facto de que o Matlab faz uso de matrizes como estrutura de dados
bsica.
Depois de inicializar uma sesso em Matlab visualizado o sinal de prompt (>>)
que significa que o Matlab est pronto a receber um comando do utilizador.
Assim um nico ponto x pode ser considerado uma matriz com uma linha e uma coluna,
x - matriz (1x1)
Um ponto (x,y) como uma matriz de uma linha e duas colunas.
[ x, y] - matriz (1x2)
4 5 6
1 2
B = 3 4
5 6
A forma mais simples de definir uma matriz usar uma lista de nmeros entre parnteses rectos.
Assim a matriz A pode ser definida como,
>>
A = [ 1 2 3 ; 4 5 6 ]
O nome de uma matriz dever comear por uma letra e conter at um mximo de 19 caracteres.
Podem ser utilizadas virgulas ou espaos em branco para separar colunas e para separar linhas
devem ser utilizados pontos e vrgulas ou mudanas de linha. Outra alternativa definio da
matriz A poderia ser:
>>
A = [ 1,2,3
4,5,6]
tambm possvel definir uma matriz como o resultado de alguma operao. Por exemplo se
desejar conhecer o dobro da matriz A, ento pode-se definir uma nova matriz C.
C = 2*A
save dados B
permite armazenar num ficheiro de nome dados a matriz B. Assim possvel, mesmo numa
futura sesso, aceder novamente ao valor de B, tendo que para isso executar o comando Load.
>>
load dados
-1.00000
-2.00000
-3.00000
-4.00000
-5.00000
-6.00000
Tal como no caso anterior possvel aceder posteriormente a esta informao usando o
comando load.
>>
load dados1.dat
Contudo neste caso o nome da matriz que se definia seria dados1 e no B, portanto o nome do
ficheiro em causa e no a varivel que a foi armazenada.
Introduo de Dados pelo Utilizador. Operador (;)
Os valores de uma matriz podem ser introduzidos atravs do teclado directamente pelo utilizador
usando o comando input. Por exemplo a seguinte instruo:
>>
permite ao utilizador definir um dado valor para a varivel numero. Se o comando no for
finalizado por (;) o valor de numero ser mostrado no cran, caso contrrio o valor de numero
apenas armazenado na varivel e no mostrado.
>>
Este uso do operador (;) no final de cada instruo vlido para qualquer comando Matlab.
1.1.3 Referncia a elementos de matrizes
Uma vez que uma matriz um conjunto de valores organizados segundo linhas e colunas deve
ser possvel aceder a um dos seus elementos ou mesmo a um subconjunto dos seus elementos.
Um elemento (escalar)
Para aceder a um elemento da matriz deve-se indicar qual a linha e a coluna. Assim,
>>
a=A(2,3)
permite aceder ao elemento localizado na segunda linha e terceira coluna da matriz A, portanto
a=6. De uma forma geral pode-se escrever:
Para aceder a um subconjunto de elementos usado o operador dois pontos (:). Eis alguns
exemplos que permitem compreender o seu funcionamento:
>>
C= A(1:2, 2:3)
Significa que se pretendem os elementos da matriz A, desde a primeira segunda linha e desde a
segunda at terceira coluna. O resultado seria portanto
2 3
C=
5 6
De uma forma geral pode-se escrever:
A( imin : imax , jmin : jmax)
O resultado obtido so todos os elementos da matriz A definidos pelas linhas imin at imax e
pelas colunas jmin at jmax. possvel tambm aceder a todos os elementos de uma linha/coluna
mesmo que no se conhea a sua dimenso.
Por exemplo:
>>
C = A(1:1,:)
C = [1 2 3]
ou seja definidos pela primeira linha e todas as colunas. Uma expresso equivalente anterior
seria:
>>
C = A(1,:)
C = A(:,:)
valor=inicio:incremento:fim
O resultado um vector cujo primeiro valor igual a inicio e os restantes sero incrementados
com um valor igual a incremento at ao ltimo valor que ser igual a fim.
Por exemplo executar o seguinte comando
>>
tempo=0:2:10
tempo = [ 0
10 ]
Existem vrias formas de visualizar o contedo de uma matriz. A mais simples digitar o nome
da matriz e automaticamente o seu valor ser mostrado. Existem vrios formatos pr-definidos
em Matlab. Referem-se quatro:
format short
format long
format short e
format long e
Os dois primeiros utilizam uma formatao corrente e os dois ltimos cientfica. Para perceber as
diferenas entre eles apresenta-se o seguinte exemplo: admite-se que existe uma varivel com o
valor de 1/7. A sua representao em cada um dos formatos referidos seria:
short:
long:
short e:
long e:
0.1429
0.14285714285714
1.4286e-001
1.428571428571428e-001
Suponhamos agora que se pretende fazer um grfico com os valores da matriz em vez de, como
na seco anterior, fazer apenas a sua visualizao numrica. Na seco 1.5 este assunto ser
tratado com pormenor, por agora apresenta-se apenas uma breve introduo indicando o modo de
visualizar um grfico (x,y) a partir de dados armazenados em dois vectores.
Horas
Temperatura
10
10
12
14
14
17
16
15
18
13
20
11
22
10
x=[ 0: 2: 22]
>>
y=[ 9 8 6 5 8 10 14 17 15 13 11 10]
ento o comando,
>>
plot(x,y)
15
10
10
15
20
pi
Valor de =3.1415...
i,j
Inf
- Valor de infinito
Nan
eps
Tal como no caso de escalares o Matlab dispe de matrizes com valores especiais. Aquelas com
mais interesse enumeram-se de seguida:
Zeros (Zeros)
Permite gerar uma matriz com todos os elementos nulos. Se o argumento for apenas um escalar,
por exemplo,
>>
A= zeros(6)
ento a matriz A gerada uma matriz quadrada, neste caso de 6 linhas e 6 colunas. Podem, no
caso mais genrico, ser definidos dois parmetros. Por exemplo,
>>
A= zeros(2,3)
permite gerar uma matriz A de 2 linhas e 3 colunas em que todos os elementos so nulos.
Uns (Ones)
A funo ones idntica zeros, diferindo apenas no facto de que a matriz gerada no
constituda por valores nulos mas todos os elementos so iguais a 1. Assim, por exemplo,
>>
A= ones(1,1)
Esta funo permite criar uma matriz identidade. Uma matriz identidade uma matriz quadrada
de valores nulos com excepo dos elementos da diagonal que so unitrios. Um exemplo:
>>
A= eye(3)
1 0 0
A = 0 1 0
0 0 1
1.2.3 Operaes com Escalares
Forma Algbrica
Matlab
Adio
a+b
a+b
Subtraco
ab
a b
a
b
b
a
ab
a b
ab
a^ b
Multiplicao
Diviso direita
Diviso esquerda
Exponencial
a/b
a \b
A = [ 2 5 6 ]
>>
B = [ 2 3 5 ]
Deseja-se definir um terceiro vector que seja o resultado da multiplicao elemento a elemento
deste dois vectores. Uma forma seria efectuar repetidamente:
>>
C(1) = A(1)*B(1)
>>
C(2) = A(2)*B(2)
>>
C(3) = A(3)*B(3)
Evidentemente tal processo seria invivel para vectores de maiores dimenses. Utilizando o
Matlab tal operao pode ser facilmente efectuada usando o seguinte comando:
10
C = A.*B
O ponto final (.) antes do sinal de multiplicao (*) representa portanto uma operao elemento a
elemento. Refira-se que se este fosse omitido estaria a fazer uma multiplicao normal entre duas
matrizes. Uma vez explicado o que se entende por operao elemento a elemento mostra-se na
tabela seguinte as operaes possveis em Matlab.
Operao
Forma Algbrica
Matlab
Adio
a+b
a+b
Subtraco
ab
ab
ab
a
b
b
a
a. b
ab
a.^ b
Multiplicao
Diviso direita
Diviso esquerda
Exponencial
a. / b
a. \ b
Para melhor entender este tipo de operaes mostram-se alguns exemplo considerando os
vectores A e B acima definidos.
>>
C = A.*B
O resultado C = [ 4 15 30 ]
>>
C = A./B
C = A.\B
C = A.^2
O resultado C = [ 4 25 36 ]
>>
C = (3).^A
11
C = A.^B
Alm das operaes comuns adio, subtraco, multiplicao e diviso, por vezes necessrio
outro tipo de operaes com os dados. O Matlab permite uma grande variedade de funes das
quais se destacam:
" abs(x)
Valor absoluto de x
" sqrt(x)
Raiz quadrada de x
" round(x)
" fix(x)
" floor(x)
" ceil(x)
" sign(x)
Devolve -1 se x<0 ou 1 se x0
" rem(x,y)
" exp(x)
Exponencial de x e
" log(x)
" log10(x)
Note-se que x pode ser um escalar, vector ou matriz. Caso seja por exemplo uma matriz a
operao seno aplicada a cada um dos elementos da matriz. Alm disso, para qualquer uma das
funes assume-se que o valor de x se encontra na gama permitida, caso contrrio ser gerado
um erro.
1.2.6 Funes trigonomtricas
" sin(x)
" cos(x)
" tan(x)
" asin(x)
2
12
" acos(x)
" atan(x)
" atan2(x)
3+ 3
= 1.5 + 0.87 1
2
x2 =
3 3
= 1.5 0.87 1
2
De forma a que estas razes tenham sentido surge a definio de nmeros complexos e tambm
de 1 . Um nmero complexo um nmero definido por a +b i tal que a e b so nmeros reais
e i = 1 .
Operaes Aritmticas com Nmeros Complexos
c1 + c 2
c1 c 2
c1 c 2
c1
c2
c1
c1
Resultado
(a1 + a2 ) + i(b1 + b2 )
(a1 a 2 ) + i(b1 b2 )
(a1a 2 b1b2 ) + i(a1b2 + a2 b1 )
a1 a 2 + b1b2 a 2 b1 b2 a1
2
+ i 2
2
2
a 2 + b2 a 2 + b2
a12 + b12
a1 ib1
Tabela 1.4: Operaes com nmeros complexos.
13
Antes de explicar o conceito de funo comecemos por descrever os ficheiros *.m utilizados pelo
Matlab. At agora tem-se falado em comandos isolados como sendo a nica hiptese de
comunicar com o Matlab. Supondo que se deseja somar trs nmeros x, y e z, usando os
comandos do Matlab, ter-se-ia:
>>
x=2
>>
y=3
>>
z=1
>>
c= x+y+z
Neste caso so necessrios apenas quatro comandos e facilmente se digitam os quatro comandos.
O problema pe-se se for necessrio digitar por exemplo 100 comandos para resolver um certo
problema Ser que sempre necessrio digitar todos os comandos ?
Certamente que no. O Matlab recorre ao uso de ficheiros *.m para resolver o problema.
1.3.1 Scripts
x = 2
y = 3
z = 1
c = x+y+z
O ficheiro poderia ter qualquer nome apenas tendo como restrio a extenso que teria de ser .m
(da o nome de ficheiros *.m). Note-se que importante a extenso!! Um possvel nome para o
ficheiro de texto poderia ser soma.m.
Matlab: Ferramenta de simulao computacional e clculo numrico
14
Uma vez criado este ficheiro soma.m bastaria agora digitar o seguinte comando na linha de
comando do Matlab (no necessrio a extenso).
>>
soma
Automaticamente o Matlab executa cada uma das linhas do ficheiro soma.m. A este tipo de
ficheiros em que os comandos so executados sequencialmente d-se o nome de Scripts para os
diferenciar das funes, como se ver mais adiante.
Assim sempre que se executa uma sesso em Matlab deve-se de preferncia criar um ficheiro de
texto e escrever a todos os comandos. Sempre que se queira executar todas as instrues basta
digitar um comando no Matlab. Doutra forma seria necessria digitar todas as instrues como
comandos de Matlab.
Alm disso, se for necessrio modificar algum dado (por exemplo alterar o valor do nmero x de
2 para 4) basta modificar o ficheiro de texto. No modo de comando seria necessrio, alm de
modificar o valor de x, digitar todas as restantes instrues.
1.3.2 Funes
Enquanto que um ficheiro *.m executa sequencialmente todas as instrues uma funo um
ficheiro *.m especial que devolve um ou mais valores. Distingue-se de um script principalmente
pela primeira linha, que da forma:
function [parmetros sada]] = nome_funo (parmetros entrada)
Suponha-se por exemplo que se implementa uma funo capaz de somar trs nmeros x, y e z.
Para resolver o problema comea-se por criar um ficheiro com o nome de, por exemplo, soma.m.
Uma possvel soluo para o contedo deste ficheiro ser:
function r =
soma( x, y, z)
r = x + y + z
end
15
r = soma( 1, 2 ,3)
e o resultado seria r = 6.
Suponhamos que se deseja uma funo que calcule a soma e o produto dos trs elementos x, y e
z. Da mesma forma cria-se um ficheiro de nome somaprod.m com o seguinte contedo:
[s,p]] = somaprod( 2, 2, 3)
resultando s= 7 e p= 12.
Nota importante: O Matlab identifica a funo pelo nome do ficheiro (neste caso somaprod) e
no pelo nome que lhe atribui dentro do ficheiro de texto (neste caso soma_produto).
Em Matlab existem seis operadores que permitem comparar duas matrizes de igual dimenso:
Operador
Interpretao
<
Menor do que
<=
>
Maior do que
16
==
Igual
~=
Diferente
Tabela 1.5: Operadores relacionais.
a < b
a = [ 2
6 ]
>>
b = [ 3
1 ]
>>
a < b
>>
ans = [ 1
os
0 ]
O resultado da operao a<b portanto verdadeira para os dois primeiros elementos e falsa para
o terceiro.
1.4.2 Operadores lgicos
possvel combinar duas expresses lgicas usando para isso operadores lgicos e (and), ou (or)
ou no (not).
Operador Lgico
Smbolo
and
&
or
not
17
vlida se cada uma das matrizes resultantes (da operao a<b e b<c) tiverem a mesma
dimenso.
1.4.3 Condio If
Significa que se a expresso lgica for verdadeira ento o conjunto de instrues executado; se
a expresso lgica for falsa o programa salta o conjunto de instrues. Consideremos o
seguinte exemplo:
if a<50
soma=soma+a
end
18
Adicionado ao comando if o comando else permite optar por um conjunto de instrues se uma
expresso lgica for verdadeira ou por outro conjunto de instrues se a expresso lgica for
falsa.
if expresso lgica
instrues 1
else
instrues 2
end
19
apenas o conjunto de instrues 3 executado. Claro que tambm possvel obter o mesmo
resultado apenas com instrues if, mas como se percebe, com um maior grau de complexidade.
1.4.6 Funes lgicas
O Matlab fornece um conjunto de funes lgicas teis em condies if. Eis algumas delas:
" any(x)
" all(x)
" isnan(x)
" isempty(x)
>>
any(A)
O resultado ser [0
>>
1]
1]
all(A)
O resultado ser [0
>>
isnan(A)
0 0 0 0
O resultado ser 0 0 0 0
0 0 0 0
20
isempty(A)
O resultado ser 0.
1.4.7 Ciclo de repetio For
Em Matlab existem duas formas possveis de executar ciclos: os comandos for e while. Nesta
seco apresenta-se o ciclo for e na seco seguinte o ciclo While. A diferena principal entre
ambos a seguinte: no ciclo for o nmero de repeties do ciclo perfeitamente conhecida, no
while esse nmero desconhece-se partida. A sintaxe do comando for a seguinte:
for index=expresso
instrues
end
Suponha que dispe de 10 nmeros armazenados num vector A e que pretende contar quais so
positivos e quais so negativos. Uma possvel soluo seria:
positivo = 0;
negativo = 0;
for i=1:10
if A(i) >0
positivo=positivo+1;
else
negativo=negativo+1;
end;
end;
De uma forma genrica a expresso para o index pode ser definida como:
for k = inicio:incremento:fim
ou seja k toma o valor inicial inicio e incrementada de incremento at ao valor final fim.
21
positivo = 0;
negativo = 0;
for i=1:2:length(A)
if A(i) > 0
positivo=positivo+1;
else
negativo=negativo+1;
end;
end;
Ou seja, enquanto a expresso lgica for verdadeira executado o conjunto de instrues. Caso
seja falsa interrompido o ciclo.
O primeiro exemplo de contagem de nmeros positivos e negativos pode ser solucionado usando
um ciclo while:
positivo = 0;
negativo = 0;
i=1;
while i<=10
if A(i) >0
positivo=positivo+1;
else;
22
1.5 Grficos 2D
1.5.1 Comando Plot
A maioria dos grficos necessrios so, sem dvida, do tipo x-y. Os dados consistem
normalmente num conjunto de pares ordenados de pontos e da a designao de grficos (x,y).
Recorde-se a tabela 1.1, onde se mostram os valores observados da temperatura do ar num
determinado local durante as 24 horas do dia, de duas em duas horas. Assumindo que os valores
foram guardados em dois vectores
>>
x =[ 0: 2: 22]
>>
y =[
10
14
17
15
13
11
10 ]
plot(x,y)
20
15
10
10
15
20
23
1.5 Grficos 2D
Ttulos
ainda possvel introduzir facilmente ttulos, designaes nos eixos e grelhas. Para isso poderse-iam usar os seguinte comandos:
>>
xlabel(Horas do dia)
>>
ylabel(Valores da Temperatura)
>>
>>
grid
20
V
a
l
o
r
e
s
15
d
a
T
e
m
p
e
r
at
u
r
a
10
10
15
20
Horas do dia
Outra possibilidade grfica que o Matlab permite a utilizao de grfico de barras. Existem
quatro comandos,
" bar(y)
" bar(x,y)
" stairs(y)
" stairs(x,y)
24
1.5 Grficos 2D
elementos igualmente espaados e ordenados por ordem
crescente
bar(x,y)
20
18
16
14
12
10
8
6
4
2
0
10
15
20
>>
stairs(x,y)
20
15
10
10
15
20
25
1.5 Grficos 2D
Figura 1.5: Grfico de barras da temperatura do ar.
possvel, usando a funo fill, representar no s a funo mas tambm a rea por ela definida
numa determinada cor. Por exemplo o comando a seguir,
>>
fill(x,y,c)
15
10
10
H o ra s do dia
15
20
Suponha que, para alm da temperatura, foi recolhido tambm o valor da velocidade do vento
durante o dia, armazenado no vector w.
Horas
Temperatura
Vento
12
13
14
26
1.5 Grficos 2D
6
15
17
10
10
13
12
14
19
14
17
11
16
15
18
13
20
11
22
10
14
plot(x,y,x,w)
20
15
10
10
15
20
Alm de poder representar vrias curvas no mesmo grfico pode-se ainda desejar visualizar de
forma diferente (para melhor as distinguir) cada uma das curvas. Em Matlab possvel
representar cada curva usando dois parmetros: tipo de linha e cor. A expresso geral :
plot(x,y,ct)
27
1.5 Grficos 2D
Cor
Tipo
Amarelo
Ponto
Mangenta
Circulo
Cian
Snal mais
Vermelho
Snal x
Verde
Slido
Azul
Ponteado
Branco
-.
Trao Ponto
Preto
--
Tracejado
Assim, o comando
>>
plot(x,y,'-.,x,w,'x')
15
10
10
15
20
Alm de por vezes se desejar visualizar vrias linhas no mesmo grfico deseja-se visualizar
vrios grficos no mesmo cran. O Matlab permite-o fazer usando o comando subplot. A sintaxe
deste comando a seguinte:
subplot(a,b,c)
28
1.5 Grficos 2D
Um exemplo:
>>
subplot(2,2,3)
Este comando permite definir o cran em duas linhas e duas colunas e seleccionar o terceiro
elemento, ou seja a posio, (2,1). O prximo grfico ser visualizado apenas neste cran.
Retomando o exemplo da temperatura e velocidade do vento suponha que foram executados os
seguintes comandos no Matlab,
>>
subplot(2,2,2)
>>
plot(x,y)
>>
>>
subplot(2,2,3)
>>
plot(x,w)
>>
Tem peratura
20
15
10
5
10
20
V elocid ade d o V en to
20
15
10
5
10
20
29
1.5 Grficos 2D
Divide-se portanto o cran em duas linhas e duas colunas, selecciona-se o segundo elemento e
visualiza-se a curva da temperatura, selecciona-se o terceiro elemento e visualiza-se a curva da
velocidade do vento.
Definio da Escala
O Matlab automaticamente define qual a gama de visualizao para os eixos vertical e horizontal
de um grfico. contudo possvel definir a gosto do utilizador a gama e o tipo de escalas a
utilizar. Para isso existe o comando axis. Eis algumas possibilidades:
" axis(v)
" axis
"axis(normal)
" axis(square)
Controlo do cran
" clc
" clg
" home
1.6 Grficos 3D
Nesta seco estudam-se algumas das possibilidades do Matlab na representao de grficos
tridimensionais.
Matlab: Ferramenta de simulao computacional e clculo numrico
30
1.6 Grficos 3D
semelhana do comando plot para curvas 2D existe o comando plot3 para representar no
espao tridimensional os vectores X, Y, e Z.
>>
plot3(x,y,z)
t=0:0.1:5*pi;
>>
>>
xlabel(x)
>>
ylabel(y)
>>
zlabel(z)
>>
grid
20
15
10
z
5
0
1
0 .5
1
0 .5
-0 .5
y
-0.5
-1
-1
31
1.6 Grficos 3D
Uma superfcie mesh gerada a partir de um conjunto de pontos existente numa matriz: cada
ponto da matriz representa o valor da superfcie.
Por exemplo pretende-se gerar uma superfcie tridimensional tal que as variveis x e y so as
variveis independentes (representam o plano horizontal) e a varivel z a dependente
(representa a terceira coordenada de cada ponto no espao).
Suponhamos por exemplo que se deseja traar o grfico da funo
z = f ( x, y ) = 1 x 2 y 2
ou de outra forma
x2 + y2 + z2 = 1
que se sabe ser uma esfera centrada na origem e raio 1. Sabe-se ainda que -0.5 x 0.5 e tambm
-0.5 y 0.5.
Primeiro procede-se criao da matriz z que contm valores de f(x,y).
i=1;
for x=-0.5:0.1:0.5;
j=1;
for y=-0.5:0.1:0.5;
z(i,j)=sqrt(abs(1-x.^2-y.^2));
j=j+1;
end
i=i+1;
end
mesh(z)
>>
32
1.6 Grficos 3D
G rafico 3 D
1
0 .9 5
0.9
0 .8 5
0.8
0 .7 5
0.7
15
15
10
10
5
0
>>
>>
z= sqrt(abs(1-xdom.^2-ydom.^2));
>>
mesh(z)
mesh(X,Y,z)
Neste caso a superfcie representada seria (note-se alm disso a introduo de uma grelha com o
comando grid).
33
1.6 Grficos 3D
G rafico 3D
1
0.9 5
0 .9
0.8 5
0 .8
0.7 5
0 .7
0.5
0.5
0
0
-0 .5
-0 .5
Pode ser desejado visualizar uma figura segundo um ngulo diferente. A posio de vista
definida em termos de azimute (rotao horizontal) e elevao vertical, ambas especificadas em
graus. Um valor positivo de azimute indica uma rotao no sentido contrrio ao dos ponteiros do
relgio. Valores positivos para a elevao vertical indicam uma rotao para cima e negativos
uma rotao para baixo. O valor de defeito utilizado pelo Matlab -37.5 para o azimute e 30 para
a elevao vertical.
possvel especificar estes parmetros no comando mesh, por exemplo, o comando
>>
>>
grid
34
1.6 Grficos 3D
G rafic o 3 D
1
0.9 5
0 .9
0.8 5
0 .8
0.7 5
0 .7
15
10
10
15
G rafic o 3 D
1
0 .9 5
0.9
0 .8 5
0.8
0 .7 5
15
0.7
0
10
5
10
5
15
Com o comando mesh possvel definir uma superfcie tipo uma grelha. Usando o comando
surf possvel representar outro tipo de superfcies, como a seguir se indica.
Suponha-se por exemplo que se deseja traar o grfico da funo sin(z)/z, vulgarmente conhecida
por chapu mexicano. Utilizando o comando meshgrid possvel determinar z=f(x,y)
35
1.6 Grficos 3D
>>
x=-8:0.6:8;
>>
y=-8:0.6:8;
>>[X,Y]
= meshgrid(x,y);
>>
>>
Z = sin(Z)./Z;
>>
surf(Z)
A seguir mostram-se tais opes fazendo uso do comando subplot j anteriormente explicado.
>>
surf(X,Y,Z)
>>
shading flat
>>
surf(X,Y,Z)
36
1.6 Grficos 3D
>>
shading interp
Vimos anteriormente que usando o comando mesh possvel definir um azimute e uma
elevao. De uma forma genrica pode ser usado o comando view.
>>
view(azimute, elevacao)
37
1.6 Grficos 3D
y2
view(0,0)
view(0,90)
view(-45,30)
view(45,30)
Entre outras possibilidades j estudadas anteriormente acerca dos eixos vulgar num grfico
tridimensional querer mostrar apenas a figura. Isso possvel com o comando,
>>
axis(off)
axis(on)
Modificao da Cor
38
1.6 Grficos 3D
Em Matlab existe um comando, colormap (mapa), que permite optar por um mapa de cores. Eis
algumas das possibilidades: hsv, pink, prism e hot.
Alm dos vectores X, Y e Z, no comando surf possivel especificar um quarto parmetro, a cor
da superfcie. De uma forma genrica o comando ser:
>>
surf(X,Y,X,C)
C=Z;
>>
xburaco=5:13;
39
1.6 Grficos 3D
>>
yburaco=5:13;
>>
C(xburaco,yburaco)=nan*C(xburaco,yburaco);
>>
surf(X,Y,Z,C)
" whos
" what
Abandonar o Matlab
"!
" computer
" clear
" ^c
" ans
" help
40
" pause
Exemplos:
help abs
% soma de a e b
1.8 Exemplos
Apresentam-se agora alguns exemplos de aplicao em Matlab
1.8.1 Mximo, mnimo e mdia
Neste primeiro exemplo pretende-se, dada uma funo y=f(x), calcular o seu valor mximo,
mnimo e mdio, para um certo domnio de x. Para isso pretende-se construir uma funo que
permita determinar o mximo, mnimo e o valor mdio de um dado conjunto de valores.
Deve-se no final fazer a representao de f(x), assim como as rectas horizontais que definem o
seu mximo, mnimo e mdia.
Dados: A funo f ( x) = 3 e x sin(5 x) definido no intervalo [0,5].
Function [ma,mi,me]=mamime(x)
Ma= max(x);
41
% -------------------- Definicao de t e x
x=0:0.1:5;
y=3*exp(-x).*sin(5*x);
% -------------------- Chamada da funcao
[ma,mi,me]=mamime(y);
% --------------------- Graficacao
N=length(y);
recta=ones(N,1);
plot(x,y,x,ma*recta,':',x,mi*recta,':',x,me*recta,':');
title( Maximo, Minimo e Media)
M a xim o , M in im o e M e d ia
2 .5
2
1 .5
1
0 .5
0
-0.5
-1
-1.5
42
Clear
Clc
%-------------------------------- Definicao do polinomio
disp(' INTRODUCAO DOS COEFICIENTES ')
a3 = input(' Coeficiente de ordem tres : ' );
a2 = input(' Coeficiente de ordem dois : ' );
a1 = input(' Coeficiente de ordem um
: ' );
: ' );
polinomio=[ a3 a2 a1 a0];
%-------------------------------- Definicao da gama de x
xmin = input(' Valor minimo de x ' );
xmax = input(' Valor maximo de x ' );
%-------------------------------- Calculo de y=f(x)
x=xmin:0.01:xmax;
y= a3*x.^3 + a2*x.^2 + a1*x + a0;
plot(x,y, x,0*y)
title(' Polinomio de terceira ordem ')
xlabel(' x ')
ylabel(' y ')
%-------------------------------- Calculo das raizes
raizes=roots(polinomio);
for i=1:3
if isreal(raizes(i))
disp(' Tem uma raiz real em :')
disp( raizes(i) )
pause
end
end
A seguir mostra-se o exemplo para o seguinte polinmio: f(x) = x3 - 6 x2 -4 x + 24, cujas razes
so -2, 2 e 6.
43
-2
2
x
Geral
help
ajuda
demo
demonstrao
who
what
computer
tipo computador
size
length
tamanho de um vector
clear
^c
quit
sair do Matlab
exit
idntica a quit
Caracteres Especiais
=
atribuio
ver [
precedncias em expresses
ver )
ponto decimal
44
comentrio
Matrizes
Operadores
Matrizes
Vectores
adio
adio
subtraco
subtraco
multiplicao
.*
multiplicao
diviso direita
./
diviso direita
diviso esquerda
.\
diviso esquerda
potncia
potncia
transposta
^.
transposta
Funes Matemticas
abs
valor absoluto
sqrt
raiz quadrada
real
imag
conj
round
fix
floor
ceil
sign
sinal de nmero
rem
resto
fmin
fzero
fmins
fzeros
sin
seno
45
coseno
tan
tangente
asin
arco seno
acos
arco coseno
atan
arco tangente
sinh
seno hiperblico
cosh
coseno hiperblico
tanh
tangente hiperblico
exp
exponencial (base e)
log
log10
Matrizes...
Definio de Matrizes
diag
matriz diagonal
eye
matriz identidade
ones
matriz de uns
zeros
matriz de zeros
rand
matriz aleatria
magic
matriz mgica
tril
triu
det
rank
mximo
min
mnimo
mean
valor mdio
std
desvio padro
median
mediana
sort
ordenao
sum
prod
diff
hist
histograma
table1
interpolao linear
corr
matriz de correlao
cov
matriz de covarincia
spline
interpolao cbica
46
ans
varivel
eps
preciso
pi
= 3.14159...
inf
Nan
clock
relgio
nargin
nargout
Controlo de Fluxo
if
expresso condicional
elseif
usada com if
else
usada com if
end
for
while
break
return
retornar de funes
pause
menor
&
AND
<=
menor ou igual
OR
>
maior
NOT
>=
maior ou igual
==
igual
~=
diferente
Funes Lgicas
any
condio lgica
all
condio lgica
find
isnan
detectar Nan
finit
detectar infinitos
isempt
47
isstr
se uma string
48
Comando
plot
format
formato de nmeros
polar
grfico polar
disp
visualizao
de
texto
ou
formatada
de
matrizes
mesh
superfcie 3D
fprintf
visualizao
nmeros
meshgrid
domnio em superfcies 3D
clc
bar
grficos de barras
home
grid
grelha
title
ttulo em grficos
xlabel
eixo dos x
ylabel
eixo dos y
text
texto
axis
definio de eixos
hold
manter um grfico
shg
clg
subplot
impresso de grficos
surf
superfcie 2D
plot3
curva 3D
view
ngulo de vista
shading
tipo superfcie
colormap
mapa de cores
caxis
49
Texto e Strings
abs
num2str
int2str
setstr
sprintf
Polinmios
poly
polinmio caracterstico
roots
razes de um polinmio
polyval
conv
multiplicao de polinmios
deconv
diviso de polinmios
residue
polyfit
Gesto de Ficheiros
chdir
mudana de directoria
delete
eliminar ficheiros
dir
load
save
type
visualizao de um ficheiro
what
50