Вы находитесь на странице: 1из 14

Introduo ao MATLAB

II Programao

1. Introduo

Programar em MATLAB Vantagens Desvantagens

linguagem alto-nvel cdigo simples implementao rpida e fcil

linguagem interpretada --> lento m programao --> ++++ lento

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

2. Tipos de dados

O MATLAB inclui 14 tipos de dados diferentes. Alguns dos mais utilizados: inteiro Preciso simples (menos espao, mas no pode ser usado em operaes) Preciso dupla (tipo de varivel mais comum em MATLAB) string (caracteres em representao unicode)

int single

double char

Todos os clculos em MATLAB so efectuados com preciso dupla

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

3. Ficheiros .m

Dois tipos de ficheiros .m funo definio de uma funo variveis locais argumentos input/output ficheiro: nome_funo.m 1 linha: deifinio da funo script sequncia de comandos MATLAB variveis - workspace sem argumentos ficheiro: nome.m

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

3. Ficheiros .m

Path de procura do MATALB: lista de directrios onde o MATLAB procura ficheiros .m

Os ficheiros .m a utilizar devem estar no path MATLAB (por exemplo no pwd present working directory)

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

3.1. Ficheiros .m

- funo

1 linha: function args_out=nome_fun(args_in) nome ficheiro:


nome_fun.m

Exemplo: function y=cub(x,p) % computes x^3+p y=x^3+p Ficheiro: cub.m > x=1:4 > cub(x,2) help cub

executar:
nome_fun(args_in)

ajuda:
help nome_fun

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

3.2. Ficheiros .m

- script

Exemplo:

Ficheiro: script1.m

executar:
>> script1

theta = -pi:0.01:pi; rho(1,:) = 2*sin(5*theta).^2; rho(2,:) = cos(10*theta).^3; rho(3,:) = sin(theta).^2; rho(4,:) = 5*cos(3.5*theta).^3; for i = 1:4 polar(theta,rho(i,:)) pause end

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

4. Estruturas de controlo

repetio de instrues instrues n vezes:

for varivel=vector/matriz
instrues

end

>> for i=1:n >> x=[x, i^2] >> end

repetio de instrues instrues um n indefinido de vezes:

while condio
instrues

end
Instrues condicionais

>> i=0; >> while i<10, i=i+1 >> end >> if a>10 >> a=a-1 >> end

if condio
instrues

end
Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

5. Optimizao de cdigo MATLAB

Trade-off: velocidade - legibilidade/facilidade cdigo Regra n1: evitar usar ciclos for em MATLAB ---> vectorizao Exemplo: x=0 for k=1:1001 y(k)=log10(x) x=x+0.01 end

x=0:0.01:10 y=log10(x)

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

5.1. Vectorizao

MATLAB: operaes eficientes sobre vectores/matrizes --> vectorizao de operaes

Exemplo: j=0 for i=1:length(yr) if(yr(i)>1978) j=j+1; end end

length(find(yr>1978))

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

5.2. Eficincia de algoritmos

Medidas da eficincia de um algoritmo: - n de operaes em ponto flutuante - tempo de execuo (no uma medida apropriada em mquinas multi-utilisador)

tempo execuo: tic/toc tic instrues toc

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

10

5.2. Eficincia de algoritmos

Exemplos:

tic dx=pi/30 nx=1+2*pi/dx for i=1:nx x(i)=(i-1)*dx y(i)=sin(3*(x(i))) end toc

tic x=0:pi/30:2*pi y=sin(3*x) toc

toc=0.29

toc=0.005

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

11

5.3. Pr-alocao

Se no for possvel evitar um ciclo for ---> pr-alocao

Exemplo: v=zeros(200,1) for i=1:200 v(i)=rank(rand(i).^2); end for i=1:200 v(i)=rank(rand(i).^2); end

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

12

6. Boas prticas de programao

Comentar o cdigo Preferir funes a scripts Ler preferencialmente dados de ficheiros Utilizar preferencialmente funes de alto-nvel Vectorizar operaes Evitar ciclos, utilizar pr-alocao em memria + importante do que a velocidade: cdigo correcto e legvel

Introduo ao MATLAB II Programao 2004/03/30 S. M. Barbosa

12

Вам также может понравиться