GET – Engenharia de Produção MINI CURSO MATLAB GET – Engenharia de Produção
AGENDA Objetivo Dados Histórico Funções Layout Gráficos Help 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: 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 >> b=linspace(2,10,5) b = 2 4 6 8 10 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 >> A+B Exemplo: >> A=[ 1 2 3] ans = A = 4 6 8 1 2 3 4 6 8 >> A/B 0.5200 Exemplo: >> A=[ 1 2 3] A = 1 2 3 >> B=[ 3 4 5] B = 3 4 5
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 >> A./B ans = 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>e d = 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 1 2 3 1 2 3 3 4 5 >> B B = >> 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) + B b. 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 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 = a = 1 0 0 1 1 2 3 4 5 6 1 0 0 1 >> a a = 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 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 Significado abs Valor absoluto angle Ângulo de fase conj Complexo conjugado imag Parte imaginária real Parte real
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 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ões Comando 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 barras hist Histograma
GRÁFICOS Plot >> plot(x,y,’Opções de Estilo’) 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 >>t = linspace(0,1,1000); >>a=sin(2*pi*t); 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 Plote o gráfico da função f(x)=2x², sendo o vetor x=[ 0 1 2 3 4 ]. Utilize a cor que desejar. Plote o gráfico de f(x)=sin(x) e g(x)=cos(x), sendo x=linspace(0,2pi,1000), em: a. Duas janelas separadas b. No mesmo gráfico c. Na mesma janela, em gráficos separados
RESOLUÇÃO EXERCÍCIOS >> 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ÍCIOS 2) 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. >> clc close all clear all x=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; else expressão (ões) n; end
PROGRAMAÇÃO a=100; b=40; if ((a+b)>=120) c=a+b; else c=a*b; end 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 a=100; while(a<110) a=a+1; While while (condição) expressão (ões); end Exemplo: a=100; while(a<110) a=a+1; // Neste caso, serão dados 10 loops.
PROGRAMAÇÃO expressão (ões); end a=0; n=5; for i=1:n a=a+1; For for variavel_de_iteração = inicio : fim expressão (ões); end Exemplo: a=0; n=5; for i=1:n a=a+1; //A variável “a” vai sair do loop com o valor 5.
PROGRAMAÇÃO Switch – Case switch variavel case 0 expressão (ões) 1; otherwise expressão (ões) 4; end
PROGRAMAÇÃO a=50; switch a case 0 b=a+100; case 50 b=a; otherwise b=0; Exemplo: a=50; switch a case 0 b=a+100; case 50 b=a; otherwise b=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; m=5; n=3; resultado = soma(m,n); //A variável “resultado” terá valor 8 ao final.
PROGRAMAÇÃO tic programa toc Tempo de Simulação (Tic 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 >> x=[]; %declara o vetor x sendo vazio for 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 3 x=[]; for i=1:33 x=[x i*3]; end %testando os multiplos de 5 no vetor x y=[]; for a=1:33 if(rem(x(a),5)==0) y=[y x(a)];
RESOLUÇÃO EXERCÍCIOS
Dúvidas?