iniciação ao matlab eugênio silva eugenio@posgrad.nce.ufrj.br

Post on 22-Apr-2015

107 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Iniciação ao MatLab

Eugênio Silvaeugenio@posgrad.nce.ufrj.br

Introdução• MatLab – Matrix Laboratory (Universidades de Stanford

e Novo México - 1970)

• originalmente escrito para trabalhar com matrizes e vetores

• evoluiu ao longo do anos até se tornar uma ferramenta

de ampla abrangência.

Introdução• o MatLab é uma poderosa ferramenta matemática e

uma linguagem de programação de alto-desempenho para a computação científica

• integra cálculos matemáticos, visualização e programação em um ambiente interativo

• é de fácil utilização

Introdução

• o elemento de dados básico é uma matriz

• matrizes e vetores são manipulados com mais facilidade e rapidez que em programas escritos em linguagens não-interativas como Pascal, C ou Fortran

Introdução

• toolboxes - bibliotecas de funções que permitem a resolução de classes particulares de problemas

• simulink - acessório que acrescenta uma interface de diagramas de blocos e recursos de simulação real aos demais recursos numéricos, gráficos e de linguagem

Aplicações

• matemática e computação

• desenvolvimento de algoritmos

• modelagem, simulação e prototipação

• análise de dados, exploração e visualização

• gráficos científicos em duas e três dimensões

Scripts em Matlab• Um script em Matlab é um arquivo texto que contém

uma seqüência de de um mais comandos. • Scripts não aceitam e não retornam argumentos. • Scripts podem alterar as variáveis do espaço de

trabalho (workspace) atual. • Scripts podem conter comandos que interagem com o

usuário e/ou arquivos. • Use scripts para:

– Automatizar a execução de uma seqüência de comandos frequentemente utilizados

– Documentar os passos de um processo

Scripts em Matlab%Exemplo de script%clear all; x = 0:0.01:2*pi; eixos = [0 2*pi -2 +2];y1 = sin(x);y2 = cos(x);y3 = tan(x);y4 = zeros(size(x));

plot (x,y1,x,y2,x,y3,x,y4,'k');axis (eixos);legend('Seno', 'Coseno','Tangente');title('Graficos de seno, coseno e tangente.');xlabel('Angulos');ylabel('Seno, coseno e tangente');

Scripts em Matlab

Funções em Matlab• Uma função em Matlab é um arquivo de texto. • Arquivos de funções devem ter um nome igual

ao nome da função. • Um conjunto de funções e scripts pode ser

agrupado em um único diretório. O conjunto é chamado de toolbox.

• Toolboxes extendem as capacidades do Matlab

Funções em Matlabfunction [membership] = triangle(x,tri_def);%TRIANGLE Triangular Membership Function% [membership] = triangle(x,[a b c])%% Returns the membership to a universe of discourse defined% by [a,b,c]. Note: a,b,c must be in the universe of

discourse.%% x : universe of discourse% a : left point of the triangular membership function % b : center of the triangular membership function% c : right point of the triangular membership function% y : membership function%% Wes Hines% The University of Tennessee% Copyright 1997

Funções em Matlaba = tri_def(1); b = tri_def(2); c = tri_def(3);membership=zeros(size(x));A=find(x==a); B=find(x==b); C=find(x==c);if isempty(A&B&C);

error('a,b, and c must be defined in the universe of discourse: x.')

endfor i=A:B

membership(i)=(i-A)/(B-A+eps);endfor i=B:C

membership(i)=(C-i)/(C-B+eps);endif B==C

membership(B)=1;end

Funções em Matlab% Matlab mantem um workspace, assim apaga tudo do workspaceclear all;temperatura = -30:1:60; eixos = [-30 60 0 1.5];MuitoFrio = trapzoid (temperatura, [-30 -30 5 15]);Frio = triangle (temperatura, [5 15 25]);Normal = triangle (temperatura, [15 25 35]);Quente = triangle (temperatura, [25 35 45]);MuitoQuente = trapzoid (temperatura, [35 45 60 60]);

plot (temperatura, MuitoFrio, temperatura, Frio, temperatura, Normal, temperatura, Quente, temperatura, MuitoQuente);

axis (eixos);legend('MuitoFrio','Frio', 'Normal','Quente','MuitoQuente');title('Graficos de Frio.');xlabel('Temperaturas');ylabel('Frio');

Scripts em Matlab

-30 -20 -10 0 10 20 30 40 50 600

0.5

1

1.5Graficos de Frio.

Temperaturas

Frio

MuitoFrioFrioNormalQuenteMuitoQuente

Exemplo – transpor uma matriz• Pascal

var a, b : array [1..3, 1..3] of integer; i, j : integer;

begin . . . for i = 1 to 3 for j = 1 to 3 b(j,i) := a(i,j); end; end;end.

• MatLab

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

>> b = a’b = 1 4 7 2 5 8 3 6 9

Operações Elementares>> 4 + 6 – 2

ans =

8

>> 4 2 + 6 5 + 2 9

ans =

56

>> 25 / 5 + 5 \ 25

ans =

10

>> 3 ^ 2 2 ^ 2 + 2

ans =

38

Definição de Variáveis>> a = 10a =

10

>> b = 20; O ‘;’ evita que o resultado apareça na tela.

>> c = 1 + 2i ou c = 1 + 2jc =

1.0000 – 2.0000i

Variáveis Pré-Definidas>> ans variável padrão usada para resultados

>> pi

>> i ou j

>> realmax maior número real positivo utilizável

>> realmin menor número real positivo utilizável

>> nargin número de argumentos de entrada

>> nargout número de argumentos de saída

>> inf infinito

1

Funções Elementares

abs(x) módulo gcd(x,y) MDC

sin(x) seno lcm(x,y) MMC

asin(x) arco seno log(x) logaritmo natural

cos(x) co-seno log10(x) logaritmo na base 10

tan(x) tangente max(x) valor máximo

exp(x) exponencial min(x) valor mínimo

inv(x) matriz inversa de x sqrt(x) raiz quadrada

Espaço de Trabalho

>> who lista variáveis existentes na memória

>> whos lista variáveis com informações detalhadas

>> clear apaga as variáveis da memória

>> save salva as variáveis em um arquivo .mat

>> load carrega as variáveis contidas em um .mat

>> format formato de apresentação dos resultados

Comandos do Sistema Operacional>> dir ou ls arquivos do diretório

>> cd ou pwd diretório corrente

>> cd . . diretório acima do corrente

>> cd \ diretório raiz

>> delete <arquivo> apaga arquivo

>> edit <arquivo> abre arquivo para edição

>> type <arquivo> mostra o conteúdo do arquivo

>> quit ou exit sai do ambiente

Vetores

>> x = [0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1] pi

ou

>> x = (0:0.1:1) pi

ou

>> x = linspace(0,pi,11)

>> y = sin(x)

Vetores

>> x(3) >> y([8 2 9 1])

>> x(1:5) >> z = [x(1:5) 2 5 7]

>> x(7:end) >> t = [x y]

>> y(3:-1:1) >> t = [x; y]

>> x(2:2:7) >> z = z’

Matrizes

>> A = [1 2 3; 4 5 6; 7 8 9] >> B = A(3:-1:1, : )

>> A(3,3) = 9 >> C = [A B( : , [1 3])]

>> A(2,2:3) = 5 6 >> B(:,2) = [ ]

>> A(3,:) = 7 8 9 >> B = A( : , [2 2 2 2])

Matrizes

>>eye(linhas,colunas)

Cria matriz identidade

>> det(m)

Determinante de m

>> zeros(n1,n2,n3,...)

Matriz de zeros

>> inv(m)

Inversa de m

>> ones(n1,n2,...)

Matriz de uns

>> m’

Transposta de m

>> rand (n1,n2,...)

Matriz de rand entre 0 e 1.0

Matrizes

1 5 9 13

2 6 10 14

3 7 11 15

4 8 12 16

matriz(10) ou matriz(2,3)

Busca de Sub-Matrizes>> x = -3:3

x =

-3 -2 -1 0 1 2 3

>> k = find(abs(x) > 1)

k =

1 2 6 7

>> y = x(k)

-3 -2 2 3

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

A = 1 2 3

4 5 6

7 8 9

>> [ i , j ] = find(A > 5)

i = 3 j = 1

3 2

2 3

3 3

Dimensões de Vetores e Matrizes

whos lista as variáveis e suas dimensões

s = size(A) retorna o número de linhas e colunas de A

[x,y] = size(A) x contém o núm de linhas e y o de colunas

x = size(A,1) retorna o número de linhas de A

y = size(A,2) retorna o número de colunas de A

n = length(A) retorna max(size(A))

Operações com Vetores e Matrizesa = [a1 a2 ... an] , b = [b1 b2 ... bn] , c = <um escalar>

adição a escalar a + c = [a1 + c ... an + c]

multiplicação por escalar a c = [a1 c ... an c]

soma de vetores a + b = [a1 + b1 ... an + bn]

multiplicação de vetores a . b = [a1 b1 ... an bn]

Operações com Vetores e Matrizesa = [a1 a2 ... an] , b = [b1 b2 ... bn] , c = <um escalar>

divisão de vetores (direita) a . / b = [a1 / b1 ... an / bn]

divisão de vetores (esquerda) a . \ b = [a1 \ b1 ... an \ bn]

potenciação vetorial

c .^ a = [c ^ a1 ... c ^ an]

a .^ c = [a1 ^ c ... an ^ c]

a .^ b = [a1 ^ b1 ... an ^ bn]

Operadores Relacionais e Lógicos

< menor que

<= menor ou igual

> maior que

>= maior ou igual

= igual

~= diferente

& e

| ou

~ não

Funções Relacionais e Lógicas

xor(x,y) ou exclusivo

ischar(x) 1 se x é um vetor de caracteres

isequal(x,y) 1 se x e y são iguais

isempty(x) 1 se x é vazio

ismember(x,y) 1 se os elementos de x pertencem a y

isstruct(x) 1 se x é uma estrutura

Estrutura Condicional – if

>> if expressão_1

comandos_1;

elseif expressão_2

comandos_2;

else

comandos_3;

end

Estrutura Condicional – switch - case

>> switch expressão

case teste_expressão_1

comandos_1

case teste_expressão_2

comandos_2

otherwise

comandos_3

end

Laços de Repetição – for / while

>> for x = vetor

comandos;

end

>> while expressão

comandos;

end

Otimização de Código

• o laço de repetição for i = 0:999

x(i+1) = sin(2 pi i / 100);

end

• pode ser substituído por x = sin(2 pi [0:999] / 100);

Arquivos M de comandos

• úteis quando o número de comandos é grande, ou caso seja necessário alterar os valores das variáveis e re-executar alguns comandos

• armazenam uma seqüência de comandos em um arquivo texto que é executado a partir do prompt

Funções dos Arquivos M

disp(x) mostra o resultado sem identificar a variável

echo controla a exibição dos comandos

input solicita ao usuário que forneça a entrada

keyboard transfere o controle para o teclado

pause(n) suspende a execução por n segundos

pause suspende até que uma tecla seja pressionada

Arquivos M de funções

• o nome da função deve ser idêntico ao nome do arquivo

• a partir da segunda vez a execução de uma função é mais rápida que da primeira

• as linhas de comentário que antecedem a primeira linha sem comentário aparecem quando se pede ajuda

Arquivos M de funções

• variáveis criadas dentro de uma função permanecem apenas no espaço de trabalho da função

• funções podem compartilhar variáveis com outras funções desde que sejam declaradas como globais

• arquivos M de funções podem conter mais de uma função, a função primária e as sub-funções

Análise de Dados

cov(x) matriz de covariância

min(x) componente mínima

max(x) componente máxima

mean(x) média

rand(x) núm. aleatórios uniformemente distribuídos

var(x) variância

std(x) desvio padrão

sum(x) soma dos elementos de cada coluna

Gráficos Bidimensionais

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

>> y = sin(x);

>> z = cos(x);

>> plot(x,y,x,z)

Gráficos Bidimensionais

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

>> y = sin(x);

>> z = cos(x);

>> subplot(2,1,1)

>> plot(x,y,’go’)

>> subplot(2,1,2)

>> plot(x,z,’r*’)

Gráficos Bidimensionais

>> x = -2.9 : 0.2 : 2.9;

>> y = randn(5000,1);

>> hist(y,x)

Gráficos Tridimensionais

>> t = 0 : pi / 50 : 10 pi;

>> plot3(sin(t),cos(t),t);

>> title(‘hélice’)

>> xlabel(‘sen(t)’)

>> ylabel(‘cos(t)’)

>> zlabel(‘t’)

>> grid

Gráficos Tridimensionais

>> mesh(peaks)

Gráficos Tridimensionais

>> surf(peaks)

Matrizes Celulares

• são matrizes cujos elementos são células

• qualquer célula da matriz pode conter qualquer tipo de dado (matrizes numéricas, texto, matrizes celulares, etc.)

Matrizes Celulares

>> A(1,1) = { [1 2 3; 4 5 6; 7 8 9] };

>> A(1,2) = { 2 + 3i };

>> A(2,1) = { ‘um texto’ }

>> A(2,2) = {12 : -2 : 0};

>>A =

[3x3 double] [2.0000+ 3.0000i]

'um texto' [1x7 double]

Matrizes Celulares

>> A{1,1} = [1 2 3; 4 5 6; 7 8 9];

>> A{1,2} = 2 + 3i;

>> A{2,1} = ‘um texto’

>> A{2,2} = 12 : -2 : 0;

>>A =

[3x3 double] [2.0000+ 3.0000i]

'um texto' [1x7 double]

Matrizes Celulares

>> cellplot(A);

Estruturas

• são objetos que contêm “recipientes de dados” com

nomes diferentes

• esses recipientes são chamados de campos

• os campos podem conter qualquer tipo de dado

• ao se referir aos campos de uma estrutura usa-se seus

nomes em vez de usar índices

• estruturas podem conter outras estruturas

Estruturas

>> cliente.nome = ‘João da Silva’;

>> cliente.custo = 86.50;

>> cliente.teste.A1C = [6.3 6.8 7.1 7.0 6.7];

>> cliente.teste.CHC = [2.8 3.4 3.6 4.1 3.5];

Ajuda On-Line

• help

• helpwin

• helpdesk

• lookfor

• demo

• arquivos de ajuda

Para Saber Mais

• Hanselman, Duane; Littlefield, Bruce; Matlab 5 Guia do

Usuário (versão do estudante), Makron Books, 1997.

• Matsumoto, Élia Yathie; Matlab 6 - Fundamentos de

Programação, Editora Érica, 2001.

Demonstrações

matrices/graphs and matrices

matrices/matrix manipulation

visualization/vibration movie

visualization/visualizing sound

gallery/knot

gallery/slosh

gallery/logo

games/sliding puzzle

top related