• Nenhum resultado encontrado

Fundamentos de MATLAB. Computação 2º Semestre 2016/2017

N/A
N/A
Protected

Academic year: 2021

Share "Fundamentos de MATLAB. Computação 2º Semestre 2016/2017"

Copied!
49
0
0

Texto

(1)

Fundamentos de MATLAB

(2)

O Ambiente MATLAB

 Janela de Comando  Escrever comandos

 Mostrar resultados em formato de texto  Janela de Edição

 Escrever programas e funções  Editar os valores de variáveis  Janela de Workspace

 Ver os valores das variáveis  Escolher variáveis para editar  Janela de História

 Ver ou repetir comandos anteriores  Janela Current Folder

 Ver os ficheiros da directoria corrente  Escolher ficheiros para editar

 Janelas de Figuras

(3)

Modo de Cálculo

 A janela de Comando pode ser usada como uma calculadora  Escrevem-se os comandos linha a linha

 O resultado dos cálculos é atribuído a uma variável denominada ans  Exemplo:

>> 55 – 16 ans =

39

 Se uma variável contém um valor, esta pode ser usada nos

cálculos seguintes:

>> ans + 11 ans =

(4)

Variáveis

 A variável ans pode ser útil para cálculos rápidos mas é

insuficiente para programação.

 Podem-se definir variáveis com outros nomes apenas por

atribuição de valores.

 Os valores são armazenados em locais de memória

correspondentes ao nome da variável.

 Não é necessário pré-inicializar uma variável. Se esta não

existir, então é criada na atribuição de valores.

 As variáveis podem ter valores individuais (escalares) ou

(5)

Escalares

 Para atribuir um valor a uma variável, basta escrever o nome

da variável, o sinal de igual e o respectivo valor: >> a = 4

a = 4

 O nome de uma variável começa sempre por uma letra e pode

conter letras, números e o underscore '_'.

 O resultado dos cálculos não é mostrado se se terminar a

linha de comando com ponto e vírgula ';' >> a = 4;

 Para mostrar um valor de uma variável, basta escrever o seu

nome: >> a a =

(6)

Escalares

 Podem-se escrever múltiplos comandos na mesma linha

desde que sejam separados por vírgula ',' ou ponto e vírgula ';'

>> a = 4, A = 6; x = 1; a =

4

 O MATLAB é sensível às maiúsculas e minúsculas. A e a

são duas variáveis diferentes: >> A

A = 6

(7)

Escalares

 Pode-se usar a variável complexa i para representar números

imaginários:

>> x = 2+i*4 x =

2.0000 + 4.0000i

 Existem algumas variáveis pré-definidas:

>> pi ans =

3.1416

 Podem-se mostrar os resultados em diferentes formatos (o formato

não altera o valor armazenado na variável) :

>> format short; pi ans = 3.1416 >> format long; pi ans = 3.14159265358979

(8)

Vectores e Matrizes

 As variáveis podem conter sequências de valores:

 Vectores: se só tiverem uma dimensão  Matrizes: se tiverem duas dimensões

 Os vectores e as matrizes são criados com parênteses

rectos '[' e ']'

 Os elementos de uma linha são separados por espaços ' '

ou vírgulas ','

(9)

Vectores e Matrizes

 Vector linha: >> a = [1 2 3] (>> a = [1,2,3]) a = 1 2 3  Vector coluna: >> a = [1;2;3] a = 1 2 3  Matriz 34: >> A = [1 2 3 4; 5 6 7 8; 9 10 11 12] A = 1 2 3 4 5 6 7 8 9 10 11 12

(10)

Vectores e Matrizes

 A transposta de um vector ou de uma matriz pode ser obtida

com o comando apóstrofo ' >> a = [1;2;3]' a = 1 2 3 >> A = [1 2 3 4; 5 6 7 8; 9 10 11 12]' A = 1 5 9 2 6 10 3 7 11 4 8 12

 O comando who mostra os nomes das variáveis existentes  O comando whos mostra adicionalmente as dimensões, o

espaço ocupado em memória e o tipo de dados das variáveis Todas as variáveis são matrizes!

(11)

Vectores e Matrizes

 Se V é um vector então V(i) é o seu i-ésimo elemento:

>> a = [2 4 6 8 10]; x = a(4) x = 8 >> b = [1;3;5;7;9]; y = b(3) y = 5

 Se M é uma matriz então M(i,j) é o seu elemento da linha i

e coluna j: >> A = [1 2 3; 4 5 6; 7 8 9]; >> x = A(2,3), y = A(3,2) x = 6 y = 8

(12)

Vectores e Matrizes

 Funções MATLAB para criação de Vectores e Matrizes  zeros: cria uma matriz/vector preenchida com zeros (0);  ones: cria uma matriz/vector preenchida com uns (1);

 rand: cria uma matriz/vector preenchida com números aleatórios;  eye: cria uma matriz identidade;

 diag: cria uma matriz diagonal;

 linspace: cria um vector linha com elementos linearmente

espacejados;

 logspace: cria um vector linha com elementos logaritmicamente

espacejados;

 Para obter informação sobre matrizes elementares e

manipulação de matrizes usar o comando: >> help elmat

(13)

Vectores e Matrizes

 Criação de uma matriz 23 só com zeros:

>> A = zeros(2,3) A =

0 0 0 0 0 0

 Criação de um vector linha com 3 uns:

>> x = ones(1,3) x =

1 1 1

 Criação de um vector coluna com 2 números aleatórios:

>> y = rand(2,1) y =

0.8147 0.9058

(14)

Vectores e Matrizes

 Criação de uma matriz identidade de 33:

>> A = eye(3) A =

1 0 0 0 1 0 0 0 1

 Criação de uma matriz diagonal de 33:

>> v = [1 3 9]; B = diag(v) B =

1 0 0 0 3 0 0 0 9

(15)

Vectores e Matrizes

 Criação de um vector linha com 5 elementos linearmente

espacejados:

>> x = linspace(0,1,5) x =

0 0.2500 0.5000 0.7500 1

 Criação de um vector linha com 4 elementos

logaritmicamente espacejados:

>> y = logspace(-1,2,4) y =

0.1000 1.0000 10.0000 100.0000

 Se o número de elementos for omitido, o vector terá

100 e 50 elementos para linspace e logspace respectivamente.

(16)

Vectores e Matrizes

 O operador dois pontos ':' pode ser usado na forma

'início:passo:limite' para criar um vector linha com

elementos linearmente espacejados: >> x = 1:0.6:3

x =

1 1.6000 2.2000 2.8000

 Se o passo for omitido, o seu valor será 1:

>> y = 3:6 y =

3 4 5 6

 Para criar séries decrescentes o passo tem que ser negativo:

>> z = 5:-1.2:2 z =

(17)

Vectores e Matrizes

Os dois pontos ':' podem ser usados como wildcard para designar toda uma coluna ou linha de uma matriz:

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

 Os dois pontos ':' podem ser usados para obter subconjuntos de colunas ou linhas de uma matriz:

>> A(2:3,1) ans =

4 7

(18)

Vectores e Matrizes

 A notação com dois pontos ':' permite obter resultados de

uma forma compacta:

>> A = ones(8,8); >> A(3:6,3:6) = zeros(4,4) A = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

(19)

Strings

 São sequências de caracteres alfanuméricos  Inicializadas como um texto entre plicas:

>> f = 'Miles ' f = Miles >> s = 'Davis' s = Davis

 Representadas como vectores:

>> x = [f s], y = x(4:8) x =

Miles Davis y =

(20)

Strings

Funções MATLAB para manipulação de Strings

 char: converte inteiros para caracteres alfanuméricos;  strfind: procura uma substring numa string;

 length: devolve o número de caracteres de uma string;  num2str: converte um número numa string;

 str2num: converte uma string num número;  strcmp: compara duas strings;

(21)

Strings

A função char pode ser usada para combinar strings:

>> f = 'Miles'; s = 'Davis'; char(f,s) ans =

Miles Davis

 ou para obter os caracteres pelo código ASCII:

>> char(49) ans = 1 >> char([77 65 84 76 65 66]) ans = MATLAB

(22)

Strings

 A função strfind devolve os índices iniciais de ocorrência de uma

string noutra string:

>> s = 'How much wood would a woodchuck chuck?'; >> strfind(s,'a') ans = 21 >> strfind(s,'wood') ans = 10 23 >> strfind(s,'Wood') ans = [] >> strfind(s,' ') ans = 4 9 14 20 22 32

(23)

Strings

A função length devolve o número de caracteres da string:

>> f = 'Miles '; s = 'Davis'; length([f s]) ans =

11

A função num2str converte um número numa string:

>> ['x = ' num2str(4.2+12.3) ';'] ans =

x = 16.5;

A função str2num converte uma string num número:

>> x = str2num('4.5')+4 x =

8.5000

A função strcmp verifica se duas strings são iguais:

>> p = 'palavra'; s = 'pal'; >> strcmp(p,s) ans = 0 >> strcmp(p(1:3),s) ans = 1

(24)

Operações Matemáticas

 Podem ser aplicadas a escalares, vectores ou matrizes  Os operadores comuns, por ordem de prioridade, são:

^ Exponenciação 4^2 = 16 - Negação (operação unária) -8 = -8 * / Multiplicação Divisão 2*pi = 6.2832 pi/4 = 0.7854 \ Divisão à esquerda 6\2 = 0.3333 + -Adição Subtracção 3+5 = 8 3-5 = -2

(25)

Operações Matemáticas

 A ordem das operações é definida primeiro pelos

parênteses e depois pela ordem da tabela anterior:

y = -4^2

y = -16

uma vez que a exponenciação é mais prioritária que a negação

y = (-4)^2

y = 16

uma vez que a negação é efectuada primeiro devido aos parenteses

y = 1-3+2

y = 0

uma vez que, em caso de empate, as operações são efectuadas da esquerda para a direita

(26)

Operações Matemáticas

A adição e subtracção de vectores são

efectuadas elemento-a-elemento

>> u = [10 9 8];

(vector linha)

>> v = [1 2 3];

(vector linha)

>> u+v

ans =

11

11

11

>> u-v

ans =

9

7

5

(27)

Operações Matemáticas

Os produtos interno e externo de vectores

podem ser obtidos pelo operador de multiplicação

>> u = [10 9 8]; (vector linha) >> v = [1 2 3]; (vector linha)

>> u*v' (produto interno) ans =

52

>> u'*v (produto externo) ans =

10 20 30

9 18 27

(28)

Operações Matemáticas

Na multiplicação de matrizes, os elementos da

matriz [C] que resulta da multiplicação de [A] e

[B] são:

 cijaikbk j k1 n

(29)

Operações Matemáticas

 A multiplicação de matrizes pode ser obtida directamente pelo

operador de multiplicação >> A = [3 1; 8 6; 0 4]; (32) >> B = [5 9; 7 2]; (22) >> C = A*B (32) C = 22 29 82 84 28 8 >> C = B*A

??? Error using ==> mtimes

Inner matrix dimensions must agree.

 A operação de divisão por uma matriz corresponde à multiplicação

pelo inverso da matriz (tem que ter inversa).

 A operação de exponenciação para matrizes corresponde à repetição

(30)

Operações Matemáticas

 As operações sobre vectores e matrizes são efectuadas

elemento-a-elemento se o respectivo operador for precedido de '.'

 ambos os vectores (ou matrizes) têm que ter dimensões idênticas;  ou um deles é uma matriz 11 (escalar)

 Multiplicação e divisão de vectores elemento-a-elemento:

>> u = [1 2 3]; >> v = [4 5 6]; >> u.*v ans = 4 10 18 >> u./v ans = 0.2500 0.4000 0.5000

(31)

Operações Matemáticas

 Multiplicação e divisão de matrizes elemento-a-elemento: >> A = [1 2 3 4; 5 6 7 8]; >> B = [8 7 6 5; 4 3 2 1]; >> A.*B ans = 8 14 18 20 20 18 14 8 >> A./B ans = 0.1250 0.2857 0.5000 0.8000 1.2500 2.0000 3.5000 8.0000  Exponenciação de matrizes elemento-a-elemento:

>> A.^2 ans =

1 4 9 16 25 36 49 64

(32)

Funções Pré-definidas do MATLAB

 Existem várias funções pré-definidas do MATLAB para a

criação e manipulação de dados.

 A função help fornece informação sobre as funções

pré-definidas existentes e a sua possível utilização:

 help elmat – lista as funções de criação e manipulação de

matrizes elementares, incluindo as funções para obter informação sobre as matrizes.

 help elfun – lista as funções matemáticas elementares,

incluindo as funções trigonométricas, exponenciais, complexas, e de arredondamento.

 O comando lookfor procura ficheiros de ajuda que

podem ser úteis quando se sabe o objectivo da função mas se desconhece o seu nome.

(33)

Funções Pré-definidas do MATLAB

 A função help pode ser utilizada para obter informação sobre uma função em

particular:

>> help log

LOG Natural logarithm.

LOG(X) is the natural logarithm of the elements of X. Complex results are produced if X is not positive.

See also log1p, log2, log10, exp, logm, reallog.

 Para vectores e matrizes, as funções pré-definidas são aplicadas

elemento-a-elemento:

>> A = [1 2 3; 4 5 6]; log(A) ans =

0 0.6931 1.0986 1.3863 1.6094 1.7918

(34)

Gráficos

 Existem várias funções pré-definidas do MATLAB para a

criação de gráficos:

 plot – gráficos de linhas e/ou pontos (2D)  plot3 – gráficos de linhas e/ou pontos (3D)  surf – gráficos de superfície (3D)

 Adicionalmente pode-se acrescentar texto para

caracterizar o gráfico produzido:

 title – define o título do gráfico

 xlabel – define o texto do eixo dos X’s  ylabel – define o texto do eixo dos Y’s

 legend – define texto para distinguir as linhas de um gráfico

(35)

Gráficos

 Exemplo do comando plot: >> t = [0:2:20]';

>> g = 9.81; m = 68.1; cd = 0.25;

>> v = sqrt(g*m/cd) * tanh(sqrt(g*cd/m)*t); >> plot(t, v)

(36)

Gráficos

 Exemplo de caracterização de um gráfico:

>> title('Plot of v versus t') >> xlabel('Values of t')

>> ylabel('Values of v') >> grid

(37)

Gráficos

 Comandos para produzir múltiplas linhas/pontos no mesmo

gráfico:

 hold on – mantém o gráfico desenhado e sempre que é feito um

novo plot acrescenta as próximas linhas/pontos ao gráfico corrente;

 hold off – quando for feito um novo plot apaga o gráfico

corrente e cria um novo gráfico

 Comando para produzir múltiplos gráficos na mesma janela:  subplot(m, n, p) – divide a janela numa matriz mn e fica

com a célula p activa para a criação do próximo gráfico. A

numeração começa no canto superior esquerdo e continua ao longo da linha, só mudando de linha após a última coluna.

 Comando para apagar todos os gráficos:  clf

(38)

Gráficos

 Exemplo de múltiplos plots num único gráfico: >> hold on

>> plot(t, v, 'o') >> hold off

(39)

Gráficos

 Exemplo de múltiplos gráficos na mesma janela:

>> clf

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

>> subplot(1,2,1); plot(sin(t),cos(t)) >> axis square

(40)

Gráficos

 Exemplo de múltiplos gráficos na mesma janela:

>> subplot(1,2,2); plot3(sin(t),cos(t),t); >> title('(b)')

(41)

Caso de Estudo

Análise Exploratória de Dados

(42)

Análise Exploratória de Dados

Problema: a velocidade de um bungee jumper  Modelo diferencial:  Modelo analítico: 0 ) 0 (  v m v c g dt dv d 2

 

       t m gc c gm t v d d tanh

(43)

Análise Exploratória de Dados

Problema: a velocidade de um bungee jumper

t v 0  dvt c v g d t 2 0     cmg

(44)

Análise Exploratória de Dados

 Problema: determinação do coeficiente de

resistência cd de um bungee jumper

Podemos obter uma estimativa de cd se

medirmos a velocidade terminal vt de vários

bungee jumpers com massa m conhecida:

2 t d v mg cm (kg) 83.6 60.2 72.1 91.1 92.9 65.3 80.9 vt (m/s) 53.4 48.5 50.9 55.7 54.0 47.7 51.1

(45)

Análise Exploratória de Dados

 Os dados da tabela podem ser representados pelos

vectores m e vt:

>> m = [83.6 60.2 72.1 91.1 92.9 65.3 80.9]; >> vt = [53.4 48.5 50.9 55.7 54.0 47.7 51.1];

 A aceleração da gravidade é conhecida:

>> g = 9.81;

 Os coeficientes de resistência podem ser determinados

pela equação: >> cd = g*m./vt.^2 cd = 0.2876 0.2511 0.2730 0.2881 0.3125 0.2815 0.3039 2 t d v mg c

(46)

Análise Exploratória de Dados

 Podem-se usar agora funções pré-definidas do MATLAB

para obter alguma informação estatística dos resultados:

>> cdavg=mean(cd), cdmin=min(cd), cdmax=max(cd) cdavg = 0.2854 cdmin = 0.2511 cdmax = 0.3125

 Baseados no valor médio do coeficiente de resistência

cdavg podemos prever a velocidade terminal:

>> vpred = sqrt(g*m/cdavg) vpred =

(47)

Análise Exploratória de Dados

 Qual a qualidade do valor médio obtido para o coeficiente

de resistência? Vamos produzir uma figura com dois gráficos.

 Um gráfico permite a comparação dos valores previstos

para a velocidade terminal com os valores observados:

>> subplot(2,1,1); plot(vt,vpred,'o',vt,vt) >> xlabel('Measured')

>> ylabel('Predicted')

(48)

Análise Exploratória de Dados

 Um segundo gráfico permite verificar se os coeficientes de

resistência estimados são constantes ou estão relacionados com a massa do bungee jumper.

 Acrescenta-se um gráfico dos coeficientes de resistência

estimados em função da massa do bungee jumper:

>> subplot(2,1,2); plot(m,cd,'o') >> xlabel('Mass (kg)')

>> ylabel('Estimated drag coefficient (kg/m)') >> title('Plot of drag coefficient versus mass')

(49)

Análise Exploratória de Dados

 Os coeficientes de resistência estimados parecem aumentar com o aumento da massa do bungee jumper.

 O modelo necessita ser melhorado! cdKd

A

Kd → constante

Referências

Documentos relacionados

Lideranças da advocacia que atuam no interior estão ade- rindo ao Movimento Advo- cacia Unida pela proximida- de que Rodolfo Mota sempre manteve com as subseções da OAB-GO

Dessa forma, Benjamim postula uma verdade para além da história, pois a verdade do passado está naquilo que ele encerra e, por isso, a tarefa do historiador será revelar

Após a elaboração deste projeto, que visou a construção de um instrumento laboratorial que pudesse ser utilizado para determinar a posição de objetos móveis, uma rotina foi seguida

Diante do exposto, este trabalho visa apresentar uma análise do monitoramento dinâmico de um ponto geodésico materializado sobre a estrutura da passarela que liga os campi

Enviar documento de Atos Normativos e documento de Agente Público - Fase III do sistema AUDESP (caso não houver, encaminhar declaração negativa) relativo a Dezembro de

Se você está em dúvida sobre como executar certo comando poderá obter ajuda do Matlab digitando na comando poderá obter ajuda do Matlab digitando na janela de comando: help

O presente trabalho tem como objetivo apresentar uma proposta didática facilitadora no ensino de gráficos no assunto de Função do 1º grau através do uso do

1º - Autorizar o direito de uso dos recursos hídricos, válido pelo prazo de 04 (quatro) anos, a JUCELINO AVELINO MEDEIROS, inscrito no CPF n° 936.529.255-72, com sede na