Você está na página 1de 23

Introduo ao MATLAB

MATLAB Comandos bsicos Variveis e Constantes Expresses Funes e Operadores Vectores e Matrizes
Instituto Superior Tcnico, Dep. de Engenharia Mecnica - ACCAII

Mathworks
Site oficial da Mathworks
LINK

MATLAB Central comunidade de utilizadores Documentao em pdf Exemplos de utilizao


LINK

LINK

LINK

Demos / Vdeos / Tutoriais


Jos Borges - Miguel Pedro Silva

LINK

Computao e Programao 2009 / 2010

A ferramenta MATLAB
MATLAB (MATrix LABoratory) Programa optimizado para clculos de engenharia e cientficos Programa MATLAB implementa a linguagem de programao MATLAB. Conjunto alargado de funes pr-definidas, normalmente agrupadas em toolboxes. Objectivo: escrever, depurar e optimizar programas em MATLAB.
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

Vantagens do MATLAB
Fcil de utilizar: uma linguagem interpretada, sendo fcil de escrever e testar programas. Independente da Plataforma: o cdigo desenvolvido corre em diferentes SOs: Windows Linux Unix Macintosh O cdigo pode ser compilado, mas mais lento que Fortran ou C (C++), por exemplo.
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

Vantagens do MATLAB
Grande nmero de toolboxes desenvolvidas pela Mathworks em diversas especialidades: engenharia, economia, bioinformtica, finanas, etc Utilizado por uma vasta comunidade: Aproximadamente 15.400.000 entradas no google.com Existncia de toolboxes resultantes de vria contribuies Clculo matemtico / manipulao numrica de matrizes Gerao de grficos Pode ser utilizado para construir aplicaes do tipo Graphical User Interfaces (GUI)
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

Desvantagens do MATLAB
uma linguagem interpretada, logo a execuo mais lenta que as linguagens compiladas (Este problema poder ser reduzido usando o compilador do MATLAB para gerar um executvel) A licena do MATLAB cara.

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

Ambiente do MATLAB
Directoria de trabalho Windows Menu

File Browser / Workspace Command Window

Command History

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

Comandos bsicos
Comando info demo help helpbrowser lookfor nome clock quit Descrio apresenta informao da aplicao abre a janela de demonstraes apresenta ajuda por palavra chave abre a janela de ajuda faz pesquisa por palavra chave informao da data e hora termina o MATLAB
8

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

Comandos para o sistema de ficheiros


Comando dir which fich Descrio apresenta o contedo da directoria devolve a path para o ficheiro indicado what dire devolve os ficheiros existentes na directoria indicada cd dire acede directoria indicada type fich mostra o contedo de ficheiro delete fich apaga o ficheiro indicado
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

Variveis
Objectos utilizados para armazenar valores na memria do computador, sendo caracterizadas pelo par,
Identificador: um nome dado varivel para possibilitar sua manipulao Contedo: o valor a reter, que poder ser numrico ou alfanumrico Temperatura = 45; Dia = 12

As variveis s so vlidas durante a execuo da aplicao. O contedo destas perde-se quando a aplicao encerrada, podem no entanto ser gravadas em suporte fsico permanente A cada varivel existente na aplicao corresponde uma zona exclusiva na memria principal do computador, sendo esta ligao gerida pelo conjunto aplicao & SO
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

10

Nomes de Variveis no MATLAB (regras)


O nome da varivel comea sempre por uma letra, podendo ser seguido por uma cadeia de caracteres alfanumricos O comprimento mximo para o nome depende do SO, sendo dado pela instruo namelengthmax O MATLAB case-sensitive (Exemplo: Dia dia DIA) Existem palavras reservadas Embora possam ser definidas variveis com o nome de funes (pr-definidas ou definidas pelo utilizador), tal gera confuso e resulta num mau estilo de programao
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

11

Comandos para manipular variveis


Comando who whos clear clear all clear vars Descrio apresenta as variveis existentes no ambiente de trabalho informao detalhada das variveis existentes no ambiente de trabalho apaga todas as variveis existentes no ambiente de trabalho apaga as variveis enunciadas

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

12

Utilizao de Variveis e Atribuio


nome_variavel = expresso
>> meu_numero = 6 meu_numero = 6 >> >> 6 = meu_numero ??? 6 = meu_numero | Error: The expression to the left of the equals sign is not a valid target for an assignment. >> >>
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

13

Utilizao de Variveis e Atribuio


>> res = 9 2 res = 7 >> res = 9 2; >> 9 2 ans = 7 >> ans ans = 7

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

14

Inicializao, Incremento e Decremento


>> meu_numero = 0 meu_numero = 0 >> meu_numero = meu_numero + 1 meu_numero = 1 >> meu_numero = meu_numero 1 meu_numero = 0

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

15

Constantes
Aplica-se a generalidade das caractersticas enunciadas para as variveis A diferena para estas que o valor da constante fixo e atribudo no momento da sua definio Exemplos:
pi = 3,1416 acelerao da gravidade, c = 299 792 458 ms1 velocidade da luz, g = 9,78 ms2

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

16

Constantes em MATLAB
Comando pi i j inf NaN Descrio constante Pi ( = 3.141592654... ) representao de nmero imaginrio representao de nmero imaginrio infinito ( ) not a number ( 0 / 0 )

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

17

Funes e operadores pr-definidos


Funes / operadores includos no core do MATLAB ou toolboxes da distribuio As funes so chamadas pelo nome seguido dos argumentos de entrada entre parntesis. Podem, ou no, ser precedidas pelos argumentos de sada:
sinal = sign(-5)

O comando help pode ser utilizado para,


listar as toolboxes disponveis na aplicao: help listar as funes de uma toolbox: help toolbox exibir informao de ajuda de cada funo: help sin
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

18

Operadores matemticos
help matlab\ops Comando + * / \ rem ^
Jos Borges - Miguel Pedro Silva

Descrio adio subtraco negao produto diviso por ( 10 / 5 = 2 ) diviso para ( 5 \ 10 = 2 ) resto da diviso inteira ( 11 / 5 = 2, resto = 1 ) exponenciao
Computao e Programao 2009 / 2010
19

Funes pr-definidas (exemplos)


help matlab\elfun Comando sin, cos, tan, atan sqrt log, log10, exp abs fix, floor, ceil, round
Jos Borges - Miguel Pedro Silva

Descrio funes trigonomtricas raiz quadrada funes de logaritmo e exponenciao valor absoluto funes de arredondamento
20

Computao e Programao 2009 / 2010

10

Expresses
As expresses podem ser criadas utilizando:
Valores numricos e/ou variveis (desde que j criadas!) Operadores Funes pr-definidas e/ou criadas pelo utilizador Parntesis Operador Ellipsis (... )
>> resultado = ( 3 + 5 ) + sin(1.5708) ... * 2 resultado = 10.0000
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

21

Regras de precedncia nas expresses


Precedncia dos operadores:
i. ii. iii. iv. v. () ^ *, /, \ +,parntisis expoente sinal de negao produto e diviso adio e subtraco

>> - ( 3 + 5 ) * 2 ans = 16 >> - 3 + 5 * 2 ans = 7


Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

22

11

Tipos de dados
Reais (nmeros fraccionrios) Inteiros (com ou sem negativos) Caracteres (letras, dgitos, smbolos, sinais de pontuao) Lgicos (valores lgicos true e false) No MATLAB os tipos so genericamente definidos como classes, as quais so constitudas por,
tipo de dados operaes que podem ser executadas sobre o tipo de dados
23

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

Tipos de dados no Matlab


help datatypes Tipo bsicos single, double uint8, uint16, uint32, uint64 int8, int16, int32, int64, char false
Jos Borges - Miguel Pedro Silva

Descrio nmeros reais (by default) nmeros inteiros sem signal nmeros inteiros com signal cadeias de caracteres tipo lgico
24

Computao e Programao 2009 / 2010

12

Transformao de tipo: casting


>> val = 6 + 3; >> whos Name val >> >> vali = int32(val); >> whos Name val vali
Jos Borges - Miguel Pedro Silva

Size 1x1

Bytes 8

Class double

Attributes

Size 1x1 1x1

Bytes 4 4

Class int32 int32

Attributes

Computao e Programao 2009 / 2010

25

Funo pr-definida format


>> 2 * sin(1.4) ans = 1.9709 >> format long >> 2 * sin(1.4) ans = 1.970899459976920 >> format short >> 2 * sin(1.4) ans = 1.9709
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

26

13

Gerao de nmeros aleatrios


Em estatstica, um nmero aleatrio um nmero que pertence a uma srie numrica e no pode ser previsto a partir dos membros anteriores dessa srie. Em ambiente computacional impossvel gerar nmeros aleatrios. Em alternativa, podem ser gerados nmeros pseudo-aleatrios, i.e.,
nmeros gerados com base numa determinada distribuio e tendo por valor inicial uma dada semente

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

27

Nmeros pseudo-aleatrios no MATLAB


Comando Descrio seed definio da semente rand gerao de nmeros reais com distribuio uniforme randn gerao de nmeros reais com distribuio normal randi gerao de nmeros inteiros com distribuio uniforme discreta

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

28

14

Exemplos de utilizao
Gerar vector (tamanho N) de nmeros inteiros a partir da distribuio uniforme discreta com valor mximo m: r = randi(N,m,1); Gerar vector de nmeros reais a partir da distribuio normal com desvio padro dp e mdia m: r = m + dp.*randn(N,1) Gerar vector de nmeros reais a partir da distribuio uniforme no intervalo [a, b] : r = a + (b-a).*rand(N,1);
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

29

Cadeias de caracteres e Encoding


A atribuio do contedo de caracteres no MATLAB feita entre pelicas, por exemplo, a='a' ou b=x' A representao interna no MATLAB feita com valores numricos, que podem ser manipulados para fazer a converso do tipo: Caracter ASCII Inteiro Inteiro Caracter ASCII Cadeia Caracteres ASCII Real Real Cadeia Caracteres ASCII
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

30

15

Exemplos de converso de tipo


>> int32('a') ans = 97 >> char(97) ans = a >> double('abcd') ans = 97 ans = bcde
31

98

99

100

>> char('abcd' + 1)

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

Vectores e Matrizes
Variveis utilizadas para armazenar conjuntos de dados do mesmo tipo na forma de: vector coluna com dimenso [ n 1 ] vector linha com dimenso [ 1 x m ] matrizes com dimenso [ n x m ]
Vector Coluna Escalar 13 11 31
Jos Borges - Miguel Pedro Silva

Vector Linha

Matriz

33
Computao e Programao 2009 / 2010
32

16

Criao de vectores coluna


>> vcol_1 = [1; 2] vlin_1 = 1 2 >> vcol_2 = 5:6; >> vcol_2 = vcol_2' vlin_2 = 5 6 >> vcol = [vcol_1 vcol_2] vcol = 1 5 2 6
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

33

Criao de vectores linha


>> vlin_1 = [1 2 3 4 5 6] vlin_1 = 1 2 3 4 5 6 >> vlin_1 = [1,2,3,4,5,6] vlin_1 = 1 2 3 4 5 6 >> vlin_1 = 1:6 vlin_1 = 1 2 3 4 5 6 >> vlin_1 = 1:1:6 vlin_1 = 1 2 3 4 5 6
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

34

17

Criao de vectores linha


>> vlin_2 = 1:2:6 vlin_2 = 1 3 5 >> vlin_3 = 6:-2:1 vlin_3 = 6 4 2 >> vlin_4 = [vlin_2 vlin_3] vlin_3 = 1 3 5 6 4 2

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

35

Acesso / modificao de vectores


>> vlin = [6 7 8 9] vlin = 6 7 8 9 >> vlin(3) ans = 8 >> vlin(3:4) ans = 8 9 >> vlin(2) = 5 ans = 6 5 8 9
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

36

18

Criao de matrizes
>> mat = [4 3 1; 2 5 6] mat = 4 2 3 5 1 6

>> mat = [3 5 7; 1 2] ??? Error using ==> vertcat CAT arguments dimensions are not consistent. >> mat = [2:4; 3:5] mat = 2 3
Jos Borges - Miguel Pedro Silva

3 4

4 5
Computao e Programao 2009 / 2010
37

Criao de matrizes
>> randi([10,30],2,3) ans = 17 27 >> rand(2) ans = 0.7572 0.7537 >> zeros(2) ans = 0 0
Jos Borges - Miguel Pedro Silva

22 21

29 16

0.3804 0.5678

0 0
Computao e Programao 2009 / 2010
38

19

Acesso aos elementos da matrizes


>> mat = [4 3 1; 2 5 6] mat = 4 2 >> mat(2,3) ans = 6 >> mat(2,:) ans = 2 ans = 5
Jos Borges - Miguel Pedro Silva

3 5

1 6

>> mat(2,2:end) 6
Computao e Programao 2009 / 2010
39

Modificao de matrizes
>> mat = [4 3 1; 2 5 6] mat = 4 2 3 5 1 6

>> mat(2,3) = 9 ans = 9 >> mat(2,:) = 11:2:15 ans = 4 11


Jos Borges - Miguel Pedro Silva

3 13

1 15
40

Computao e Programao 2009 / 2010

20

Informao dimensional
Comando Descrio size dimenses da matriz length tamanho de um vector maior dimenso de uma matriz numel nmero de elementos de uma matriz

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

41

Exemplos de utilizao
>> mat = [4 3 1; 2 5 6]; >> size(mat) ans = 2 3

>> length(mat) ans = 3 >> numel(mat) ans = 6

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

42

21

Rearranjo de matrizes
Comando Descrio reshape modifica as dimenses da matriz rearranjando os elementos desta fliplr rearranja os elementos da matriz pela troca da esquerda para a direita flipud rearranja os elementos da matriz pela troca de baixo para cima rot90 roda os elementos da matriz 90 no sentido contrrio aos ponteiros do relgio
Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

43

Exemplos de utilizao
>> mat = [4 3 1; 2 5 6]; >> fliplr(mat) ans = 1 6 3 5 4 2

>> flipud(mat) ans = 2 4 5 3 6 1

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

44

22

Exemplos de utilizao
>> mat = [4 3 1; 2 5 6]; >> reshape(mat,3,2) ans = 4 2 3 5 1 6

>> rot90(mat) ans = 1 3 4


Jos Borges - Miguel Pedro Silva

6 5 2
Computao e Programao 2009 / 2010
45

Referncias
Capitulo 1 de Matlab: A Practical Introduction to Programming and Problem Solving, Stormy Attaway (2009) Elsevier. Site do MATLAB@Mathworks: http://www.mathworks.com/

Jos Borges - Miguel Pedro Silva

Computao e Programao 2009 / 2010

46

23

Você também pode gostar