• Nenhum resultado encontrado

Introdução. Iniciação ao MatLab. Introdução. Introdução. Introdução. Aplicações. Eugênio Silva

N/A
N/A
Protected

Academic year: 2021

Share "Introdução. Iniciação ao MatLab. Introdução. Introdução. Introdução. Aplicações. Eugênio Silva"

Copied!
10
0
0

Texto

(1)

Iniciação ao MatLab

Eugênio Silva eugenio@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

(2)

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 y1,y2;

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 Matlab

function [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 Matlab

a = 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.')

end for i=A:B

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

end for i=B:C

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

end if B==C

membership(B)=1;

end

(3)

Funções em Matlab

% Matlab mantem um workspace, assim apaga tudo do workspace clear 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 60

0 0.5 1 1.5

Graficos de Frio.

Temperaturas

Frio

MuitoFrio Frio Normal Quente MuitoQuente

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 = 10 a =

10

>> b = 20;

O ‘;’ evita que o resultado apareça na tela.

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

Variáveis Pré-Definidas

número de argumentos de saída

>> nargout

número de argumentos de entrada

>> nargin

menor número real positivo utilizável

>> realmin

maior número real positivo utilizável

>> realmax

>> i ou j π

>> pi

variável padrão usada para resultados

>> ans

−1

(4)

Funções Elementares

raiz quadrada sqrt(x)

matriz inversa de x inv(x)

valor mínimo min(x)

exponencial exp(x)

valor máximo max(x)

tangente tan(x)

logaritmo na base 10 log10(x)

co-seno cos(x)

logaritmo natural log(x)

arco seno asin(x)

MMC lcm(x,y) seno

sin(x)

MDC gcd(x,y) módulo

abs(x)

Espaço de Trabalho

formato de apresentação dos resultados

>> format

carrega as variáveis contidas em um .mat

>> load

salva as variáveis em um arquivo .mat

>> save

apaga as variáveis da memória

>> clear

lista variáveis com informações detalhadas

>> whos

lista variáveis existentes na memória

>> who

Comandos do Sistema Operacional

sai do ambiente

>> quit ou exit

mostra o conteúdo do arquivo

>> type <arquivo>

abre arquivo para edição

>> edit <arquivo>

apaga arquivo

>> delete <arquivo>

diretório raiz

>> cd \

diretório acima do corrente

>> cd . .

diretório corrente

>> cd ou pwd

arquivos do diretório

>> dir ou ls

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

>> z = z’

>> x(2:2:7)

>> t = [x; y]

>> y(3:-1:1)

>> t = [x y]

>> x(7:end)

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

>> x(1:5)

>> y([8 2 9 1])

>> x(3)

Matrizes

>> B = A( : , [2 2 2 2])

>> A(3,:) = 7 8 9

>> B(:,2) = [ ]

>> A(2,2:3) = 5 6

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

>> A(3,3) = 9

>> B = A(3:-1:1, : )

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

(5)

Matrizes

>> rand (n1,n2,...) Matriz de rand entre 0 e 1.0

>> m’

Transposta de m

>> ones(n1,n2,...) Matriz de uns

>> inv(m) Inversa de m

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

>> det(m) Determinante de m

>>eye(linhas,colunas) Cria matriz identidade

Matrizes

16 12

8 4

15 11

7 3

14 10

6 2

13 9

5 1

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

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

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

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

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

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

lista as variáveis e suas dimensões whos

Operações com Vetores e Matrizes

a = [a

1

a

2

... a

n

] , b = [b

1

b

2

... b

n

] , c = <um escalar>

a .b = [ab ... ab ] multiplicação de vetores

a + b = [a

1

+ b

1

... a

n

+ b

n

] soma de vetores

a c = [a

1

c ... a

n

c]

multiplicação por escalar

a + c = [a

1

+ c ... a

n

+ c]

adição a escalar

Operações com Vetores e Matrizes

a .^ c = [a

1

^ c ... a

n

^ c]

a = [a

1

a

2

... a

n

] , b = [b

1

b

2

... b

n

] , c = <um escalar>

a .^ b = [a ^ b ... a ^ b ] c .^ a = [c ^ a

1

... c ^ a

n

] potenciação vetorial

a . \ b = [a

1

\ b

1

... a

n

\ b

n

] divisão de vetores (esquerda)

a . / b = [a

1

/ b

1

... a

n

/ b

n

]

divisão de vetores (direita)

(6)

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

1 se x é uma estrutura isstruct(x)

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

1 se x é vazio isempty(x)

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

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

ou exclusivo xor(x,y)

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);

(7)

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

suspende até que uma tecla seja pressionada pause

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

transfere o controle para o teclado keyboard

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

controla a exibição dos comandos echo

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

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

soma dos elementos de cada coluna sum(x)

desvio padrão std(x)

variância var(x)

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

média mean(x)

componente máxima max(x)

componente mínima min(x)

matriz de covariância cov(x)

Gráficos Bidimensionais

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

>> y = sin(x);

>> z = cos(x);

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

(8)

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.)

(9)

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

(10)

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

Referências

Documentos relacionados

Dentro de uma classe, a ordem de declaração de métodos, atributos e construtores

Neste mesmo dia, iniciamos as atividades com uma Contação de Histórias: A Galinha Ruiva, realizamos um momento de conversação: sobre a importância da cooperação de todos para que

O ultra-som teve um efeito positivo no processo de secagem mais curto, mas um efeito negativo significativo como o aumento no tempo de processamento, levando a

ESTRATÉGIAS EMPRESARIAIS 7.3 Diagnóstico Empresarial APROVADA A... Página 6

Esta função mostra na tela a mensagem de texto e aguarda que o usuário digite um texto (string) que será armazenado (mas não alvaliado) na variável R.. Isto permite uma

Formatação dos números apresentados – comando format Muda o formato de apresentação dos números, para ponto fixo, ponto flutuante, hexadecimal, monetário e hexadecimal. &gt;&gt; x

NOTA: O conversor estará alimentado pela USB do computador, por tanto sua tensão será igual a 5VCC, utilize o jumper, chave, ou o que disponha para que sua saída seja igual a

Defina os limites em 15x10, ajuste os grid e o comando snap em 1, dê zoom\all. 3) Desenhe um quandrado trançando seus quatro lados, ou clicando sobre o botão