MATLAB

60

description

MATLAB. PROF. OSWALDO COBRA. O objetivo deste curso é a apresentação de ferramentas básicas do ambiente MATLAB. Realço que o tempo (8 horas) de curso impõe uma metodologia dinâmica de aula. Em função disto, evite conversas paralelas. Cursos em ambiente de laboratório exigem atenção!. - PowerPoint PPT Presentation

Transcript of MATLAB

Page 1: MATLAB
Page 2: MATLAB

O objetivo deste curso é a apresentação de ferramentas básicas do ambiente MATLAB. Realço que o tempo (8 horas) de curso impõe uma metodologia dinâmica de aula. Em função disto, evite conversas paralelas.

Cursos em ambiente de laboratório exigem atenção!

Page 3: MATLAB

OPERAÇÕES COM VETORES E MATRIZES

Quando inicializamos o MATLAB, são criadas uma ou mais janelas e, dentre elas, a janela de comando é o principal local de interação com o MATLAB. A aparência da janela a apresentada a seguir:

O sinal de prompt é dado por >>

Page 4: MATLAB

MATEMÁTICA ELEMENTAR

MATLAB executa operações algébricas como se fosse uma calculadora, possuindo as seguintes operações aritméticas elementares:

Page 5: MATLAB

A ordem na qual essas operações são executadas em uma expressão é dada pelas regras usuais de precedência: as expressões são executadas da esquerda para direita com operação de potênciação tendo a maior precedência, seguida de multiplicação e divisão (ambas com mesma ordem de precedência), seguidas de adição e multiplicação (mesma ordem de precedência). Parênteses podem ser usados para alterar a ordem de precedência.

Page 6: MATLAB

ÁREA DE COMANDOS

Você pode criar variáveis na memória do programa MATLAB e estas variáveis são armazenadas enquanto durar o uso do programa.

>> teste=3;

>> prova=7;

>> teste+prova

 ans = 10

Page 7: MATLAB

VARIÁVEIS

Existem regras em relação aos nomes das variáveis na linguagem do MATLAB.

•As variáveis são sensíveis a maiúsculas e minúsculas

•Podem conter até 31 caracteres

•Os nomes das variáveis devem começar com uma letra

•Caracteres de pontuação não são permitidos, nem caracteres acentuados

Page 8: MATLAB

Observação: O MATLAB possui alguns nomes de variáveis especiais:

Page 9: MATLAB

COMENTÁRIOS E PONTUAÇÃOTodo texto digitado depois do sinal de % é considerado no ambiente MATLAB como um comentário.

>> % PROGRAMA EXEMPLO

>> X=10; % X REPRESENTA UMA VARIAVEL QUALQUERObservação: MATLAB armazena o valor x=10 e ignora os caracteres à direita de %.

Page 10: MATLAB

Pode-se também adicionar ou escrever vários comandos por linha, separando-os por vírgula ou ponto e vírgula:

>> y=3, t=4, u=34

y = 3

t = 4

u = 34

Page 11: MATLAB

Quando se coloca o sinal de ponto e vírgula no final da sentença do MATLAB, o resultado de uma operação ou comando não é exibido na tela do MATLAB. Veja a diferença:

>> p=3

p =

3

>> p=3;

Page 12: MATLAB

Uma sucessão de três pontos indica ao MATLAB que o resto do comando aparecerá na linha seguinte, mas lembre-se que o nome de uma variável não pode ser dividido entre linhas:

>> valores_das_concentracoes=33+...

44;

>>

Page 13: MATLAB

FUNÇÕES MATEMÁTICAS

Page 14: MATLAB

JANELA DE COMANDOS

Todas as informações, dados e variáveis criados na janela de comandos são armazenados no espaço de trabalho do MATLAB. O comando who mostra os nomes das variáveis.

O comando clear apaga variáveis do espaço de trabalho do MATLAB.

O comando cls apaga as informações do espaço de trabalho, mas não da memória.

O comando diary permite que você armazena em arquivo texto tudo o que você digitou. Sua sintaxe é diary nome do arquivo. Deve ser finalizado com o comando diary off.

Page 15: MATLAB

FORMATO DE VISUALIZAÇÃO DE NÚMEROS

Page 16: MATLAB

FORMATAÇÃO fprintfCARACTERES DE

FORMATAÇÃORESULTADOS

%d Exibe valor como inteiro

%e Formato exponencial

%f Formato ponto flutuante

\n Muda de linha

Page 17: MATLAB

Em problemas simples, é mais simples a digitação de comandos no prompt do MATLAB.

Para problemas, mais complexos é conveniente, ou que você deseja repetir n vezes, o MATLAB apresenta a possibilidade de escrever os comandos em arquivo texto e depois executá-lo introduzindo o nome do arquivo na área de comandos do MATLAB.

Page 18: MATLAB

Clique em File,New, M-file.

Page 19: MATLAB

Vamos a um exemplo?

Page 20: MATLAB

Digite o nome do arquivo!

Page 21: MATLAB

ARQUIVO DE DADOSExistem muitas maneiras de carregar e gravar arquivos de dados no MATLAB. Inicialmente, vamos considerar os comandos load e save.

O comando save grava dados do espaço de trabalho em arquivo de disco. Sua sintaxe é:

Save nome_do_arquivo var1 var2 var3

Var1 var2 var3 … são as variáveis a serem gravadas no arquivo nome_do_arquivo.

Page 22: MATLAB

Salvando em formato que podem ser lidos por planilhas e programas escritos em outras linguages.

>> x=[1 2 5.6 789 4.5];

>> save x.dat x -ascii

Apenas como exercício, encerre o MATLAB e inicialize-o novamente.

Digite *.dat

Clique

Explore esta área!

Page 23: MATLAB

Como você pode verificar osDados foram gravados!

Page 24: MATLAB

Caso você queira utilizar os dados gravados diretamente na área de trabalho do MATLAB, pode utilizar:

load nome_do_arquivo

No nosso exemplo, load x.dat

Agora digite x e verifique que a variável x, ou o vetor x, como queira, está como variável atualizada na memória.

Page 25: MATLAB

OPERAÇÕES COM VETORES E MATRIZES

A criação de vetores no MatLab é muito simples. Você deve começar com um colchete esquerdo e inserir os valores desejados, separados por espaços ou vírgulas e fechar o conjunto com um colchete direito.

>> x=[1.2 3 4.5 6 9]; Quantos elementos este vetor possui?

Este vetor possui 5 elementos. Mais precisamente ele possui uma linha e 5 colunas, ou seja, é um vetor linha.

Page 26: MATLAB

No MATLAB o acesso aos elementos de um vetor é feito utilizando índices na forma nome_do_vetor(i).

Veja Alguns Exemplos!

Page 27: MATLAB

>> x=[1.2 3 4.5 6 9];

>> x=[1.2 3 4.5 6 9];

 >> x(0)

??? Index into matrix is negative or zero.

 >> X(1)

??? Undefined function or variable 'X'.

 >> x(1)

 ans = 1.20

 >> x(5)

 ans = 9.00

 

 

Page 28: MATLAB

Para ter acesso a um bloco de elementos utilize a notação de dois pontos (:) :

>> x(1:5)

 ans = 1.20 3.00 4.50 6.00 9.00

 >> x(1:3)

 ans = 1.20 3.00 4.50

>> x(2:4)

ans = 3.00 4.50 6.00

Page 29: MATLAB

A construção de vetores também pode ser feita, ao invés de digitar todos os elementos, sob algumas formas alternativas.

Função linspace

A função linspace possui a seguinte sintaxe:

linspace(primeiro_valor,último_valor,número_de_valores)

Page 30: MATLAB

linspace(2,5,4)

 

ans = 2.00 3.00 4.00 5.00

Mas você também pode criar o vetor utilizando o comando: x=início:incremento:fim

>> x=[1:.8:5]

 

x =1.00 1.80 2.60 3.40 4.20 5.00

Page 31: MATLAB

ORIENTAÇÃO DE VETORESVocê pode criar vetores com mais de uma linha, utilizando a notação de ponto e vírgula:

OBSERVE ADIFERENÇA!

Page 32: MATLAB

>> x=[1 2 3 4 5]

x = 1 2 3 4 5

>> x=[1; 2; 3; 4 ;5]

x = 

1

2

3

4

5

Page 33: MATLAB

Você também pode transpor um vetor, utilizando a anotação apóstrofo:

 >> x=[1 4 5 89]

 x = 1 4 5 89

>> x' DIGITE!

ans = 

1 4 5 89

Page 34: MATLAB

MATRIZESUsam-se espaços para separar os elementos de uma linha e utliza-se ponto e vírgula para criar linhas na matriz:

>> x=[1 2 3;4 5 6;7 8 9] 

Digite

x =  1 2 3 4 5 6 7 8 9

Page 35: MATLAB

SOMA DE MATRIZESA soma de matrizes é exemplificada abaixo:

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

y=[4 5 6; 8 9 12; 5 6 7];

DIGITE x+y

ans =

 

5 7 9

12 14 18

12 14 16

Page 36: MATLAB

MULTIPLICAÇÃO OU DIVISÃOELEMENTO POR ELEMENTO

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

y=[4 5 6; 8 9 12; 5 6 7];

DIGITE x.*yOu x./y

x./y ans =

0.2500 0.4000 0.5000 0.5000 0.5556 0.5000 1.4000 1.3333 1.2857

x.*y

ans =

4 10 18 32 45 72 35 48 63

O ponto anterior aoOperador indicaQue a operação

Deve ser feita elementoA elemento!

Page 37: MATLAB

SISTEMAS LINEARESMuitas aplicações de Engenharia envolvem a solução de sistemas lineares. Considere o exemplo:

O que é equivalente a escrevermos , onde A é a matriz dos coeficientes, W a matriz das incógnitas do sistema e B a matriz dos resultados. A Álgebra linear nos fornece o conceito de que este sistema possui solução se o determinante da matriz A for diferente de zero. Vejamos a solução deste problema utilizando o MATLAB:

>> A=[1.2 6 4; 5 8 0;7 12 5];>> B=[12;3;6];

>> det(A)ans = -86.0000.

A solução do sistema por ser dada por .No MATLAB pode ser expresso por:

>> x=inv(A)*B x = 

-3.9767 2.8605 -0.0977

Page 38: MATLAB

FATORAÇÃO LU

No MATLAB a fatoração LU pode ser implementada pelo comando: A\B

Matriz dos coeficientes

Matriz dos resultados

Page 39: MATLAB

GRÁFICOS 2Dx=linspace(0,2*pi,50);

>> y=exp(x).*sin(x);

>> plot(x,y)

Page 40: MATLAB

OUTRAS FUNÇÕES

fplot

f(x)=cos(x)*ex

fplot(‘cos(x)*exp(x)’,[0 3*pi])

DIGITE0 1 2 3 4 5 6 7 8 9

-14000

-12000

-10000

-8000

-6000

-4000

-2000

0

2000

Page 41: MATLAB

polarr=3cos(4t),

t=0:.01:2*pi;

r=3*cos(4*t);

polar(t,r) 1

2

3

30

210

60

240

90

270

120

300

150

330

180 0

Page 42: MATLAB

plotyy

1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 60

500

exp(

x)

1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 60

2

log(x

)

y1=exp(x); y2=log(x)

x=1:.1:6;

y1=exp(x); y2=log(x);

ax=plotyy(x,y1,x,y2);

hy1=get(ax(1),'ylabel');

hy2=get(ax(2),'ylabel');

set(hy1,'string','exp(x)');

set(hy2,'string','log(x)');

Page 43: MATLAB

semilogx

10-5

10-4

10-3

10-2

10-1

100

0

1

2

3

4

5

6

7

8

9

10

t=linspace(0,3*pi,300);>> x=exp(-t);>> y=t;>> semilogx(x,y); grid

Também existe o comando semilogy( ) e o

Comando loglog( )

Page 44: MATLAB

hist

prof=char('Professor Universitario','Engenheiro Quimico','Medico');

sal=[999; 6789; 9999];

barh(sal);

for i=1:3

gtext(prof(i,:));

end

xlabel('Salario em reais');

title('Profissoes e Remuneraçao = Alerta',...

'fontsize',19);

Page 45: MATLAB

0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

1

2

3

Professor Universitario

Engenheiro Quimico

Medico

Salario em reais

Profissoes e Remuneraçao = Alerta

Page 46: MATLAB

pieprof=char('Professor Universitario','Engenheiro Quimico','Medico');

sal=[999; 6789; 9999];

pie(sal);

for i=1:3

gtext(prof(i,:));

end

xlabel('Salario em reais');

title('Profissoes e Remuneraçao = Alerta',...

'fontsize',19);

Page 47: MATLAB

6%

38%

56%

Profissoes e Remuneraçao = Alerta

Professor UniversitarioEngenheiro Quimico

Medico

Page 48: MATLAB

USANDO SUBPLOTUma janela pode conter mais de um conjunto de eixos e, neste caso, pode ser usado o comando subplot(m,n,p), que divide a janela de figuras em uma matriz m por n regiões , nas quais se pode traçar gráficos e ativa a região de ordem p. Os subgráficos são numerados da esquerda para direita, linha por linha.

Page 49: MATLAB

x=linspace(0,2*pi,30);

>> y=sin(x);

>> z=cos(x);

>> a=sin(x).*cos(x);

>> b=sin(x)./(cos(x)+eps);

>> subplot(2,2,1) %seleciona o grafico à esquerda, no alto

>> plot(x,y);

>> subplot(2,2,2) %seleciona o grafico à direita, no alto

>> plot(x,z);

>> subplot(2,2,3) %seleciona o grafico à esquerda, embaixo

>> plot(x,a);

>> subplot(2,2,4) %seleciona o grafico à direita, embaixo

>> plot(x,b);

Page 50: MATLAB

0 2 4 6 8-1

-0.5

0

0.5

1

0 2 4 6 8-1

-0.5

0

0.5

1

0 2 4 6 8-0.5

0

0.5

0 2 4 6 8-20

-10

0

10

20

Page 51: MATLAB

GRÁFICOS 3DPara gerar um arquivo que representa uma superfície 3D, primeiros representamos o conjunto de valores de x e y que representam as variáveis independentes e depois os valores de z que representam os valores da superfície.

Page 52: MATLAB

Gere o gráfico da superfície f(x,y)=z=1-x2-y2 para –0.5<x<0.5 e -0,5<y<0.5.

No MATLAB isto seria realizado por:

>>[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);

>> z=sqrt(abs(1-xgrid.^2-ygrid.^2));

>> mesh(z)

0

5

10

15

0

5

10

150.7

0.75

0.8

0.85

0.9

0.95

1

Page 53: MATLAB

Também podemos utilizar a função surf:

>>[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);

>> z=sqrt(abs(1-xgrid.^2-ygrid.^2));

>> surf(xgrid,ygrid,z)

-0.5

0

0.5

-0.5

0

0.50.7

0.75

0.8

0.85

0.9

0.95

1

Page 54: MATLAB

GRÁFICOS DE CURVAS DE NÍVEL

Gráficos de curva de nível mostram linhas de elevação ou altura constante. No MATLAB, gráficos de curvas de nível são obtidos pelo uso das funções contour e contour3.

>>[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);

>> z=sqrt(abs(1-xgrid.^2-ygrid.^2));

>> contour(xgrid,ygrid,z)

Page 55: MATLAB

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5-0.5

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

Page 56: MATLAB

[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);

>> z=sqrt(abs(1-xgrid.^2-ygrid.^2));

>> contour3(xgrid,ygrid,z)

-0.5

0

0.5

-0.5

0

0.50.75

0.8

0.85

0.9

0.95

1

Page 57: MATLAB

pie3prof=char('Professor Universitario','Engenheiro Quimico','Medico');

sal=[999; 6789; 9999];

pie3(sal);

xlabel('Salario em reais');

title('Profissoes e Remuneraçao = Alerta',...

'fontsize',19);

Page 58: MATLAB

56%

Profissoes e Remuneraçao = Alerta

6%

38%

Page 59: MATLAB

waterfall

x=-3:.1:3;

y=x;

[X,Y]=meshgrid(x,y);

Z=-15./(1+X.^2+Y.^2);

waterfall(Z)

hidden off 0

2040

6080

0

20

40

60

80-15

-10

-5

0

Page 60: MATLAB