Post on 13-Mar-2016
description
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ícios1) 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 matrizesFunçõ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 charf =3*x^2 - 15*x + 18
>> integral = int(f) % faz a integral da funçãointegral =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ÍCIOS2) 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ÍCIOS2)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ÇÃOExemplo: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
Whilewhile (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
Forfor variavel_de_iteração = inicio : fimexpressão (ões);end
Exemplo: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ÇÃOSwitch – Case
switch variavelcase 0expressão (ões) 1;case {1, 2}expressão (ões) 2;case 3expressão (ões) 3;otherwiseexpressã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ÍCIOS2) >> %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)];end
end
RESOLUÇÃO EXERCÍCIOS
Dúvidas?