+ matlab prof.celso j. munaro (del-ct-ufes) [email protected] jacee - 2014 - matlab
TRANSCRIPT
![Page 2: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/2.jpg)
JACEE - 2014 - Matlab
2+Conteúdo
1. Controle de fluxo
2. Programaçãoi. Scripts
ii. Funções
3. Simulação de sistemas descritos por equações diferenciais
![Page 3: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/3.jpg)
JACEE - 2014 - Matlab
3+Controle de fluxo
Declarações condicionais permitem selecionar em tempo de execução qual bloco de código executar.
• Loop FOR• Loop WHILE• Comandos IF e BREAK• Switch• If-elseif-else
![Page 4: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/4.jpg)
JACEE - 2014 - Matlab
4+for
Exemplo 1:
>> for i = 1:n, x(i) = 0, end
Exemplo 2:
>> x=ones(n,1); (ou x=zeros(n,1))
>> for i = 1:2:n, x(i) = 2, end;
![Page 5: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/5.jpg)
JACEE - 2014 - Matlab
5+
Recuar os diversos laços aumenta a legibilidade
![Page 6: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/6.jpg)
JACEE - 2014 - Matlab
6+for : atividade proposta
Gerar uma matriz randomica com o comando A=randn(10,10) e criar uma nova matriz B que tenha apenas os valores menores que 0.5
![Page 7: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/7.jpg)
JACEE - 2014 - Matlab
7+while
while expressão
linhas de comando
end
Exemplo:
i=1;
while(i<100)
x(i)=i;
i=i+1;
end;
![Page 8: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/8.jpg)
JACEE - 2014 - Matlab
8+while: atividade proposta
Gerar uma matriz randomica com o comando A=randn(10,10) e criar uma nova matriz B que tenha apenas os valores menores que 0.5
![Page 9: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/9.jpg)
JACEE - 2014 - Matlab
9+If break
O comando break dentro de um for ou while termina o laço.Exemplo:
![Page 10: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/10.jpg)
JACEE - 2014 - Matlab
10+switch
switch flag
case valor1
bloco 1 de comandos
case valor 2
bloco 2 de comandos
case valor3
bloco 3 de comandos
end;
![Page 11: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/11.jpg)
JACEE - 2014 - Matlab
11+Switch: exemplo
op=input(‘i=‘);
switch op
case 1
disp(‘1’);
case 2
disp(‘2’);
case 3
disp(‘3’);
end;
![Page 12: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/12.jpg)
JACEE - 2014 - Matlab
12+If-elseif-else
Exemplo:
a = randi(100, 1);
if a < 30
disp(’pequeno')
elseif a < 80
disp(’medio')
else
disp(’grande')
end
![Page 13: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/13.jpg)
JACEE - 2014 - Matlab
13+error
O comando error(‘Mensagem’) dentro da uma função ou script aborta sua execução e mostra “Mensagem”
Exemplo:
>> norm(1,2,3)
Error using norm
Too many input arguments.
![Page 14: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/14.jpg)
JACEE - 2014 - Matlab
14+Vetorização
Uma maneira de tornar os programas MATLAB mais rápidos é para vetorizar os algoritmos que usados na construção dos programas. Enquanto outras linguagens de programação podem usar laços com for ou do, o MATLAB pode usar operações de vetores ou matrizes. Um exemplo simples envolve a criação de uma tabela de logaritmos
![Page 15: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/15.jpg)
JACEE - 2014 - Matlab
15+Exemplo: vetorização para fazer tabela de logaritmos
Vetorização
![Page 16: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/16.jpg)
JACEE - 2014 - Matlab
16+Vetorização: Atividades propostas
1) Gerar a matriz A=randn(10,10) e obter a matriz B apenas com os valores menores que 0.5 sem usar loops.
2) Gerar um vetor com 1000 uns u=ones(1000,1); e somar todos valores de u com um só comando.
3) Gerar um vetor aleatório x=randn(100,1); e o valor máximo e a posição do vetor em que ocorre.
4) Gerar um vetor aleatório x=randn(100,1); e somar todos seus elementos elevados ao quadrado com um só comando.
5) Somar todos os elementos da matriz A=rand(100,100);
![Page 17: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/17.jpg)
JACEE - 2014 - Matlab
17+Programação no Matlab
Linguagem própria, mas com com muita semelhança à linguagem C
Arquivos .m (M-files) são arquivos ASCII com extensão *.m
Podem ser scripts ou funções
![Page 18: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/18.jpg)
JACEE - 2014 - Matlab
18+Importante
Quando o Matlab procura por um nome, ele primeiro busca a lista de variáveis no workspace.
Se uma variável tem o mesmo nome de uma script, o Matlab executará a variável, e nunca o script.
Exemplo: mean é uma função; logo, não use este nome para uma variável.
Além disto, o nome de um script deve começar com uma letra.
![Page 19: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/19.jpg)
JACEE - 2014 - Matlab
19+Scripts
Quando um script é chamado, MATLAB simplesmente executa os comandos encontrados no arquivo. As linhas de comando de um arquivo script operam globalmente com os dados que estão no espaço de trabalho. Scripts são úteis na realização de análise, solução de problemas, ou no projeto de longas sequências de comando que é cansativo para ser feito interativamente.
![Page 20: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/20.jpg)
JACEE - 2014 - Matlab
20+Scripts: exemplo
ts=0.01;
t=0:ts:10;
y=sin(w*t);
plot(t,y);xlabel('Tempo(s)');
ylabel('Senoide');
Atividade: Gravar um arquivo test1.m com estes comandos e executar no workspace.
![Page 21: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/21.jpg)
JACEE - 2014 - Matlab
21+functions
Um arquivo-M que contém a palavra function no ínicio da primeira linha é um arquivo função. Uma função difere de um script pelos argumentos que devem ser passados, e pelas variáveis que são definidas e manipuladas que são locais à função e não podem ser operadas globalmente no espaço de trabalho.
function [variáveis de saída] = function_name (variáveis de entrada)
![Page 22: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/22.jpg)
JACEE - 2014 - Matlab
22+function: anatomia
![Page 23: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/23.jpg)
JACEE - 2014 - Matlab
23+Function: exemplo
function [m,dp,s]=fx1(y)
% m = media,
% dp = desvio padrao
% s = soma
s=sum(y);
m=mean(y);
dp=std(y);
Atividade: programar esta função
![Page 24: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/24.jpg)
JACEE - 2014 - Matlab
24+Functions : exemplo do Matlab
![Page 25: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/25.jpg)
JACEE - 2014 - Matlab
25+Functions : exemplo do MatlabA função admite diferentes argumentos de saída.
M1=max(x) dá apenas o maior valor
[m,ind]=max(x) dá também o índice do maior valor
![Page 26: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/26.jpg)
JACEE - 2014 - Matlab
26+Functions : exemplo do Matlab
A função admite diferentes argumentos de entrada.
M1=norm(x) norma de x (euclidiana, default)
[m1=norm(x,1) norma 1 (valor absoluto)
![Page 27: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/27.jpg)
JACEE - 2014 - Matlab
27+Comentários sobre funções
Controle dos argumentos de entrada
function m=norm(x,p)
if nargin==1
p=2;
end;
m=sum(x.^p);
m=m^(1/p);
![Page 28: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/28.jpg)
JACEE - 2014 - Matlab
28+Executando partes de funções
![Page 29: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/29.jpg)
JACEE - 2014 - Matlab
29+keyboard
O comando keyboard dentro de uma função permite retornar o teclado ao usuário no ponto o comando é colocado.
function m=norm(x,p)
if nargin==1
p=2;
end;
keyboard;
m=sum(x.^p);
m=m^(1/p);
![Page 30: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/30.jpg)
JACEE - 2014 - Matlab
30+Executando parte de funções (cont)
![Page 31: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/31.jpg)
JACEE - 2014 - Matlab
31+Funcões inline
Achar os zeros da função
Definir a função
fr=inline(‘r^3-32*r^2+(r-22)*r+100’);
r0=fzero(fr,5)
![Page 32: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/32.jpg)
JACEE - 2014 - Matlab
32+r^3-32*r^2+(r-22)*r+100
>> fzero(fr,5)
ans = 1.5058
![Page 33: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/33.jpg)
JACEE - 2014 - Matlab
33+Inline function: atividade proposta 1
Atividade: Obter a curva abaixo usando inline function
![Page 34: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/34.jpg)
JACEE - 2014 - Matlab
34+Inline function: atividade proposta 2
Atividade: Obtenha os zeros da função transcendental abaixo de forma gráfica e numérica (fzero)
![Page 35: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/35.jpg)
JACEE - 2014 - Matlab
35+Variáveis globais
Cada função do MATLAB definida por um arquivo-M possui suas próprias variáveis locais, as quais não tem relação com as de outras funções e com as do espaço de trabalho. Entretanto, se várias funções e também o plano de trabalho declararem uma variável particular como global, então todos eles dividem a mesma variável. Qualquer atribuição a esta variável, em qualquer função, fica disponível a todas as outras funções que a declaram como global.
Para fazer com que uma variável seja global, basta escrever
global X Y Z
![Page 36: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/36.jpg)
JACEE - 2014 - Matlab
36+3. Simulação de sistemas descritos por equações diferenciaisSolvers do Matlab para ODEs: (ordinary differential equations)
ode23: método de Runge-Kutta de segunda e terceira ordem
ode45: método de Runge-Kutta de terceira e quarta ordem
![Page 37: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/37.jpg)
JACEE - 2014 - Matlab
37+3. Simulação de sistemas descritos por equações diferenciais
![Page 38: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/38.jpg)
JACEE - 2014 - Matlab
38+
Atividade: Editar a rotina abaixo e salvar com nome simula1.m:
function dx=simula1(t,x)
u=1;
dx(1,1)=x(2);
dx(2,1)=u-2*x(1)-3*x(2);
Dar os comandos no workspace>> tspam=[0 8];>> x0=[0;0];>> [t,x]=ode45('simula1’,tspam,x0);>> plot(t,x)
![Page 39: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/39.jpg)
JACEE - 2014 - Matlab
39+Resultado da simulação
![Page 40: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/40.jpg)
JACEE - 2014 - Matlab
40+Atividades propostas
1) Definir a entrada u como global e variar seu valor no workspace
2) Alterar os estados iniciais na simulação.
3) Comparar ode23 e ode45
![Page 41: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/41.jpg)
JACEE - 2014 - Matlab
41+Atividade proposta 2: Simular um sistema com massa+mola+amortecedor
M=1kgB=2K=1f(t)=1Newton
![Page 42: + Matlab Prof.Celso J. Munaro (DEL-CT-UFES) celso.munaro@ufes.br JACEE - 2014 - Matlab](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc166497959413d8eade3/html5/thumbnails/42.jpg)
JACEE - 2014 - Matlab
42+Atividade proposta 3: simular uma equação não-linear
Simular a equação diferencial abaixo com as condições iniciais dadas