You are on page 1of 27

Curso de introduo ao MATLAB 1

Curso de introduo ao MATLAB mdulo 1


IST, 9 de Dezembro de 2008



Mrio J. Franca
mfranca@dec.uc.pt mfranca@tetraplano.com
Departamento de Engenharia Civil Tetraplano, Engenharia Lda.
FCT - Universidade de Coimbra




1 INTRODUO AO AMBIENTE MATLAB
2 OPERAES E SINTAXE DE BASE
3 VECTORES E MATRIZES
4 GRFICOS

Curso de introduo ao MATLAB 2


1 INTRODUO AO AMBIENTE MATLAB

MATLAB um sistema interactivo, baseado na representao matricial, que
permite, num ambiente visual amigvel, realizar trabalhos de clculo, resoluo
numrica, processamento de dados e visualizao recorrendo a uma forma de
programao fcil. O interface MATLAB utilizado como ferramenta de clculo e
visualizao em trabalhos de investigao e no apoio resoluo de problemas de
engenharia.
Trabalhar com o MATLAB inclui as seguintes componentes:
- interface de trabalho (onde se encontram as janelas de comando, edio,
rea de trabalho, anlise de programas, etc.);
- biblioteca de funes matemticas (existe uma vasta biblioteca de funes
matemticas pr-programadas);
- linguagem MATLAB;
- manipulao de grficos (2D, 3D, animaes, etc.);
- referncias externas (interaco com programas em C e Fortran e
transformar scripts MATLAB em ficheiros executveis).

Ajuda de base disponvel:
- livro Getting Started e outra documentao fornecida com a compra
(disponvel em pdf);
- product help atravs do menu Help;
- documentao online com MATLAB help menu Help;
- animaes disponveis sobre as diversas funes do MATLAB basta
escrever demo na linha de comando do MATLAB;
- comando help seguido da funo sobre a qual se tem dvidas, por exemplo
escrever: help plot;
- fruns de discusso online da comunidade de utilizadores em
http://www.mathworks.com/

Curso de introduo ao MATLAB 3


Ambiente de trabalho:
Os menus mudam consoante
a ferramenta que se utiliza
Janela de comandos onde se
entram os comandos
Directoria corrente
Contedo da directoria
corrente
Janela de comandos

O MATLAB um ambiente inicialmente concebido para ser utilizado recorrendo a
linhas de comando e mantm esta orientao. Actualmente muitas das funes do
MATLAB podem ser acedidas e controladas atravs de um interface grfico. Os
interfaces grficos, vulgo janelas, podem ser teis para principiantes como forma
de conhecer as potencialidades do MATLAB ou para tarefas interactivas simples e
pontuais. No entanto, a utilizao de linhas de comando mais adequada para
operaes mais complexas e feitas medida do utilizador e para a criao de
scripts que permitam reproduzir tarefas repetidamente, permitindo ainda mais
criatividade ao utilizador.
Privilegia-se neste curso a utilizao do MATLAB com recurso linha de comando.
Os comandos devero ser inseridos na janela de comandos, aps o smbolo >>.
Para se executar qualquer comando deve-se utilizar a tecla enter.
Existem diversas toolboxes que se podem adquirir com funes especficas pr-
programadas tais como Statistics Toolbox, Signal Processing Toolbox, Neural
Network Toolbox, Partial Differential Equation Toolbox, etc.
Estas folhas contm informao sobre os comandos de base a utilizar em MATLAB
disseminada no texto principal e nos exemplos de cdigo que vo sendo
apresentados. Espera que o principiante siga os exemplos que so mostrados
transcrevendo os comandos apresentados e seguindo o seu resultado.
So sugeridos alguns exerccios ao longo do texto.
Curso de introduo ao MATLAB 4


2 OPERAES E SINTAXE DE BASE

Definio de directoria de trabalho:
- Com recurso ao menus File\Set Path.
- Com recurso janela onde se encontra inscrita a directoria corrente.
- Utilizando a linha de comandos: cd path; cd \ (para aceder ao nvel de
directoria inferior)

Funes genricas:
- quit: permite sair do programa.
- who: identifica as variveis criadas no ambiente de trabalho.
- whos: identifica as variveis criadas no ambiente de trabalho e fornece
informao mais detalhada respeitante a estas.
- clear: apaga todas as variveis no ambiente de trabalho; clear variable
apenas apaga a varivel variable.
- close: fecha a figura aberta em primeiro plano; close(h) fecha a janela
identificada como h; close all fecha todas as janelas criadas pelo utilizador.
- help: permite aceder a um texto de ajuda do MATLAB sobre determinado
comando; dever ser procedido do comando em questo.

Aritmtica simples:
>> 5+5
ans =
10
>>
Ficamos com a varivel ans armazenada com o valor 10. Esta uma varivel
genrica que adquire sempre o valor da ltima operao desde que a este no
tenha sido atribuda um nome de varivel. Podemos atribuir um nome varivel:
Curso de introduo ao MATLAB 5


>> a = 5 - 5
a =
10
>>
Ficamos agora com a varivel a armazenada com o valor 10, o que pode ser
confirmado com os comandos who ou whos. Se o utilizador no quiser visualizar
sempre o resultado da operao que realizou poder utilizar o smbolo ; no final
do comando:
>> b = 10 *5;
>>
A varivel b foi guardada com o valor 50 apesar de no ter sido visualizada na
janela de comando. Este aspecto de sintaxe pode adquirir particular importncia
quando se efectua clculo numrico envolva muitos valores, poupando bastante
tempo de processador. As variveis podero ser acedidas atravs da janela
correspondente ao workspace.
Por fim, quando se efectua uma operao com resultado infinito ou impossvel
obtm-se os valores Inf e NaN (Not A Number):
>> inexistente = 0/0;
>> infinito = 5/0;
>>
Nota que o valor NaN pode ser enganador. Quando se trabalha com operaes de
lgica, duas variveis com valor NaN so consideradas de valor diferente.
Podemos agora ver todas as variveis criadas com who ou whos e, por fim, elimin-
las parcialmente do rea de trabalho,
>> clear ans % elimina a varivel ans
>> clear a inexistente % elimina as variveis a e inexistente
>>
Ou todas,
>> clear
Curso de introduo ao MATLAB 6

>>
Outros exemplos de operaes matemticas:
As funes matemticas comuns esto todas pr-programadas e tm de ser
fornecida com os respectivos argumentos:
>> s = sin(pi);
>>
Quando atribumos ao mesmo nome outro valor, a varivel anterior substituda:
>> s=atan(Inf)/pi;
>>
Exemplos de outras operaes:
>> exp(i*pi)
ans =
-1.0000 + 0.0000i
>> ans^2
ans =
1.0000 - 0.0000i
>> imag(ans)
ans =
0
>> sqrt(9)
ans =
3
>> 2^3
ans =
8
>> numero_dias_que_ghandi_viveu = floor(now)-datenum(1948,01,30)
numero_dias_que_ghandi_viveu =
Curso de introduo ao MATLAB 7

22226
>> log(exp(1))
ans =
1
>> log10(exp(1))
ans =
0.4343
>>
Quando se procura ajuda utilizando o comando help surgem uma srie de
sugestes que podero ser teis (See also ):
>> help now
NOW Current date and time as date number.
T = NOW returns the current date and time as a serial date
number.

FLOOR(NOW) is the current date and REM(NOW,1) is the current time.
DATESTR(NOW) is the current date and time as a string.

See also date, datenum, datestr, clock.

Reference page in Help browser
doc now

>> help imag
IMAG Complex imaginary part.
IMAG(X) is the imaginary part of X.
See I or J to enter complex numbers.
Curso de introduo ao MATLAB 8


See also real, isreal, conj, angle, abs.

Reference page in Help browser
doc imag

Exerccios:
1. Efectuar as seguintes operaes matemticas:
(a) (2.1185)
(b) (0.9201)
(c) Calcular a rea de um crculo de dimetro 6. (28.2743)
(d) (2.0263)

2. Qual o nome das funes pr-programadas que o MATLAB utiliza para:
(a) Calcular a funo Bessel do segundo tipo?
(b) Multiplicar dois polinmios?
(c) Representar graficamente um campo de vectores?
(d) Calcular a matriz inversa?

2. Qual o significado das funes pr-programadas: rand; fft: plot e load.






Curso de introduo ao MATLAB 9


3 VECTORES E MATRIZES

O MATLAB foi concebido inicialmente para clculo matricial; a programao em
MATLAB dever tirar partido disso e ser orientada o mais possvel para o uso de
matrizes.

Construo de vectores e matrizes:
>> A = [1 2 3 ; 4 5 6 ; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> b = [0 ; 1 ; 0]
b =
0
1
0
>> B = [0 1 0]
B =
0 1 0
O MATLAB trata os vectores como bidimensionais, embora com uma dimenso
trivial. Aceita matrizes reais e complexas (no MATLAB, salvo indicao contrria, i
corresponde unidade imaginria):
>> C=[sqrt(-1) (-2)^3+5i;log(25) sin(2*pi/3)]
C =
0 + 1.0000i -8.0000 + 5.0000i
3.2189 0.8660
Curso de introduo ao MATLAB 10

>>
Existem comandos que permitem saber as dimenses das matrizes ou vectores:
>> size(A) , size(b) , size(B), size(C)
ans =
3 3
ans =
3 1
ans =
1 3
ans =
2 2
>> ndims(A) , ndims(b) , ndims(B), ndims(C)
ans =
2
ans =
2
ans =
2
ans =
2
As matrizes podem ser construdas a partir da concatenao de outras matrizes ou
vectores desde que as suas dimenses sejam compatveis:
>> [A b]
ans =
1 2 3 0
4 5 6 1
7 8 9 0
Curso de introduo ao MATLAB 11

>> [A ; b]
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
>> [A B]
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.
>> D = [ [1 2;3 4] [5;6] ]
D =
1 2 5
3 4 6
>>
permitida a construo de vectores constitudos por escalares igualmente
espaados com uma sintaxe simples e condensada do seguinte modo utilizando o
operador ponto e vrgula (first:step:last):
>> 1:8
ans =
1 2 3 4 5 6 7 8
>> 0:2:10
ans =
0 2 4 6 8 10
>> d = 1:-.5:-1
d =
1.0000 0.5000 0 -0.5000 -1.0000
>>

Manipulao dos valores no interior de vectores e matrizes:
Podemos nos referir aos valores no interior de matrizes ou vectores utilizando a
notao indicial para cada elemento:
Curso de introduo ao MATLAB 12


>> B(3) % unidimensional
ans =
0
>> A(2,3) % bidimensional
ans =
6
>> b(2) % unidimensional
ans =
1
>> A(1:2,2:3) % submatriz
ans =
2 3
5 6
>> A(2,2:end) % utilizando o operador end
ans =
5 6
>> A(:,2) % utilizao do carcter especial :
ans =
2
5
8
>> A(3,:)
ans =
7 8 9
>> imag(C(1,2)) % manipulao de elementos de uma matriz
ans =
Curso de introduo ao MATLAB 13

5
>> real(C(1,2))+imag(C(1,2))
ans =
-3
Um elemento de uma matriz pode ser acedido atravs de um nico ndice uma vez
que estas so armazenadas em memria linearmente pela primeira dimenso e
subsequentemente pelas outras dimenses:
>> A
A =
1 2 3
4 5 6
7 8 9
>> A(3)
ans =
7
>> A(6)
ans =
8
Outras operaes de manipulao das matrizes incluem:
>> R = rand(2,5)
R =
0.1576 0.9572 0.8003 0.4218 0.7922
0.9706 0.4854 0.1419 0.9157 0.9595
>> R(:,4) = [ ] % apaga elementos da matriz
R =
0.1576 0.9572 0.8003 0.7922
0.9706 0.4854 0.1419 0.9595
Curso de introduo ao MATLAB 14

>> R(2,:) = 111 % expande o escalar 111 na linha 2
R =
0.1576 0.9572 0.8003 0.7922
111.0000 111.0000 111.0000 111.0000
>> R(3,1) = 555 % cria uma nova linha para alocar um novo escalar
R =
0.1576 0.9572 0.8003 0.7922
111.0000 111.0000 111.0000 111.0000
555.0000 0 0 0
>> R' % matriz transposta
ans =
0.1576 111.0000 555.0000
0.9572 111.0000 0
0.8003 111.0000 0
0.7922 111.0000 0

Operaes de lgica com vectores e matrizes:
Os operadores de lgica so: ==; <; <=; >; >=; ~=.
>> R>0.8
ans =
0 1 1 0
1 1 1 1
1 0 0 0
>> R(ans)
ans =
111.0000
555.0000
Curso de introduo ao MATLAB 15

0.9572
111.0000
0.8003
111.0000
111.0000
>> R(R==0)
ans =
0
0
0
>> R([1 1 1])
ans =

Operaes com vectores e matrizes:
>> A+A
ans =
2 4 6
8 10 12
14 16 18
>> ans-0.5
ans =
1.5000 3.5000 5.5000
7.5000 9.5000 11.5000
13.5000 15.5000 17.5000
>> 0.1*R
ans =
0.0158 0.0957 0.0800 0.0792
Curso de introduo ao MATLAB 16

11.1000 11.1000 11.1000 11.1000
55.5000 0 0 0
>> A*B % clculo matricial impossvel por incompatibilidade de dimenses
??? Error using ==> mtimes
Inner matrix dimensions must agree.
>> A*b
ans =
2
5
8
>> A*R(:,2:4)
ans =
222.9572 222.8003 222.7922
558.8287 558.2011 558.1688
894.7002 893.6020 893.5455
>> A^2
ans =
30 36 42
66 81 96
102 126 150
>> cos(A)
ans =
0.5403 -0.4161 -0.9900
-0.6536 0.2837 0.9602
0.7539 -0.1455 -0.9111
O operador \ permite a resoluo de sistemas lineares de equaes do seguinte
modo:
Curso de introduo ao MATLAB 17

>> R(:,1:3)\b
ans =
0
-0.0460
0.0550
Os operadores *, /, ^ tm uma interpretao prpria no que diz respeito ao clculo
matricial. Para aplicar estas operaes elemento a elemento entre duas matrizes
de dimenses semelhantes utiliza-se o smbolo . antes do operador:
>> A.*R(:,2:4)
ans =
0.9572 1.6006 2.3766
444.0000 555.0000 666.0000
0 0 0
>> A./R(:,2:4)
ans =
1.0447 2.4991 3.7869
0.0360 0.0450 0.0541
Inf Inf Inf
>> A.^3
ans =
1 8 27
64 125 216
343 512 729



Funes utilizadas com vectores e matrizes:
Curso de introduo ao MATLAB 18

size, length, ndims, find, eye, zero, ones, diag, triu, tril, rand, rank, \, det, norm, expm,
lu, qr, chol, eig, svd, sparse; max; sum; mean; any; min; diff; median; all; sort; prod;
std; cumsum; ones.
Escrevendo na linha de comando help seguido do nome da funo obtm-se
informao sobre cada uma delas.
Exerccios:
1. Definir o significado das funes e operadores: ~=; eye; triu; eig; det; ones, sum
2. Crie uma matriz (3x3) onde em cada linha dever incluir a sua data de
nascimento (dia, ms, ano) e dos seus pais. Com uma linha de comando calcule a
idade dos trs. Determine, com uma linha de comando, qual a idade da pessoa mais
velha das trs. Com uma linha de comando apenas indique quantos dias faltam
para o primeiro aniversrio a acontecer entre os trs.
3. Crie, com um comando apenas, uma matriz (11x5) em que todos os seus
elementos escalares valem 16.
4. Crie a matriz A (5x5) constituda por valores aleatrios. Encontre o mximo
valor em cada coluna, em cada linha e o mximo total. Encontre os ndices
correspondentes aos elementos com valores superiores a 0.3.
5. Escreva um comando (numa s linha) que permita determinar numa matriz
qualquer A (16x16), constituda por valores aleatrios, quantos valores so
superiores a 0.25.
6. Escreva um comando que permita calcular a mdia da quarta linha de uma
matriz qualquer (n x m), em que n superior a 4.
7. Crie, com um comando apenas, uma matriz (4x4) em que os elementos da
diagonal so todos iguais a 13 e os restantes iguais a 2. Calcule a sua inversa
utilizando dois comandos diferentes. Determine a sua triangular superior e a
inferior.







Curso de introduo ao MATLAB 19

4 GRFICOS

Para exemplificar alguns comandos grficos do MATLAB vamos utilizar o ficheiro
de dados exemplo_vel.mat:
load demo_graphs.mat
Este ficheiro de dados de MATLAB contm seis variveis: quatro matrizes
bidimensionais com dados de velocidade mdia (V1 e V2) de um escoamento em
superfcie livre e da respectiva varincia (var1 e var2); e dois vectores
correspondentes s coordenadas espaciais onde os valores de velocidade foram
medidos (x e z).

Comando plot.
O comando mais bsico de manipulao grfica que o MATLAB contm o
comando plot. Permite criar grficos bidimensionais. Vamos criar um grfico onde
figure a evoluo da velocidade V1 ao longo do canal (variao em x) para a quinta
posio na vertical (em z, segundo ndice nas matrizes de dados de velocidade
igual a 5).
figure(10)
plot(v_test_1(:,5),x)

Curso de introduo ao MATLAB 20

Para manter na figura criada esta imagem e sobrepor outros dados dever utilizar-
se o comando hold. Vamos introduzir na mesma figura os dados relativos a
v_test_2.
figure(10)
hold
plot(v_test_2(:,5),x)

O comando close permite fechar as janelas abertas. Para se fechar a figura 10:
close(10); close all fecha todas as figuras abertas no desktop; close apenas fecha a
figura activa.
De seguida apresenta-se o exemplo de um cdigo que permite obter na mesma
figura as duas funes de velocidade apresentadas anteriormente, distinguidas
com cores diferentes, com legendas, etc., e que permite criar um ficheiro do tipo
jpeg com o resultado final.
% Exemplo de figuras

load demo_graphs.mat

figure(20)
hold % imagem fica fixa

% criar linhas com cor, simbologia, etc. pr-definidas
plot(x,v_test_1(:,5),'r','linewidth',2);
plot(x,v_test_2(:,5),'b-x','linewidth',1,'markersize',8);

% definio dos eixos
set(gca,'xtick',0:0.02:0.14,'Fontsize',11,'Fontname','Times');
set(gca,'ytick',0:0.05:0.35,'Fontsize',11,'Fontname','Times');

Curso de introduo ao MATLAB 21

% definir os limites dos eixos do grfico
axis([0 0.12 0 0.35]);

% criao das legendas num grfico bidimensional definido o tipo e
tamanho
% de letra pretendido
xlabel('x (m)','Fontsize',14,'Fontname','Times');
ylabel('velocidade (m/s)','Fontsize',14,'Fontname','Times');

% criar grelha
grid on

% colocar legenda, o argumento indica a posio da legenda
legend('v1','v2',3)

% definio da posio e do tamanho da figura
set(gcf,'PaperPosition',[0.133858 4.19575 8 3.30141])

% imprimir para ficheiro jpeg
print -djpeg90 velocidades

% fechar figura
close(20)
Este cdigo, tal como est, pode ser escrito e gravado como um script do tipo m-file.
O nome deste script poder ser evocado no ambiente MATLAB e os comandos no
seu interior sero executados sequencialmente.
Note-se que o carcter % permite a insero de comentrios no cdigo de
MATLAB.
A ttulo de exemplo mostra-se como se poderia criar o mesmo grfico em formato
logartmico.
figure(30)

loglog(x,v_test_1(5,:,5),'r','linewidth',2);
hold
loglog(x,v_test_2(5,:,5),'b-x','linewidth',1,'markersize',8);

Curso de introduo ao MATLAB 22

Podemos agora separar os dados em grficos diferentes mas na mesma figura,
juntando os dados de varincia: utilizao do comando subplot.
figure(40)

subplot(221), hold, grid,
plot(x,v_test_1(:,5),'k','linewidth',2);
set(gca,'xtick',0:0.02:0.14,'Fontsize',11,'Fontname','Times');
set(gca,'ytick',0:0.05:0.35,'Fontsize',11,'Fontname','Times');
axis([0 0.12 0 0.35]);
xlabel('x (m)','Fontsize',11,'Fontname','Times');
ylabel('velocidade (m/s)','Fontsize',11,'Fontname','Times');
% inserir ttulo da figura
title('V1','Fontsize',14,'Fontname','Times');

subplot(222), hold, grid,
plot(x,v_test_2(:,5),'k','linewidth',2);
set(gca,'xtick',0:0.02:0.14,'Fontsize',11,'Fontname','Times');
set(gca,'ytick',0:0.05:0.35,'Fontsize',11,'Fontname','Times');
axis([0 0.12 0 0.35]);
xlabel('x (m)','Fontsize',11,'Fontname','Times');
ylabel('velocidade (m/s)','Fontsize',11,'Fontname','Times');
title('V2','Fontsize',14,'Fontname','Times');

subplot(223), hold, grid,
plot(x,var_test_1(:,5),'b','linewidth',2);
set(gca,'xtick',0:0.02:0.14,'Fontsize',11,'Fontname','Times');
set(gca,'ytick',0:0.01:0.05,'Fontsize',11,'Fontname','Times');
axis([0 0.12 0 0.05]);
xlabel('x (m)','Fontsize',11,'Fontname','Times');
ylabel('velocidade (m/s)','Fontsize',11,'Fontname','Times');
title('var1','Fontsize',14,'Fontname','Times');

subplot(224), hold, grid,
plot(x,var_test_2(:,5),'b','linewidth',2);
set(gca,'xtick',0:0.02:0.14,'Fontsize',11,'Fontname','Times');
set(gca,'ytick',0:0.01:0.05,'Fontsize',11,'Fontname','Times');
axis([0 0.12 0 0.05]);
xlabel('x (m)','Fontsize',11,'Fontname','Times');
ylabel('velocidade (m/s)','Fontsize',11,'Fontname','Times');
title('var2','Fontsize',14,'Fontname','Times');


set(gcf,'PaperPosition',[0.133858 4.19575 6 4])
print -djpeg90 subplot_exe

close(40)
Curso de introduo ao MATLAB 23


O comando cla permite apagar o contedo de uma figura conservando a sua
formatao.

Grficos tridimensionais
Existem vrios comandos que permitem a criao de grficos tridimensionais,
entre eles contour, image, surf, quiver, e plot3. Os dados tridimensionais so
geralmente constitudos por duas variveis unidimensionais definidoras da
moldura bidimensional (no presente caos x e y) e por uma terceira varivel que
fornece a informao correspondente elevao (no caso do presente exemplo
os valores de velocidade e varincia).
Vamos criar exemplos de aplicao dos comandos contour e quiver.
contour: este comando produz um grfico de linhas de nvel com base nas
coordenadas da moldura e nos dados de base.
Exemplifica-se uma utilizao simples do comando contour:
figure(50)

contour(x,z,v_test_1') % note-se que a matriz de dados foi transposta
% para que o comprimento de x correspondesse ao
% seu nmero de colunas
Curso de introduo ao MATLAB 24


O comando contour ignorou, na construo das linhas de nvel, os valores na matriz
de dados identificados como NaN.
O nmero de linhas de nvel e a equidistncia entre estas foram criados
automaticamente em funo dos valores limites dos dados; o utilizador pode
definir estes quer dando o nmero de classes de curvas de nvel quer fornecendo
os seus limites mximo, mnimo e uma equidistncia.
figure(60), hold, grid
contour(x,z,v_test_1',[0.1:0.01:0.3])
set(gca,'xtick',0:0.2:0.12,'Fontsize',13,'FontName','Times');
set(gca,'ytick',0:0.02:0.1,'Fontsize',11,'Fontname','Times');
xlabel('x (m)','Fontsize',14,'Fontname','Times');
ylabel('z (m)','Fontsize',14,'Fontname','Times');
title('v test 1, (m/s)')
colormap('winter') % podemos definir vrias paletes de cores
colorbar % introduz a escala de classes das curvas de nvel

Curso de introduo ao MATLAB 25

contourf: uma extenso do comando contour, em que o espao entre curvas de
nvel preenchido a cores.
Mostramos de seguida um exemplo de imagem onde se combinam os comandos
contour e contourf.
figure(70), hold
% nesta linha de comando mostra-se como incluir operaes no interior
do
% cdigo definidor de grficos de forma a generalizar a sua aplicao
contourf(x,z,v_test_1',[min(min(v_test_2)):...
(max(max(v_test_2))-min(min(v_test_2)))/15:max(max(v_test_2))])
% a utilizao de "..." permite continuar na linha seguite
[C,H]=contour(x,z,v_test_1',10,'--r');
% 10 curvas de nvel so definidas
% C a matriz que define o mapa das curvas de nvel
% H o handle do grfico contour; serve para evocar este grfico
clabel(C,H)
set(gca,'xtick',0:0.025:0.12,'Fontsize',13,'FontName','Times');
set(gca,'ytick',0:0.02:0.1,'Fontsize',11,'Fontname','Times');
xlabel('x (m)','Fontsize',14,'Fontname','Times');
ylabel('z (m)','Fontsize',14,'Fontname','Times');
title('v test 1, (m/s)')
colormap('summer'), colorbar % o uso de vrgulas permite colocar dois
% comandos na mesma linha
shading flat % permite eliminar os contornos das linhas de nvel
set(gca,'XGrid','on') % activa apenas as linhas de grelha verticais
set(gcf,'PaperPosition',[0.133858 4.19575 6 4])
print -djpeg90 contour_plot, close(70)



Curso de introduo ao MATLAB 26

Combinao de grficos bidimensionais e tridimensionais na mesma figura
utilizando o subplot
figure(80)
subplot(211), hold
contourf(x,z,v_test_1',[min(min(v_test_2)):...
(max(max(v_test_2))-min(min(v_test_2)))/15:max(max(v_test_2))])
[C,H]=contour(x,z,v_test_1',10,'--b');
clabel(C,H)
set(gca,'xtick',0:0.025:0.12,'Fontsize',13,'FontName','Times');
set(gca,'ytick',0:0.02:0.1,'Fontsize',11,'Fontname','Times');
xlabel('x (m)','Fontsize',14,'Fontname','Times');
ylabel('z (m)','Fontsize',14,'Fontname','Times');
title('contorno, (m/s)')
colormap('autumn'), colorbar
shading flat
set(gca,'XGrid','on')
gtext('NaN','Fontsize',13,'FontName','Times'); % permite colocar texto
% em qualquer parte da figura

subplot(223), hold, grid
% definem-se apenas alguns dos perfis verticais a representar
plot(v_test_1([10 20 30 40 50],:),z,'k','linewidth',2);
set(gca,'xtick',0:0.1:0.5,'Fontsize',11,'Fontname','Times');
set(gca,'ytick',0:0.02:0.1,'Fontsize',11,'Fontname','Times');
axis([0 0.5 0 0.1]);
xlabel('vel_t_e_s_t_,_1 (m/s)','Fontsize',11,'Fontname','Times');
ylabel('z (m)','Fontsize',11,'Fontname','Times');
title('perfis de velocidade','Fontsize',14,'Fontname','Times');

subplot(224), hold, grid
plot(var_test_1([10 20 30 40 50],:),z,'k','linewidth',2);
set(gca,'xtick',0:0.02:0.1,'Fontsize',11,'Fontname','Times');
set(gca,'ytick',0:0.02:0.1,'Fontsize',11,'Fontname','Times');
axis([0 0.06 0 0.1]);
xlabel('var_t_e_s_t_,_1 (m/s)','Fontsize',11,'Fontname','Times');
ylabel('z (m)','Fontsize',11,'Fontname','Times');
title('perfis de variancia','Fontsize',14,'Fontname','Times');


set(gcf,'PaperPosition',[0.133858 4.19575 8 8])
print -djpeg90 contour_plot, close(80)


Curso de introduo ao MATLAB 27


Exerccios:
1. No mesmo grfico represente um perfil vertical de velocidade para cada teste e
na mesma posio longitudinal (em x) com diferentes simbologias. Faa uma
legenda da simbologia e coloque manualmente uma indicao junto a cada perfil
com o nome do teste correspondente.
2. Considere que as seguintes variveis V=v_test_1 e W=0.1*v_test_2. Faa um
grfico tridimensional das linhas de nvel da intensidade do vector definido por r
no campo definido pelas coordenadas dos vectores x e z.
3. No grfico anterior, sobreponha o campo vectorial definido pelo vector
utilizando para tal o comando quiver. No represente todos os vectores, apenas
alguns seleccionados de forma a no sobrecarregar a imagem.