Você está na página 1de 20

Introduo ao MatLab

1 - Tipos de Dados Fundamentais


1.1 - Introduo/Definio de Matrizes 1.2 - Referncia a Elementos de Matrizes 1.3 - Nmeros Complexos 1.4 - Operaes Elementares 1.5 - Vectores e Escalares 1.6 - Funes Elementares 1.7 - Comandos teis

2 Representao Grfica de Resultados 3 - Ficheiros *.m 4 - Controlo de Fluxo 5 - Expresses Lgicas 6 - Funes 7 - Ficheiros *.mat 8 - Exemplos

jh@dei.uc.pt/ComputaoAdaptativa2013/14

1 - Tipos de Dados Fundamentais


Todos os dados so matrizes (complexas) 1.1 - Introduo/Definio de dados, Matrizes
Escalar (matriz) x=2 Matriz A=
1 4

2 5

3 6

i) de uma forma explcita


A = [ 1 2 3 ; 4 5 6];

ii) resultado de alguma operao


C = 3*A C= 3 12

6 15

9 18

iii) LOAD a partir de um ficheiro


LOAD nome_ficheiro A

jh@dei.uc.pt/ComputaoAdaptativa2013/14

1.2 - Referncia a Elementos de Matrizes


1 4

A=

2 5

3 6

i) Um elemento
A(i,j) - elemento linha i, coluna j A(1,2) ans = 2

ii) Conjunto de elementos


A(imin:imax , jmin:jmax) A(1:2, 2:3) ans=
2 5

3 6

jh@dei.uc.pt/ComputaoAdaptativa2013/14

1.3 - Nmeros Complexos


p = 3+4*j p = 3.0000 + 4.0000i
( indiferente usar j ou i)

Tambm se pode definir uma matriz de nmeros complexos: M = [3+4*i 2-i;-2+2i 5+3i] M=
3.0000 + 4.0000i 2.0000 - 1.0000i

-2.0000 + 2.0000i 5.0000 + 3.0000i

jh@dei.uc.pt/ComputaoAdaptativa2013/14

1.4 - Operaes Elementares


A+B A*B A' inv(A) diag(A) ones(m,n) zeros(m,n) eye(m) - adio - multiplicao - transposta - inversa - diagonal principal - matriz de uns - matriz de zeros - matriz identidade

ones(2,1) ans =
1 1

B= eye(3)

B=

1 0 0

0 1 0

0 0 1

jh@dei.uc.pt/ComputaoAdaptativa2013/14

1.5 - Vectores e Escalares


i) Escalares
a=2

ii) Vectores
f(x) = x3 + 2x2 + 3x +1 %--- definicao do polinomio f =[ 1 2 3 1 ]; %--- solucao de f(x)=0 roots(f) ans = -0.7849 + 1.3071*j
-0.7849 - 1.3071*j -0.4832

%--- polinomio de raizes -1, -2, 3 polinomio = poly([-1 -2 3]) polinomio = [ 1 0 -7 -6 ] %--- produto de dois polinmios (x+1) e (x+2) conv([1 1], [1 2]) ans = [ 1 3 2 ]

jh@dei.uc.pt/ComputaoAdaptativa2013/14

1.6 - Funes Elementares


Sobre escalares ou matrizes
abs(X)
Calcula o valor absoluto dos elementos de X. >>M=[-1 2 -3; 0 -8 4]; >> abs(M) ans = 1 0 2 8 3 4

mean(X)
Se X for um vector, devolve o valor mdio dos elementos de X; Se X for uma matriz, devolve um vector linha em que cada elemento o valor mdio de cada coluna de X. >>V =[ 7 >> mean(V) ans = 3.6667 >> mean(M) ans = -0.5000 -3.0000 0.5000 3 1];

% Para obter a mdia dos valores da matriz: >> mean(mean(M)) ans = -1 ...

jh@dei.uc.pt/ComputaoAdaptativa2013/14

Funes trigonomtricas
cos (coseno dos argumentos em radianos)
>> X=[0 >> cos(X) ans = 1.0000 0.0000 -1.0000 pi/2 pi];

sin (seno dos argumentos em radianos) tan (tangente dos argumentos em radianos)

jh@dei.uc.pt/ComputaoAdaptativa2013/14

1.7 - Comandos teis


help % help - help online help abs
definio da funo abs ...

% - Comentrio c=a+b % soma de a com b

jh@dei.uc.pt/ComputaoAdaptativa2013/14

2 Representao Grfica de Resultados


plot xlabel ylabel title clf 2.1 - Plot
plot(x,y) ou plot(x,y,s) (ver parmetros atravs de >>help plot)
%----------- x= inicio:incremento:fim %----------- y= x^2 x = -2:0.5:2; y = x.^2; plot(x,y) title('Quadrados') xlabel('x') ylabel('y')
Quadrados 4 3.5 3 2.5 2 1.5 1 0.5 0 -2

-1.5

-1

-0.5

0 x

0.5

1.5

jh@dei.uc.pt/ComputaoAdaptativa2013/14

10

Outras Possibilidades i) Representao simultnea de vrios grficos na mesma figura


plot(x,y,'*r',x,3*y,':b') title('Quadrados e Triplos de Quadrados') xlabel('x') ylabel('y')

Quadrados e Triplos de Quadrados 12

10

0 -2

-1.5

-1

-0.5

0 x

0.5

1.5

jh@dei.uc.pt/ComputaoAdaptativa2013/14

11

ii) Podem-se visualizar vrios grficos simultaneamente


subplot(linhas, colunas, grafico)

subplot(211) plot(x,y) grid title('Quadrados') subplot(212) plot(x,-y) grid title('Simetrico dos Quadrados')

Quadrados 4

0 -2 0 Simetrico dos Quadrados -1 0 1 2

-2

-4 -2 -1 0 1 2

jh@dei.uc.pt/ComputaoAdaptativa2013/14

12

3 - Ficheiros *.m

3.1 - Modo Comando (On Line)


a=2 b=3 c= 2*a - 3*b

3.2 - Scripts (Off Line)


MATLAB permite executar ficheiros de texto com extenso *.m Por exemplo, para inicializar algumas variveis, poder-se-ia criar um ficheiro inicia.m, com as instrues: a=2 b=3 c=4 E na linha de comando: inicia Sendo equivalente a: a=2 b=3 c=4 Todas as funes disponveis nas vrias Toolboxes do MatLab, so ficheiros *.m (podem ver-se atravs da opo File/SetPath...)

jh@dei.uc.pt/ComputaoAdaptativa2013/14

13

4 - Controlo de Fluxo

FOR WHILE IF .. END IF .. ELSEIF .. ELSE .. END


FOR
for var=inicio:incremento:fim . . end

WHILE
while expresso . . end

IF
if expresso1 . . elseif expresso2 . . else . . end

jh@dei.uc.pt/ComputaoAdaptativa2013/14

14

5 - Expresses Lgicas
< menor > maior = = igual ~ = diferente & AND | OR ~ NOT
Exemplo:
x=[-1 2 4 7 5 3 8]; N=length(x); % Contagem de numeros
% positivos e negativos %----------------------------

positivos = 0; negativos = 0; for i=1:N, if x(i)>0 positivos=positivos+1; elseif x(i)<0 negativos=negativos+1; end end positivos negativos

jh@dei.uc.pt/ComputaoAdaptativa2013/14

15

6 - Funes

function [parm.Sada ] = nome_funcao(parm.Entrada) . . clculo dos parmetros de sada . end

Exemplo
function med = media(a,b) med = (a+b)/2; end function [so,di] = somadife(a,b) so=a+b; di=a-b; end

Grava-se cada funo num ficheiro *.m, sendo o nome desse ficheiro que identifica a funo.

jh@dei.uc.pt/ComputaoAdaptativa2013/14

16

7 - Ficheiros *.mat
O MATLAB permite armazenar dados de uma sesso num ficheiro *.mat (com um formato especial) SAVE nome_ficheiro variveis LOAD nome_ficheiro variveis Para saber quais as variveis definidas actualmente usa-se o comando WHO. (O conjunto destas variveis designa-se por Workspace).
%-- v quais as variveis actualmente definidas who Your variables are: a b c %-- cria variaveis.mat contendo todas as %-- variveis actualmente definidas save variaveis %-- apaga todas as variis definidas actualmente clear who %-- volta a carregar estas variveis load variaveis who Your variables are: a b c %-- cria variaveis.mat contendo apenas a e c save variaveis a c clear who load variaveis who Your variables are: a c

jh@dei.uc.pt/ComputaoAdaptativa2013/14

17

8 - Exemplos
8.1 - Maximo, mnimo e mdia
Seja a funo x(t)=3*e-t*sin(5t) definida no intervalo [0,5] segundos. Construa uma funo que permita determinar o seu mximo, mnimo e mdia. Faa depois a representao de x(t), assim como das rectas horizontais que definem o seu mximo, mnimo e mdia. % -------------------- Definio de t e x t=0:0.1:5; x=3*exp(-t).*sin(5*t); % -------------------- Chamada da funo [maximo,minimo,media]=mmm(x); % --------------------- Grfico N=length(x); recta=ones(N,1); plot(t,x,... t,maximo*recta,':', ... t,minimo*recta,':', ... t,media*recta,':'); function [maximo,minimo,media]=mmm(x) maximo=max(x); minimo=min(x); media=mean(x); end
3 2 1 0 -1 -2

jh@dei.uc.pt/ComputaoAdaptativa2013/14

18

8.2 - Soma e diferena de duas funes


Dadas duas funes x(t)=3*e-t*sin(5t) e y(t)=cos(2t), pretende-se fazer a representao simultnea das mesmas, e tambm da sua soma e da sua diferena.
% --------------------- Definio de x e y t=0:0.1:5; x=3*exp(-t).*sin(5*t); y=cos(2*t); % --------------------- Chamada da funo [soma,dife]=somadife(x,y); clf % --------------------- Grfico de x subplot(221) plot(t,x); title('XXXX') % --------------------- Grfico de Y subplot(222) plot(t,y); title('YYYY') % --------------------- Grfico de x+y subplot(223) plot(t,soma); title('SOMA') % --------------------- Grfico de x-y subplot(224) plot(t,dife); title('SUBTRAO')

function [soma,dife]=somadife(x,y) for i=1:length(x), soma(i) = x(i)+y(i); dife(i) = x(i)-y(i); end

jh@dei.uc.pt/ComputaoAdaptativa2013/14

19

end

XXXX 1

YYYY

-5 0 SOMA 5 5

-1 0 SUBTRACAO 2 5

-5 0 5

-2 0 5

jh@dei.uc.pt/ComputaoAdaptativa2013/14

20