• Nenhum resultado encontrado

Curso de introdução ao MATLAB módulo 1

N/A
N/A
Protected

Academic year: 2021

Share "Curso de introdução ao MATLAB módulo 1"

Copied!
27
0
0

Texto

(1)

Curso de introdução ao MATLAB 1

Curso de introdução ao MATLAB – módulo 1

IST, 9 de Dezembro de 2008

Mário J. Franca

mfranca@dec.uc.pt mfranca@tetraplano.com

Departamento de Engenharia Civil Tetraplano, Engenharia Lda.

FCT - Universidade de Coimbra

1 – INTRODUÇÃO AO AMBIENTE MATLAB 2 – OPERAÇÕES E SINTAXE DE BASE 3 – VECTORES E MATRIZES

4 – GRÁFICOS

(2)

Curso de introdução ao MATLAB 2

1 – INTRODUÇÃO AO AMBIENTE MATLAB

MATLAB é um sistema interactivo, baseado na representação matricial, que permite, num ambiente visual amigável, realizar trabalhos de cálculo, resolução numérica, processamento de dados e visualização recorrendo a uma forma de programação fácil. O interface MATLAB é utilizado como ferramenta de cálculo e visualização em trabalhos de investigação e no apoio à resolução de problemas de engenharia.

Trabalhar com o MATLAB inclui as seguintes componentes:

- interface de trabalho (onde se encontram as janelas de comando, edição, área de trabalho, análise de programas, etc.);

- biblioteca de funções matemáticas (existe uma vasta biblioteca de funções matemáticas pré-programadas);

- linguagem MATLAB;

- manipulação de gráficos (2D, 3D, animações, etc.);

- referências externas (interacção com programas em C e Fortran e transformar scripts MATLAB em ficheiros executáveis).

Ajuda de base disponível:

- livro Getting Started e outra documentação fornecida com a compra (disponível em pdf);

- product help através do menu Help;

- documentação online com MATLAB help – menu Help;

- animações disponíveis sobre as diversas funções do MATLAB – basta escrever demo na linha de comando do MATLAB;

- comando help seguido da função sobre a qual se tem dúvidas, por exemplo escrever: help plot;

- fóruns de discussão online da comunidade de utilizadores em

http://www.mathworks.com/

(3)

Curso de introdução 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

Conteúdo da directoria corrente

Janela de comandos

O MATLAB é um ambiente inicialmente concebido para ser utilizado recorrendo a linhas de comando e mantém esta orientação. Actualmente muitas das funções do MATLAB podem ser acedidas e controladas através de um interface gráfico. Os interfaces gráficos, 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 utilização de linhas de comando é mais adequada para operações mais complexas e feitas à medida do utilizador e para a criação de scripts que permitam reproduzir tarefas repetidamente, permitindo ainda mais criatividade ao utilizador.

Privilegia-se neste curso a utilização do MATLAB com recurso à linha de comando.

Os comandos deverão ser inseridos na janela de comandos, após o símbolo “>>”.

Para se executar qualquer comando deve-se utilizar a tecla enter.

Existem diversas toolboxes que se podem adquirir com funções específicas pré- programadas tais como Statistics Toolbox, Signal Processing Toolbox, Neural Network Toolbox, Partial Differential Equation Toolbox, etc.

Estas folhas contêm informação sobre os comandos de base a utilizar em MATLAB disseminada no texto principal e nos exemplos de código que vão sendo apresentados. Espera que o principiante siga os exemplos que são mostrados transcrevendo os comandos apresentados e seguindo o seu resultado.

São sugeridos alguns exercícios ao longo do texto.

(4)

Curso de introdução ao MATLAB 4

2 – OPERAÇÕES E SINTAXE DE BASE

Definição 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 nível de directoria inferior)

Funções genéricas:

- quit: permite sair do programa.

- who: identifica as variáveis criadas no ambiente de trabalho.

- whos: identifica as variáveis criadas no ambiente de trabalho e fornece informação mais detalhada respeitante a estas.

- clear: apaga todas as variáveis no ambiente de trabalho; clear variable apenas apaga a variável 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 questão.

Aritmética simples:

>> 5+5 ans = 10

>>

Ficamos com a variável ans armazenada com o valor 10. Esta é uma variável

genérica que adquire sempre o valor da última operação desde que a este não

tenha sido atribuída um nome de variável. Podemos atribuir um nome à variável:

(5)

Curso de introdução ao MATLAB 5

>> a = 5 - 5 a =

10

>>

Ficamos agora com a variável “a” armazenada com o valor 10, o que pode ser confirmado com os comandos who ou whos. Se o utilizador não quiser visualizar sempre o resultado da operação que realizou poderá utilizar o símbolo “;” no final do comando:

>> b = 10 *5;

>>

A variável b foi guardada com o valor 50 apesar de não ter sido visualizada na janela de comando. Este aspecto de sintaxe pode adquirir particular importância quando se efectua cálculo numérico envolva muitos valores, poupando bastante tempo de processador. As variáveis poderão ser acedidas através da janela correspondente ao workspace.

Por fim, quando se efectua uma operação com resultado infinito ou impossível obtém-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 operações de lógica, duas variáveis com valor NaN são consideradas de valor diferente.

Podemos agora ver todas as variáveis criadas com who ou whos e, por fim, eliminá- las parcialmente do área de trabalho,

>> clear ans % elimina a variável ans

>> clear a inexistente % elimina as variáveis a e inexistente

>>

Ou todas,

>> clear

(6)

Curso de introdução ao MATLAB 6

>>

Outros exemplos de operações matemáticas:

As funções matemáticas comuns estão todas pré-programadas e têm de ser fornecida com os respectivos argumentos:

>> s = sin(pi);

>>

Quando atribuímos ao mesmo nome outro valor, a variável anterior é substituída:

>> s=atan(Inf)/pi;

>>

Exemplos de outras operações:

>> 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 =

(7)

Curso de introdução 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 série de sugestões que poderão 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.

(8)

Curso de introdução ao MATLAB 8

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

Reference page in Help browser doc imag

Exercícios:

1. Efectuar as seguintes operações matemáticas:

(a) (2.1185)

(b) (0.9201)

(c) Calcular a área de um círculo de diâmetro 6. (28.2743)

(d) (2.0263)

2. Qual o nome das funções pré-programadas que o MATLAB utiliza para:

(a) Calcular a função Bessel do segundo tipo?

(b) Multiplicar dois polinómios?

(c) Representar graficamente um campo de vectores?

(d) Calcular a matriz inversa?

2. Qual o significado das funções pré-programadas: rand; fft: plot e load.

(9)

Curso de introdução ao MATLAB 9

3 – VECTORES E MATRIZES

O MATLAB foi concebido inicialmente para cálculo matricial; a programação em MATLAB deverá tirar partido disso e ser orientada o mais possível para o uso de matrizes.

Construção 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 dimensão trivial. Aceita matrizes reais e complexas (no MATLAB, salvo indicação contrária, i corresponde à unidade imaginária):

>> C=[sqrt(-1) (-2)^3+5i;log(25) sin(2*pi/3)]

C =

0 + 1.0000i -8.0000 + 5.0000i

3.2189 0.8660

(10)

Curso de introdução ao MATLAB 10

>>

Existem comandos que permitem saber as dimensões 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 construídas a partir da concatenação de outras matrizes ou vectores desde que as suas dimensões sejam compatíveis:

>> [A b]

ans =

1 2 3 0

4 5 6 1

7 8 9 0

(11)

Curso de introdução 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 construção de vectores constituídos por escalares igualmente espaçados com uma sintaxe simples e condensada do seguinte modo utilizando o operador “ponto e vírgula” (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

>>

Manipulação dos valores no interior de vectores e matrizes:

Podemos nos referir aos valores no interior de matrizes ou vectores utilizando a

notação indicial para cada elemento:

(12)

Curso de introdução 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) % utilização do carácter especial “:”

ans = 2 5 8

>> A(3,:) ans = 7 8 9

>> imag(C(1,2)) % manipulação de elementos de uma matriz

ans =

(13)

Curso de introdução ao MATLAB 13

5

>> real(C(1,2))+imag(C(1,2)) ans =

-3

Um elemento de uma matriz pode ser acedido através de um único índice uma vez que estas são armazenadas em memória linearmente pela primeira dimensão e subsequentemente pelas outras dimensões:

>> A A =

1 2 3 4 5 6 7 8 9

>> A(3) ans = 7

>> A(6) ans = 8

Outras operações de manipulação 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

(14)

Curso de introdução 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

Operações de lógica com vectores e matrizes:

Os operadores de lógica são: ==; <; <=; >; >=; ~=.

>> R>0.8 ans =

0 1 1 0 1 1 1 1 1 0 0 0

>> R(ans)

ans =

111.0000

555.0000

(15)

Curso de introdução 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 =

Operações 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

(16)

Curso de introdução ao MATLAB 16

11.1000 11.1000 11.1000 11.1000 55.5000 0 0 0

>> A*B % cálculo matricial impossível por incompatibilidade de dimensões

??? 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 resolução de sistemas lineares de equações do seguinte

modo:

(17)

Curso de introdução ao MATLAB 17

>> R(:,1:3)\b ans =

0 -0.0460 0.0550

Os operadores *, /, ^ têm uma interpretação própria no que diz respeito ao cálculo matricial. Para aplicar estas operações elemento a elemento entre duas matrizes de dimensões semelhantes utiliza-se o símbolo ”.” 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

Funções utilizadas com vectores e matrizes:

(18)

Curso de introdução 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 função obtém-se informação sobre cada uma delas.

Exercícios:

1. Definir o significado das funções 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, mês, ano) e dos seus pais. Com uma linha de comando calcule a idade dos três. Determine, com uma linha de comando, qual a idade da pessoa mais velha das três. Com uma linha de comando apenas indique quantos dias faltam para o primeiro aniversário a acontecer entre os três.

3. Crie, com um comando apenas, uma matriz (11x5) em que todos os seus elementos escalares valem 16.

4. Crie a matriz A (5x5) constituída por valores aleatórios. Encontre o máximo valor em cada coluna, em cada linha e o máximo 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), constituída por valores aleatórios, quantos valores são superiores a 0.25.

6. Escreva um comando que permita calcular a média 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 são 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.

(19)

Curso de introdução ao MATLAB 19

4 – GRÁFICOS

Para exemplificar alguns comandos gráficos do MATLAB vamos utilizar o ficheiro de dados exemplo_vel.mat:

load demo_graphs.mat

Este ficheiro de dados de MATLAB contém seis variáveis: quatro matrizes bidimensionais com dados de velocidade média (V1 e V2) de um escoamento em superfície livre e da respectiva variância (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 básico de manipulação gráfica que o MATLAB contém é o comando plot. Permite criar gráficos bidimensionais. Vamos criar um gráfico onde figure a evolução da velocidade V1 ao longo do canal (variação em x) para a quinta posição na vertical (em z, segundo índice nas matrizes de dados de velocidade igual a 5).

figure(10)

plot(v_test_1(:,5),x)

(20)

Curso de introdução 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 código que permite obter na mesma figura as duas funções 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);

% definição 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');

(21)

Curso de introdução ao MATLAB 21

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

% criação das legendas num gráfico 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 posição da legenda legend('v1','v2',3)

% definição da posição 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 código, 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 serão executados sequencialmente.

Note-se que o carácter “%” permite a inserção de comentários no código de MATLAB.

A título de exemplo mostra-se como se poderia criar o mesmo gráfico em formato logarítmico.

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

(22)

Curso de introdução ao MATLAB 22

Podemos agora separar os dados em gráficos diferentes mas na mesma figura, juntando os dados de variância: utilização 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 título 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)

(23)

Curso de introdução ao MATLAB 23

O comando cla permite apagar o conteúdo de uma figura conservando a sua formatação.

Gráficos tridimensionais

Existem vários comandos que permitem a criação de gráficos tridimensionais, entre eles contour, image, surf, quiver, e plot3. Os dados tridimensionais são geralmente constituídos por duas variáveis unidimensionais definidoras da moldura bidimensional (no presente caos x e y) e por uma terceira variável que fornece a informação correspondente à “elevação” (no caso do presente exemplo os valores de velocidade e variância).

Vamos criar exemplos de aplicação dos comandos contour e quiver.

contour: este comando produz um gráfico de linhas de nível com base nas coordenadas da moldura e nos dados de base.

Exemplifica-se uma utilização 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 número de colunas

(24)

Curso de introdução ao MATLAB 24

O comando contour ignorou, na construção das linhas de nível, os valores na matriz de dados identificados como NaN.

O número de linhas de nível e a equidistância entre estas foram criados automaticamente em função dos valores limites dos dados; o utilizador pode definir estes quer dando o número de classes de curvas de nível quer fornecendo os seus limites máximo, mínimo e uma equidistância.

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 várias paletes de cores colorbar % introduz a escala de classes das curvas de nível

(25)

Curso de introdução ao MATLAB 25

contourf: é uma extensão do comando contour, em que o espaço entre curvas de nível é 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 operações no interior do

% código definidor de gráficos de forma a generalizar a sua aplicação 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 utilização de "..." permite continuar na linha seguite [C,H]=contour(x,z,v_test_1',10,'--r');

% 10 curvas de nível são definidas

% C é a matriz que define o mapa das curvas de nível

% H é o handle do gráfico contour; serve para evocar este gráfico 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 vírgulas permite colocar dois % comandos na mesma linha

shading flat % permite eliminar os contornos das linhas de nível 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)

(26)

Curso de introdução ao MATLAB 26

Combinação de gráficos 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)

(27)

Curso de introdução ao MATLAB 27

Exercícios:

1. No mesmo gráfico represente um perfil vertical de velocidade para cada teste e na mesma posição longitudinal (em x) com diferentes simbologias. Faça uma legenda da simbologia e coloque manualmente uma indicação junto a cada perfil com o nome do teste correspondente.

2. Considere que as seguintes variáveis V=v_test_1 e W=0.1*v_test_2. Faça um gráfico tridimensional das linhas de nível da intensidade do vector definido por r

no campo definido pelas coordenadas dos vectores x e z.

3. No gráfico anterior, sobreponha o campo vectorial definido pelo vector

utilizando para tal o comando quiver. Não represente todos os vectores, apenas

alguns seleccionados de forma a não sobrecarregar a imagem.

Referências

Documentos relacionados

Estes resultados apontam para melhor capacidade de estabelecimento inicial do siratro, apresentando maior velocidade de emergência e percentual de cobertura do solo até os 60

Entendendo, então, como posto acima, propõe-se, com este trabalho, primeiramente estudar a Lei de Busca e Apreensão para dá-la a conhecer da melhor forma, fazendo o mesmo com o

A variação do pH da fase móvel, utilizando uma coluna C8 e o fluxo de 1,2 mL/min, permitiu o ajuste do tempo de retenção do lupeol em aproximadamente 6,2 minutos contribuindo para

Contudo, não é possível imaginar que essas formas de pensar e agir, tanto a orientada à Sustentabilidade quanto a tradicional cartesiana, se fomentariam nos indivíduos

As principais indicações para a realização foram a suspeita de tuberculose (458 pacientes) e uso de imunobiológicos (380 pacientes).. A maior prevalência de resultado positivo

Este presente artigo é o resultado de um estudo de caso que buscou apresentar o surgimento da atividade turística dentro da favela de Paraisópolis, uma

Changes in the gut microbiota appears to be a key element in the pathogenesis of hepatic and gastrointestinal disorders, including non-alcoholic fatty liver disease, alcoholic

Pode haver alguns acordos prévios, como visto na classificação proposta em trabalho anterior (GUERRERO, 2006), mas estes são propostos sempre mantendo elevado