Introdução ao Matlab - Parte 1 -...

26
27 Aplicações Informáticas para Engenharia © Sérgio Cruz Utilidades Diversas Habitualmente os comandos que compõem um dado programa desenvolvido em matlab não são introduzidos usando a janela de comando mas sim escritos e gravados num ficheiro .m Para criar um ficheiro .m invoque o editor de texto com o comando edit ou edit ficheiro. Neste último caso o ficheiro é imediatamente gravado Com o editor pode correr o ficheiro .m todo de uma vez ou colocar breakpoints (absolutos ou condicionais), executar o ficheiro instrução a instrução, etc. Uma vez gravado o ficheiro .m, pode executá-lo também a partir da janela de comando do matlab escrevendo o respectivo nome (desde que o caminho para o mesmo seja a directoria corrente ou esteja na lista de caminhos especificados no path Pode também executar programas do sistema operativo ou outros usando ! antes do nome do programa. Por exemplo: >> !Notepad % Invoca o editor de texto notepad

Transcript of Introdução ao Matlab - Parte 1 -...

Page 1: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

27

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Utilidades Diversas• Habitualmente os comandos que compõem um dado programa

desenvolvido em matlab não são introduzidos usando a janela de comando mas sim escritos e gravados num ficheiro .m

• Para criar um ficheiro .m invoque o editor de texto com o comando editou edit ficheiro. Neste último caso o ficheiro é imediatamente gravado

• Com o editor pode correr o ficheiro .m todo de uma vez ou colocar breakpoints (absolutos ou condicionais), executar o ficheiro instrução a instrução, etc.

• Uma vez gravado o ficheiro .m, pode executá-lo também a partir da janela de comando do matlab escrevendo o respectivo nome (desde que o caminho para o mesmo seja a directoria corrente ou esteja na lista de caminhos especificados no path

• Pode também executar programas do sistema operativo ou outros usando ! antes do nome do programa. Por exemplo:>> !Notepad % Invoca o editor de texto notepad

Page 2: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

28

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Números Complexos• O matlab trabalha também com números complexos• Neste caso, 2+3i ou 5-2j representam exemplos de números complexos

que o matlab interpreta• Pode-se extrair a parte real, a parte imaginária, o módulo e o argumento

de um número complexo, bem como obter o seu conjugado, com os comandos real, imag, abs, angle e conj>> a=2+3i;>> abs(a)ans =

3.6056>> angle(a)ans =

0.9828

• Pode-se também definir matrizes cujos elementos são números complexos

Page 3: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

29

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Números Complexos• Nesse caso, há que atender que a transposta da matriz será conseguida

à custa de .’ e não de ‘, que neste caso permite obter a matriz hermetiana daquela dada (a matriz hermetiana consiste em transpor a matriz após obter o complexo conjugado dos seus elementos):

>> C = [1+i 1-i; 2-3i 4i; 3 -1+2i];>> C’ans =

1.0000 - 1.0000i 2.0000 + 3.0000i 3.0000 1.0000 + 1.0000i 0 - 4.0000i -1.0000 - 2.0000i

>> C.'ans =

1.0000 + 1.0000i 2.0000 - 3.0000i 3.0000 1.0000 - 1.0000i 0 + 4.0000i -1.0000 + 2.0000i

Page 4: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

30

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab• Existem diversos comandos que podem ser usados para

construir gráficos (2D e 3D) no matlab

O mesmo que plot mas com a possibilidade de se definirem dois eixos y com diferentes escalasplotyy

Gráfico em coordenadas polarespolarGráfico com escala semi-logarítmica (eixo y)semilogy

Representa gráficamente uma funçãofplot

Gráfico com escala semi-logarítmica (eixo x)semilogx

Cria um gráfico com eixos linearesplotO mesmo que plot mas com eixos em escala logarítmicaloglog

FuncionalidadeComando

Page 5: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

31

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab

Gráfico em forma de penafeather

Histograma em ângulorose

Gráfico em forma de bússolacompass

Histogramahist

Gráfico em escadastairs

Gráfico em forma de trajectória de cometacomet

Gráfico de sequências discretasstem

Permite desenhar polígonos 2DfillGráfico de barrasbar

FuncionalidadeComando

Page 6: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

32

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab - Exemplos>> t = 1:0.1:2*pi;>> y = sin(t);>> plot(y);

• Neste formato, plot(y)representa os valores do vector y em função do seu índice (1, 2, 3,...)

Page 7: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

33

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab - Exemplos>> t = 1:0.1:2*pi;>> y = sin(t);>> plot(t,y);

• Neste formato, o comando plot permite obter um gráfico xy

Page 8: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

34

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab - Exemplos>> t = 1:0.1:2*pi;>> y1=sin(t);>> y2=sin(t-2*pi/3);>> y3=sin(t+2*pi/3);>> plot(t,y1,t,y2,t,y3);

• Deste modo, o comando plot permite representar mais do que uma função no mesmo gráfico

Page 9: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

35

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab - Exemplos• Outra forma de obter o gráfico do slide anterior seria colocar os vectores

y1, y2 e y3 numa matriz:>>A=[y1;y2;y3];>>plot(t,A);

• Mais informação: help plot• Para criar uma nova janela onde o gráfico vai ser criado, usa-se o

comando figure• O matlab oferece a possibilidade de se representar mais do que um

gráfico na mesma janela (figure), criando uma grelha virtual de sistema de eixos. Para tal, usa-se o comando subplot

• subplot(m,n,p) cria uma matriz com m×n sistemas de eixos, e selecciona o sistema de eixos número p para a representação do próximo gráfico. A contagem é feita da esquerda para a direita, e de cima para baixo. Um exemplo:

Page 10: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

36

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab - Exemplos

>> subplot(2,3,1) >> plot(t,y1)>> subplot(2,3,2)>> plot(t,y2)>> subplot(2,3,3)>> plot(t,y3)>> subplot(2,3,4)>> plot(t,t.^2)>> subplot(2,3,5)>> plot(t,t)

Page 11: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

37

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab• Ao fazer plot(x), onde x

representa um número complexo, o matlab representa a parte imaginária do número em função da parte real. Um exemplo:>> Z=[1+2i 2+3i 10+30i];>> plot(Z)

Page 12: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

38

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab• Para além dos comandos destinados à traçagem do gráfico, existem

outros destinados a embelezá-lo e a completá-lo. Alguns dos mais usuais são apresentados de seguida

Adiciona uma legenda ao gráficolegendAdiciona texto de modo interactivo (rato)gtext

Permite ajustar os limites dos eixosaxis

Adiciona texto na posição especificadatextAdiciona uma grelha ao gráficogridColoca uma etiqueta no eixo yylabel

Coloca um título no gráficotitleColoca uma etiqueta no eixo xxlabel

FuncionalidadeComando

Page 13: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

39

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 2D em Matlab - Exemplos• Para representar funções de

uma variável, pode-se usar a função fplot. Um exemplo:

>> figure % abre uma janela de gráfico>> fplot(‘0.1*exp(x)+sin(x)-5-x’,[0 5]);

% gráfico 2D de f(x)>> xlabel(‘x’); % nome do eixo do x>> ylabel(‘f(x)’); % nome do eixo do y>> title(‘Gráfico 2D’); % título do gráfico>> grid on; % activa grelha

Page 14: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

40

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos em Matlab• Quando se executa o comando plot, o matlab desenha o novo gráfico na

janela já aberta, eliminando qualquer gráfico anterior que lá esteja

• Caso pretenda “adicionar” o novo gráfico àquele já existente, pode usar o comando hold. Ao activar a função hold (hold on) o matlab não só retém o gráfico anterior como também as suas propriedades (eixos, etiquetas, etc, excepto a funcionalidade de escala automática)

• Para desactivar a função hold faz-se hold off

• O comando shg coloca a janela que contém o gráfico na frente do ecrã

Page 15: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

41

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 3D em Matlab• O matlab permite também traçar gráficos 3D de diferentes

tipos. Alguns dos comandos para esse efeito são os seguintes:• plot3• surf• mesh• contour3• comet3• fill3

• A maioria dos comandos apresentados para gráficos 2D (colocação de etiquetas, títulos, legendas, etc.) pode ser usada igualmente com os gráficos 3D

Page 16: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

42

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Gráficos 3D em Matlab - Exemplos• Exemplo: representar

gráficamente a função f(x,y)=x*exp(-x^2-y^2)

>> figure % abre uma janela de gráfico>> [x,y]=meshgrid(-2:.1:2,-2:.1:2);>> z=x.*exp(-x.^2-y.^2);>> plot3(x,y,z); % gráfico 3D>> figure % abre uma outra janela de gráfico>> surf(x,y,z); % gráfico 3D de superfície>> figure % abre uma outra janela de gráfico>> mesh(x,y,z); % gráfico 3D de malha>> figure % abre uma outra janela de gráfico>> [c,h]=contour(x,y,z); % gráfico de

contornos>> clabel(c,h); % apresenta os valores dos

contornos

Page 17: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

43

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Introdução e Visualização de Dados• Para que o utilizador possa introduzir dados num dado programa, existe o

comando input:>> a=input('Introduza o nº de alunos: ')

• O matlab responde com a seguinte mensagem, ficando a aguardar a introdução do número:Introduza o nº de alunos: 34

• No final, atribui o valor introduzido pelo utilizador à variável a• Para visualizar resultados usa-se o comando disp. Alguns exemplos:

>> disp(a)>> disp(A)>> disp(‘Os alunos estudam muito ... pouco’)

• Pode-se também afixar mensagens de erro com o comando error:>> error(‘Houve um erro na execução do programa’)

NOTA: dentro de um ficheiro .m, esta instrução pára a execução e sai do ficheiro .m

Page 18: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

44

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Introdução e Visualização de Dados• Teste os seguintes exemplos para observar o uso de input e disp:>> clc;>> A=rand(4);>> [m,n]=size(A);>> disp([‘A é uma matriz ‘ num2str(m) ‘x’ num2str(n)])>> disp(A);

>> idade=input(‘Qual a sua idade?’);>> nome=input(‘Qual é o seu nome?\n’, ‘s’); %neste caso note o uso de

‘s’ para indicar que se trata de uma string

Page 19: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

45

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Controlo do Fluxo de Programa• À semelhança de outras linguagens de programação, existem instruções

de controlo do fluxo de programa. No matlab são as seguintes:• Instrução if• Ciclo for• Ciclo while• Estrutura switch

• A instrução if é usada da seguinte forma:if condição

% faz alguma coisaelse

% faz uma coisa diferenteend

• De seguida é apresentado um exemplo do uso da instrução if num ficheiro .m

Page 20: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

46

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Controlo do Fluxo de Programax=‘aula2’;y=‘aula1’;if strcmp(x,y)

disp(‘As aulas são iguais’)else

disp(‘As aulas são diferentes’)end

• Nota: repare que a comparação de strings é efectuada com o comando strcmp e não com ==! Experimente fazer x==y e observe os resultados

• Também se pode usar o comando elseif numa estrutura if da seguinte forma:if condição

% faz uma coisaelseif segundacondição

% faz outra coisaelse

% faz ainda uma coisa diferente (caso as duas condições sejam falsas)end % (este end encerra o ciclo if já que elseif dispensa o uso de end)

Page 21: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

47

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Controlo do Fluxo de Programa• Um ciclo for é criado da seguinte forma:

for variavel=valorinicial:passo:valorfinal% faz alguma coisa

end

• Um exemplo:A=[1 23 34;3 4 5][m,n]=size(A);soma=0;for coluna=1:n

for linha=1:msoma=soma+A(linha,coluna);

endenddisp([‘A soma de todos os elementos é: ‘ num2str(soma)])

Page 22: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

48

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Controlo do Fluxo de Programa• O ciclo while é criado da seguinte forma:

while condicao% faz alguma coisa

end

• Um exemplo:x=1:10soma=0;k=1;while k<7

soma=soma+x(k);k=k+1;

enddisp([‘A soma dos primeiros seis elementos é: ‘ num2str(soma)])

Page 23: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

49

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Controlo do Fluxo de Programa• O comando for é usado quando se sabe à partida quantas vezes é que o

ciclo deverá ser executado. Caso contrário usa-se o comando while• Pode-se usar o comando break para abandonar um ciclo for ou while e

continuar a execução do programa na linha imediatamente a seguir ao mesmo

• Corra o seguinte exemplo e verifique o efeito da instrução break:A=[1 23 34;3 4 5][m,n]=size(A);soma=0;for coluna=1:n

for linha=1:msoma=soma+A(linha,coluna);break

endenddisp([‘A soma de alguns elementos é:’ num2str(soma)])

Page 24: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

50

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Controlo do Fluxo de Programa• De forma análoga, o comando continue instrui o matlab a

iniciar a iteração seguinte do ciclo for ou while onde está colocado, desprezando quaisquer instruções que apareçam a seguir. No exemplo seguinte, a resposta do matlab é 0:A=[1 23 34;3 4 5][m,n]=size(A);soma=0;for coluna=1:n

for linha=1:mcontinuesoma=soma+A(linha,coluna);

endenddisp([‘A soma de alguns elementos é:’ num2str(soma)])

Page 25: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

51

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Controlo do Fluxo de Programa• A sintaxe da estrutura switch é a seguinte

switch expressão % (expressão pode ser escalar ou string)case valor1

% executa código 1case valor2

% executa código 2case {valor1, valor2}

% executa código 3otherwise

% executa código alternativoend

Page 26: Introdução ao Matlab - Parte 1 - mat.uc.ptalma/aulas/matcomp/documentos/IntroducaoaMatlabParte20… · Gráficos 3D em Matlab • O matlab permite também traçar gráficos 3D de

52

Apl

icaç

ões

Info

rmát

icas

par

a En

genh

aria

© Sérgio Cruz

Controlo do Fluxo de Programa• Estrutura switch: um exemplo

a=input('Introduza um número:');switch a

case 2disp('Introduziu o número 2');

case 3disp('Introduziu o número 3');

case {4,5}disp('Introduziu o número 4 ou 5');

otherwisedisp('Introduziu um número grande demais');

end