MINI CURSO MATLAB GET – Engenharia de Produção. AGENDA Objetivo Histórico Layout Help Dados...

Post on 17-Apr-2015

108 views 2 download

Transcript of MINI CURSO MATLAB GET – Engenharia de Produção. AGENDA Objetivo Histórico Layout Help Dados...

MINI CURSO MATLAB

GET – Engenharia de Produção

AGENDA

• Objetivo

• Histórico

• Layout

• Help

• Dados

• Funções

• Gráficos

• Programação

OBJETIVO

Introduzir o MATLAB (MATrix LABoratory) como

ferramenta de programação computacional, usando

como base o cálculo de matrizes, bem como algumas

de suas aplicações.

HISTÓRICO

• Final dos anos 70: Criação da linguagem MATLAB por Clever Moler

• 1983: Criação da ferramenta MATLAB, e da empresa MathWorks, detentora dos seus direitos comerciais

LAYOUT

LAYOUT

Command Window

LAYOUT

Command History Window

LAYOUT

Workspace

LAYOUT

Edit / Debug Window

LAYOUT

Figure Window

HELP

• Ferramenta de ajuda sobre todas as funções, comandos e operadores existentes no MATLAB.

• Escrever na janela de comando:

“help função/comando/operador “

HELP

Help

DADOS

• Linguagem (M-código)

• Simples e objetiva

• Unidade fundamental de dados: matriz (array)

• Índice começa com 1

DADOS

• Usa-se o ponto e vírgula ( ; ) ao final de cada linha de comando caso não se queira mostrar seu processamento na janela de comando

• Para fazer comentários usa-se o símbolo de porcentagem (%)

• Existem inúmeras funções pré-definidas

• Permite ao usuário criar sua própria biblioteca de funções

DADOSÉ possível salvar o código de um programa como um arquivo de texto: MATLAB-Editor

New/M-File

DADOS• Declaração de dados

• Não é necessário declarar o tipo de variável• nome_da_variável=[dados];• Exemplos:

>> matriz1=[1 2 3 4] >> matriz2=[ 3 4 5; 6 7 8]

matriz1 = matriz2 =

1 2 3 4 3 4 5 6 7 8

DADOS• Acessando um elemento da matriz

• nome_da_variavel(linha,coluna)• Exemplo:

>> matriz2=[ 3 4 5; 6 7 8]; >> matriz2(1,2)

ans =4

DADOS• Acessando a última linha ou o último elemento de

uma matriz• Exemplo:

-Último elemento -Última linha>> matriz2(end,end) >>matriz2(end,:)

ans = ans =

8 6 7 8

DADOS• Acessando x elementos de uma linha/coluna da

matriz• Exemplo:

>> matriz2(2,1:2)

ans =

6 7

DADOS

• Outras formas de inicialização de matrizes• nome_da_variável = primeiro:incremento:último• Exemplo:

>> a=1:2:10

a =

1 3 5 7 9

DADOS• nome_da_variavel=linspace

(primeiro,último,número de elementos)• Exemplo:

>> b=linspace(2,10,5)

b =

2 4 6 8 10

DADOS• Operações com escalares e matrizes

• Escalares: Todas as operações (soma, subtração, multiplicação, divisão, potenciação etc) são feitas de forma simples

• Exemplo:

>> a=2; b=3;>> a/b

ans =

0.6667

DADOS

• Matrizes:• Soma e Subtração: matrizes de mesma

dimensão• Multiplicação: número de colunas da

primeira igual ao número de linhas da segunda

• Divisão: matrizes com mesmo número de linhas

• Potência: matrizes quadradas

DADOS

• Exemplo:

>> A=[ 1 2 3]A = 1 2 3

>> B=[ 3 4 5]B = 3 4 5

>> A+Bans =4 6 8

>> A/Bans =0.5200

DADOS

• Operadores Relacionais• Realizam operações de comparação entre

variáveis

Sinal Significado

< Menor

<= Menor ou igual

> maior

>= Maior ou igual

== Igual

~= Diferente

DADOS

• Operando elemento a elemento• As operações são feitas elemento a elemento• Matrizes quadradas• Antes do sinal da operação desejada coloca-se um ponto ( . )• Exemplo:

>> A./B

ans =

0.3333 0.5000 0.6000

DADOS

• Ao utilizar os operadores relacionais, os dados são retornados em forma de matriz, com 0 para falso e 1 para verdadeiro• Exemplo:

>> d= [12 56 78] >> d>ed = ans = 12 56 78 1 0 1

>> e=[ 2 90 22]e =2 90 22

DADOS

• Concatenação de matrizes/vetores

• Consiste em agrupar as variáveis em uma única matriz

• Horizontal: Mesmo número de linhas• Vertical: Mesmo número de colunas• Pode-se também agrupar somente alguns

elementos de determinadas matrizes

DADOS

• Exemplos

>> A >> C=[A;B]A = C =

1 2 3 1 2 3 3 4 5

>> BB = >> C=[B(1,1);A(1,2)]

3 4 5 C = 3>> C=[A B] 2 C = 1 2 3 3 4 5

DADOS – Exercícios

1) Declare as seguintes matrizes:

A= B= [ 1 3 5 ] [10] [ 2 4 6 ] [12] [ 9 8 7 ] [14]

2) Realize as operações a. A(:,1) + Bb. A(1 ,:) – B’c. A*B

DADOS – Exercícios

3) Concatene as matrizes utilizando B’ (matriz transposta).

4) Divida os elementos da matriz A por 2.

5) Concatene as duas primeiras linhas da matriz A com a matriz B’ (transposta).

6) Declare uma matriz com 10 elementos entre 0 e 1, usando “linspace”.

RESOLUÇÃO EXERCÍCIOS

RESOLUÇÃO EXERCÍCIOS

RESOLUÇÃO EXERCÍCIOS

FUNÇÕES• Funções Prontas do MATLAB

• Funções de inicialização de matrizes

Funções Ações

zeros(m,n) Gera uma matriz m x n de zeros.

ones(n) 

Gera uma matriz n x n de um (1).

ones(m,n) Gera uma matriz m x n de um (1).

ones(size(array2)) Gera uma matriz de um (1) do mesmo tamanho do array2.

eye(m,n) Gera uma matriz identidade m x n

length(array2) Retorna o tamanho do vetor, ou a maior dimensão de um array bidimensional.

size(array2) Retorna dois valores especificando o numero de linhas e colunas em array2. 

input (‘Enter data: ’) Recebe dados de entrada do teclado.

FUNÇÕES• Exemplos

>> eye(2)ans =

1 0 0 1

>> aa =

1 2 3 4 5 6

>> size(a)ans =

2 3

FUNÇÕES

• Funções Trigonométricas

• Funções Exponenciais

Funções Significado

sin Seno

asin Arco seno

cos Cosseno

acos Arco cosseno

tan Tangente

atan Arco tangente

Funções Significado

exp Exponencial

log Logaritmo natural

log10 Logartimo base 10

sqrt Raiz quadrada

FUNÇÕES• Funções Complexas • Funções de Aproximação

Funções Significado

abs Valor absoluto

angle Ângulo de fase

conj Complexo conjugado

imag Parte imaginária

real Parte real

Funções Significado

fix Aproximação na direção de zero

floor Aproxima na direção de -∞

ceil Aproxima na direção de +∞

round Aproxima para o inteiro mais próximo

rem Resto da divisão

FUNÇÕES

• Outras funções matemáticas

• Derivada: necessário criar a função como char, usa-se apóstrofe

• Exemplo :

>> f='x^2+3' >> derivada=diff(f)

f = derivada =

x^2+3 2*x

FUNÇÕES

• Integral: Integral Indefinida• Exemplo:

>> f = '3*x^2 - 15*x + 18' % Cria a função como char

f =3*x^2 - 15*x + 18

>> integral = int(f) % faz a integral da função

integral =x^3-15/2*x^2+18*x

FUNÇÕES

• Aleatória: gera matrizes de números aleatórios rand(i,j) : gera matriz de i linhas, j colunas, com

elementos que variam de 0 a 1 randint(i,j,[mínimo máximo]) : gera matriz de i linhas, j

colunas, com elementos inteiros que variam de mínimo a máximo

Exemplo:

>>a = rand(1,3) a = [0.0344 0.4387 0.3816]

>>b = randint(1,4,[1 100])b = [77 80 19 49]

FUNÇÕES – Exercícios

1) Calcule a integral de f(x)=cos(x) e de f(x)=3x²+5x

2) Calcule a derivada de f(x)=cos(x) e de f(x)=3x²+5x

RESOLUÇÃO EXERCÍCIOS

RESOLUÇÃO EXERCÍCIOS

GRÁFICOS

• Existe uma extensa variedade de formas gráficas para representar vetores e matrizes no MATLAB

• Possível gerar gráficos em duas ou três dimensõesComando Descrição

plot Plotar linear

loglog Gráfico em escala logarítmica

semilogy Gráfico em escala semi-logarítmica (eixo y)

semilogx Gráfico em escala semi-logarítmica (eixo x)

fill Desenhar polígono 2D

polar Gráfico em coordenadas polar

bar Gráfico de barrashist Histograma

GRÁFICOS

• Plot• Mais comum em plotagens bidimensionais

>> plot(x,y,’Opções de Estilo’)

• Exemplo:

>> t = linspace(0,1,1000);>> plot(t,sin(2*pi*t), ’red’)

GRÁFICOS

Gráfico Seno

GRÁFICOS

• Para produzir um gráfico linear dos elementos de um vetor Y pelos índices de X, deve-se utilizar:

>>plot(y)

• Exemplo:

>> y = [5 4 6 9]>> plot (y)

%Pontos marcados:%(1,5) (2,4) (3,6) (4,9)

GRÁFICOS

Figure/Exemplo

GRÁFICOS

• A cada comando “plot”, um novo gráfico substitui o anterior. Para que isso não ocorra, existem três opções de comando:

Figure

Hold on/ Hold off

Subplot

GRÁFICOS Figure : Abre uma nova janela onde o novo gráfico

será gerado

Exemplo:

>> x=[ 1 2 3 4];>> y=[ 2 4 6 8];>> plot (x,y)>> figure>> plot (y,x)

GRÁFICOS

Hold on / Hold off: sobrepõe gráficos

Exemplo:>>t = linspace(0,1,1000);>>a=sin(2*pi*t);>>b=cos(2*pi*t);>>plot(a);>>hold on>>plot(b);>>hold off

GRÁFICOS

Gráfico Hold on/Hold off

GRÁFICOS

Subplot: Adiciona numa mesma janela outros gráficos

– Divide a janela em a x b gráficos– Coloca a curva no p-ésima gráfico

>>Subplot (a,b,p)

GRÁFICOS

Exemplo

>>t = linspace(0,1,1000);>>a=sin(2*pi*t);>>b=cos(2*pi*t);>>subplot(2,1,1)>>plot(a)>>subplot(2,1,2)>>plot(b)

GRÁFICOS

Gráfico Subplot

GRÁFICOS

• fplot• O comando fplot pode ser utilizado para plotar

gráficos de funções• fplot(‘função’,[intervalo de valores], opções de

estilo);• Exemplo>> fplot('cos(x)',[0,pi],'green')

GRÁFICOS

Gráfico fplot

GRÁFICOS

• Existem alguns comandos para melhorar a aparência dos gráficos e auxiliar na identificação dos dados

• title (inclui um título ao gráfico)• xlabel (permite que o eixo das abscissas do gráfico seja identificado)• ylabel (permite que o eixo das ordenadas do

gráfico seja identificado)

GRÁFICOS

• text (adiciona um texto na posição indicada)>>text (x,y, 'texto desejado')

• Exemplo:>> x=[ 4 8 12 16];>> y=[ 1 2 3 4];>> plot(x,y,'green')>> xlabel('x');>> ylabel('y');>> text(8,2,'(8,2)')

GRÁFICOS

Gráfico Comandos Especiais

GRÁFICOS – Exercícios

1) Plote o gráfico da função f(x)=2x², sendo o vetor x=[ 0 1 2 3 4 ]. Utilize a cor que desejar.

2) Plote o gráfico de f(x)=sin(x) e g(x)=cos(x), sendo x=linspace(0,2pi,1000), em:

a. Duas janelas separadasb. No mesmo gráficoc. Na mesma janela, em gráficos separados

RESOLUÇÃO EXERCÍCIOS

1) >> clc>> close all>> clear all>> x=[0 1 2 3 4];>> y=2.*x.^2;>> plot(x,y,'blue')

RESOLUÇÃO EXERCÍCIOS

RESOLUÇÃO DOS EXERCÍCIOS

2) a. >> clc>>close all>> clear all>>x=linspace(0,2*pi,1000);>>y=sin(x);>>z=cos(x);>>plot(x,y,'green');>>figure>>plot(x,z,'red');

RESOLUÇÃO EXERCÍCIOS

RESOLUÇÃO EXERCÍCIOS2)b.>> clc>>close all>>clear all>>x=linspace(0,2*pi,1000);>>y=sin(x);>>z=cos(x);>>plot(x,y,'green');>>hold on>>plot(x,z,'red');>>hold off

RESOLUÇÃO EXERCÍCIOS

RESOLUÇÃO EXERCÍCIOS

2)c.>> clcclose allclear allx=linspace(0,2*pi,1000);y=sin(x);z=cos(x);subplot(1,2,1);plot(x,y,'green');subplot(1,2,2);plot(x,z,'red');

RESOLUÇÃO EXERCÍCIOS

PROGRAMAÇÃO

• Operadores Lógicos:

PROGRAMAÇÃO

• Comandos de limpeza

CLC – Limpa a tela de programação

CLEAR ALL – Limpa todas as variáveis armazenadas

CLOSE ALL – Fecha todas as janelas abertas

PROGRAMAÇÃO

• Indentação Permite que o código digitado no editor seja

organizado de acordo com a hierarquia dos comandos

A hierarquização é feita tendo como base o espaçamento das margens de cada linha

Para indentar um código, basta selecioná-lo, clicar com o botão direito do mouse e escolher a opção “Smart Indent”

PROGRAMAÇÃO

• Saída de dados

• Existem alguns comandos que possibilitam a saída de dados, bem como permitem que o usuário os insira

• Os mais utilizados são disp, input, fprintf

PROGRAMAÇÃO

disp• O comando disp permite que mensagens sejam

exibidas ao usuário• disp(‘mensagem a ser exibida’);• Exemplo

>> disp('MINI CURSO DE MATLAB');MINI CURSO DE MATLAB>>

PROGRAMAÇÃO

input• O comando input permite que o usuário insira dados• Usado para trocar o valor de variáveis sem alterar o

código do programa• Exemplo

>> b=input('Insira o valor de b:');Insira o valor de b:

PROGRAMAÇÃO

fprintf• Método mais simples para saída de dados• Permite a combinação de frases com variáveis

numéricas de uma dimensão (escalar ou elemento de matriz)

• Exemplo

>> a=10;>> fprintf('o valor de a é %d',a);o valor de a é 10>>

PROGRAMAÇÃO

• Processos iterativos

If / If-Else

if (condição1)expressão (ões) 1;

elseif (condição2)expressão (ões) 2;

elseexpressão (ões) n;

end

PROGRAMAÇÃO

Exemplo:

a=100;b=40;

if ((a+b)>=120)c=a+b;

else c=a*b;

end// O valor de “c” ao final, será 140.

PROGRAMAÇÃO

While

while (condição)expressão (ões);

end

Exemplo:

a=100;while(a<110)

a=a+1;end// Neste caso, serão dados 10 loops.

PROGRAMAÇÃO

For

for variavel_de_iteração = inicio : fimexpressão (ões);

endExemplo:

a=0; n=5;for i=1:n

a=a+1;end//A variável “a” vai sair do loop com o valor 5.

PROGRAMAÇÃO

Switch – Case

switch variavelcase 0

expressão (ões) 1;case {1, 2}

expressão (ões) 2;case 3

expressão (ões) 3;otherwise

expressão (ões) 4;end

PROGRAMAÇÃO

Exemplo:

a=50;switch a

case 0b=a+100;

case 50b=a;

otherwiseb=0;

End//Ao final, b terá seu valor igual a 50

PROGRAMAÇÃO

• Criando Funções

function saida = nome_da_funcao(entrada) expressões;

*Os arquivos de função devem ser salvos com o mesmo nome dado à função*Se houver mais de uma entrada, separar por vírgulas*Se não deseja retornar nada, colocar apenas o nome e a(s) entrada(s)

PROGRAMAÇÃO

Exemplo:

Função: function total = soma(a,b)

total= a+b;

Programa:m=5; n=3;resultado = soma(m,n);

//A variável “resultado” terá valor 8 ao final.

PROGRAMAÇÃO

• Tempo de Simulação (Tic Toc)

tic

programa

toc

*A utilização do tic toc na programação faz com que o MATLAB mostre o tempo de duração da simulação que ocorreu entre eles

PROGRAMAÇÃO

• Modo Debug• É usado para acompanhar o desenvolvimento do

programa, passo a passo, no Editor, após este ter sido salvo.

• Utilizando:• Clicar no traço ao lado do número referente à linha a partir

da qual se deseja acompanhar. Aparecerá uma bolinha vermelha.

• Clicar em “Debug” no Barra de Menu e em “Run”. Aparecerá uma setinha verde na linha em que o programa está parado.

• Dar F10 para que o programa prossiga para a próxima linha.

PROGRAMAÇÃO

Editor/Debug

PROGRAMAÇÃO

• Observações:

• Para terminar o modo debug, clicar em “Debug” e em “Exit Debug Mode”.

• A cada passo do modo debug, pode-se ver os valores contidos em cada variável ao posicionar a seta do mouse em cima dela.

PROGRAMAÇÃO - Exercícios

1) Faça um programa, utilizando alguma estrutura de repetição, que armazene, em um vetor, todos os números múltiplos de 3, de 0 a 100.

2) Do vetor criado no exercício anterior, faça um programa que crie outro vetor, com apenas os números múltiplos de 5. Ou seja, o vetor novo terá os múltiplos de 3 e 5.

RESOLUÇÃO EXERCÍCIOS

1) >> x=[]; %declara o vetor x sendo vaziofor i=1:33 %existem 33 múltiplos de 3 entre 0 e 100

x=[x i*3];end

RESOLUÇÃO EXERCÍCIOS

RESOLUÇÃO EXERCÍCIOS

2) >> %multiplos de 3x=[];for i=1:33

x=[x i*3];end%testando os multiplos de 5 no vetor xy=[];for a=1:33

if(rem(x(a),5)==0)y=[y x(a)];

endend

RESOLUÇÃO EXERCÍCIOS

Dúvidas?