Capítulo 02
Princípios
Básicos do MATLAB
OBJETIVOS
• Aprender como números reais e complexos são atribuídos a variáveis,
• Aprender como atribuir valores a vetores e a matrizes utilizando a atribuição
simples, o operador dois-pontos e as funções linspace e logspace.
• Entender as regras de prioridade para construir expressões matemáticas.
• Compreender o que são funções nativas e aprender mais sobre elas com os
recursos de ajuda do MATLAB
• Aprender como usar vetores para gerar um gráfico simples com base em uma
equação.
Objetivo: Estimar o coeficiente de arraste medindo a
velocidade final de vários saltadores de massa conhecida.
d 2
c
dv g v
dt m
9,81 /
g m s
VOCÊ TEM UM PROBLEMA
BUNGEE JUMPING
0 g c d v t 2
m
t
d
v gm
c
VOCÊ TEM UM PROBLEMA
t
d
v gm
c
No item anterior vimos que a velocidade final pode ser
Expressa na forma:
Isolando o coeficiente de arrasto, temos:
d 2
t
c mg
v
Massa e velocidades terminais para vários saltadores
O AMBIENTE MATLAB
O AMBIENTE MATLAB
O MATLAB usa 3 tipos de janelas principais.
• Command Window ( Janela de comandos)
Usada para entrar comandos e dados.
• Graphics window(s) (Janela Gráfica)
Usada para mostrar gráficos.
• Edit window (Janela de Edição)
Usada para criar e editar arquivos M (programas )
Modo de Calculadora
• A janela de comandos pode ser usada como uma
calculadora para escrever comandos linha por
linha.
>> 55 - 16
ans = 39
• Sempre que um calculo é feito, o MATLAB atribui
o resultado para a variável ans
>> ans + 11
ans = 50
Variáveis MATLAB
• A variável ans pode ser útil em cálculos rápidos, mas
ela é pouco útil na utilização de programas.
• MATLAB permite atribuir valores para variáveis definidas
pelo usuário.
• MATLAB pode armazenar valores individuais e matrizes,
sendo que esses valores podem ser numéricos ou texto.
• MATLAB não exige que você pré-inicialize variáveis. Se
ela não existe, será criada para você.
Escalares
• Para atribuir um valor para uma variável
simplesmente digite o nome da variável, o sinal
de = seguido do valor:
>> a = 4
a = 4
• Observe que a nome da variável deve começar
com uma letra.
• Observe que após a atribuição, o nome e o valor
da variável são impressos na tela para confirmar
Escalares
• Você pode suprimir essa mensagem finalizando a
linha de comando com um ponto e vírgula (;).
• Você pode perguntar ao MATLAB para mostrar
valores armazenados em uma variável digitando
seu nome:
>> a
a = 4
IMPORTANTÍSSIMO
O MATLAB é sensível a maiúsculas e minúsculas. Isto
é, a variável a não é o mesmo que a variável A.
>> a = 4;
a = 4
>> A
Undefined function or variable 'A'.
Did you mean:
>> a
Escalares
• É possível digitar vários comandos na mesma
linha separando-os com vírgula ou com ponto e
vírgula.
>> a=4,A=6;x=1;
a = 4
Números Complexos
• É possível atribuir valores complexos às variáveis usando
a variável i (ou j) para representar a unidade
imaginária.
>> x=2+i*4
x = 2.000000000000000 + 4.000000000000000i
• Existem diversas variáveis pré-definidas, por exemplo: pi
>> pi
ans = 3.141592653589793
Formato de Exibição
• Você pode solicitar ao MATLAB para retornar os valores
usando vários formatos diferentes usando o comando
format .
Exemplos
>> format short; pi
ans =
3.1416
>> format long; pi
ans =
3.14159265358979
>> format short eng; pi
ans =
3.1416e+000
>> pi*10000
ans =
Arranjos, Vetores e Matrizes
• Um arranjo é uma coleção de valores
representados por um único nome de variável.
Podem ser de dois tipos:
• Arranjos de uma dimensão são chamados
vetores.
• Arranjos bidimensionais são chamados matrizes.
• Para se inserir arranjos : usa-se colchetes
• Entradas em uma linha são separadas por
espaço.
• Linhas são separadas por ponto e vírgula
Exemplos de vetores
>> a = [1 2 3 4 5 ]
a =
1 2 3 4 5
>> b = [2;4;6;8;10]
b =
2
4
6
8
10
• Matriz transposta
>> b = [2 4 6 8 10]’
Exemplo de matrizes
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
Também é possível utilizar a tecla ENTER para separar as linhas.
A = [1 2 3
4 5 6
7 8 9]
Exemplo de matrizes
>>A = [[1 2 3]’ [4 5 6]’ [7 8 9]’]
A =
1 2 3
4 5 6
7 8 9
Finalmente, a mesma matriz pode ser construída concatenando (
juntando) os vetores que representam cada coluna.
Comando who
• O comando who irá mostrar uma lista de todas as
variáveis correntes.
>> who
Your variables are:
A a ans b x
Comando who - Detalhes
>> whos
Name Size Bytes Class Attributes
A 1x1 8 double
a 1x5 40 double
ans 5x1 40 double
b 5x1 40 double
x 1x1 16 double complex
Acessando elementos
• Elementos individuais de uma matrizes podem ser lidos
ou definidos individualmente usando o índice de
localização de linha e coluna.
>> b= [2;4;6;8;10]
b =
2
4
6
8
10
>> b(4)
• ans = 8
Acessando elementos
>> A = [[1 2 3]' [4 5 6]' [7 8 9]']
A =
1 4 7
2 5 8
3 6 9
>> A(2,3)
ans = 8
>> A(3,3)
ans = 9
>> A(4,3)
Index exceeds matrix dimensions.
Criação de Matrizes - funções
• Existem algumas funções que auxiliam a criação
de matrizes:
– zeros(r,c) cria uma matrizes de r linhas e c
colunas contendo apenas zeros
– zeros(n) cria uma matrizes de n linhas e n
colunas contend zeros
– ones(r,c) cria uma matrizes de r linhas e c
colunas contendo apenas 1’s
– ones(n) cria uma matrizes de n linhas e n
colunas contendo apenas 1’s.
Exercícios em Sala
01) Determine o tamanho das seguintes matrizes. Verifique suas respostas criando as
matrizes no MATLAB e utilizando o comando whos se necessário. Observe que as
últimas matrizes podem depender das definições de matrizes definidas
anteriormente neste exercício.
a. u [10 20 10 20]
b. v [ 1; 20;3]
c. w [1 0 9; 2 2 0;1 2 3]
d. x [ ' u v ]
e. y (3,3) 7
f. z [ zeros 4,1 ones 4,1 zeros 1, 4 ']
g. v 4 x 2,1
02) Qual o valor de w 2,1 ?
03) Qual o valor de x 2,1 ?
04) Qual o valor de y 2,1 ?
Operador : (dois pontos)
• O operador dois-pontos (:) é útil em vários contextos.
• Se dois-pontos são usados para separar dois números, o
MATLAB gera um conjunto de números entre eles
usando um incremento unitário.
>> t = 1:5
t = 1 2 3 4 5
Operador : ( dois pontos)
• Se dois-pontos são usados para separar três números, o
MATLAB gera um conjunto de números entre o primeiro
e o terceiro utilizando um incremento igual ao segundo
número.
>> t = 1:0.5:3
t = 1.0000 1.5000 2.0000 2.5000 3.0000
>> t = 1:0.7:3
t = 1.0000 1.7000 2.4000
Operador : ( dois pontos)
• O Incremento também pode ser negativo
>> t = 10:-1:5
t = 10 9 8 7 6 5
• Qual o resultado do comando abaixo:
>> t=10:-1:15
Operador : ( dois pontos)
• O operador : também serve para selecionarmos
elementos de arranjos
A = 1 4 7
2 5 8
3 6 9
>> A(2,:)
ans = 2 5 8
Operador : ( dois pontos)
O operador : também serve para selecionarmos elementos
de arranjos
>> t = 10 9 8 7 6 5
>> t(2:4)
ans = 9 8 7
Comandos – linspace
• O comando é utilizado para criação de um vetor linha com um
número específico de pontos entre dois extremos.
linspace(x1, x2, n)
• Irá criar um vetor de n pontos entre x1 e x2
>>linspace(0, 1, 6)
ans = 0 0.2000 0.4000 0.6000 0.8000 1.0000
• Se o n é omitido, são criados 100 pontos.
• Para gerar um vetor coluna podemos usar:
>> linspace(0,1,6)'
Comandos – logspace
• O comando é utilizado para criação de um vetor linha de pontos
logaritmicamente espaçados.
logspace(x1, x2, n)
que gera n pontos logaritmicamente espaçados entre e
>>logspace(-1, 2, 4)
ans =0.1000 1.0000 10.0000 100.0000
>> logspace(1,2,4)
ans =
10.0000 21.5443 46.4159 100.0000
• Se o n é omitido, são criados 50 pontos.
10 x 1 10 x 2
Caracteres (Strings) & Reticências
• Conteúdo alfanumérico (string) é envolto por apóstrofe(')
>> f = ‘Gilberto ';
>> s = ‘Tenani‘
• Unindo duas strings
>> x = [f s]
x = Gilberto Tenani
• Podemos usar reticências (...) para continuar linhas muito longas
>> a = [1 2 3 4 5 ...
6 7 8]
Caracteres (Strings) & Reticências
• Não podemos usar reticências para continuar uma string. Mas
podemos juntar pedações de strings usando reticências
>> texto = [‘Qualquer idiota pode fazer uma regra,' ...
' e qualquer idiota a seguirá']
texto = Qualquer idiota pode fazer uma regra, e qualquer
idiota a seguirá
Operações Matemáticas
• Operações matemáticas em MATLAB podem ser
realizadas com escalares ou matrizes.
• O operadores mais comuns são:
^ Potenciação 4^2 = 8
- Negação -8 = -8
*
/
Multiplicação e
Divisão
2*pi = 6.2832
pi/4 = 0.7854
\ Divisão à
esquerda
6\2 = 0.3333
+
-
Adição e
Subtração
3+5 = 8
3-5 = -2
Ordem das operações
• A ordem das operações é definida primeiro pelo
parênteses, e então pela ordem padrão:
y = -4 ^ 2 resulta y = -16
desde que a potenciação acontece primeiro, mas
y = (-4) ^ 2 resulta y = 16
Números Complexos
• Todas as operações vistas até agora podem ser feitas
com números complexos.
>> x = 2+i*4; (ou 2+4i, ou 2+j*4, ou 2+4j)
>> y = 16;
>> 3 * x
ans = 6.0000 +12.0000i
>> x+y
ans = 18.0000 + 4.0000i
>> x'
Adição e Subtração de Arranjos
>> A=[8 5 4]; B= [10 2 7];
>> C = A + B
C = 18 7 11
>> A =[5 -3 8; 9 2 10]; B =[10 7 4; -11 15 1];
>> C = A + B
C = 15 4 12
-2 17 11
>> C - 8
ans =
7 -4 4
-10 9 3
Multiplicação de Arranjos (*)
• Se A e B são duas matrizes, a operação A*B tem sentido se, e
somente se, o número de colunas da matriz A for igual ao número
de linhas da matriz B. O resultado é uma matriz que possui o
mesmo número de linhas de A e o mesmo número de colunas de
B.
>> A = [1 4 3; 2 6 1; 5 2 8];
>> B = [5 4; 1 3; 2 6];
>> A*B
ans =
15 34
18 32
43 74
>> B*A
Error using *
Inner matrix dimensions must agree.
Multiplicação de Arranjos (^)
• Se A for uma matriz quadrada podemos usar o símbolo ^ para
multiplicar A por ela mesmo um certo número de vezes.
• Para que essa operação tenha sentido é necessário que A seja
uma matriz quadrada.
>> A = [1 2; -2 3];
>> A^2
ans =
-3 8
-8 5
Multiplicação de Arranjos (^)
• Se A for uma matriz quadrada podemos usar o símbolo ^ para
multiplicar A por ela mesmo um certo número de vezes.
• Para que essa operação tenha sentido é necessário que A seja
uma matriz quadrada.
>> A = [1 2; -2 3];
>> A^3
ans =
-19 18
-18 -1
>> A*A*A
ans =
-19 18
-18 -1
Multiplicação de Arranjos (*)
• Dois vetores podem ser multiplicados um pelo outro somente se
possuírem o mesmo número de elementos e se um dos vetores
for um arranjo linha e o outro vetor um arranjo coluna. O
resultado é um arranjo 1x1, ou seja, um escalar. Por isso esse
produto também é chamado de produto escalar.
>> L = [2 5 1]
L = 2 5 1
>> C = [3; 1; 4]
C =
3
1
4
>> L*C
ans = 15
Multiplicação de Arranjos (*)
• O MATLAB possui uma função nativa dot(a,b) que calcula o
produto escalar de dois vetores independente de serem linha ou
coluna.
>> C*L
ans =
6 15 3
2 5 1
8 20 4
>> dot(C,L)
ans = 15
Operações elemento por elemento
• Quando usamos * e ^ em arranjos, as operações matemáticas
seguem rigorosamente as regras da álgebra linear.
• As vezes, nós queremos realizar um cálculo item por item em uma
matriz ou vetor.
• MATLAB define .* e .^ (observe os pontos) como uma
multiplicação ou potenciação elemento por elemento. ( Ambas as
matrizes devem ser de mesma dimensão ou uma delas deve ser
1x1)
Operações elemento por elemento
>> A = [2 6 3; 5 8 4];
>> B = [1 4 10;3 2 7];
>> A.*B
ans =
2 24 30
15 16 28
>> A.^3
ans =
8 216 27
125 512 64
>> A*B
Error using *
Operações elemento por elemento
>> X=[-2:2:10]
X = -2 0 2 4 6 8 10
>> Y=X.^2-4*X
Y = 12 0 -4 0 12 32 60
>> Z = cos(X)
Z = -0.4161 1.0000 -0.4161 -0.6536 0.9602
-0.1455 -0.8391
Operações elemento por elemento
>> Z = [1:2:15]
Z = 1 3 5 7 9 11 13 15
>> Y = (Z.^3+5*Z)./(4*Z.^2-10)
Y =
-1.0000 1.6154 1.6667 2.0323 2.4650
2.9241 3.3964 3.8764
Vetorização
>> D = [1 4 9; 16 25 36; 49 64 81]
D =
1 4 9
16 25 36
49 64 81
>> R = sqrt(D)
R =
1 2 3
4 5 6
Nossa equação tanh d
d
gc
v t gm t
c m
>> t=[0:2:20]';
>> g=9.81; m = 68.1; cd = 0.25;
>> v= sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t)
v =
0
18.7292
33.1118
42.0762
46.9575
49.4214
50.6175
51.1871
51.4560
51.5823
51.6416
Funções Nativas Para Arranjos
• Existem várias funções nativas que você pode usar para cálculos
envolvendo arranjos.
>> A = [ 5 9 2 4]
A = 5 9 2 4
>> mean(A)
ans = 5
• Se A é um vetor, mean(A)retorna o valor médio dos elementos
do vetor.
Funções Nativas Para Arranjos
Funções Nativas Para Arranjos
Pedindo Ajuda
• Existem várias funções nativas que você pode usar para criar e
manipular dados.
• O comando help pode fornecer informação a respeito de uma
função específica ou uma classe
help elmat irá listatodas as funções elementares que trabalham com
matrizes.
help elfun listará todas funções matemáticas elementares, incluindo
trigonometria, exponencial, complexos e outras.
• Você pode usar o comando lookfor para procurer nos arquivos
de ajuda ocorrências de texto e pode ser útil se você não sabe o
nome de uma função.
Gráficos
• MATLAB tem um grande arsenal de funções nativas que
manipulam gráficos.
• Duas dessas funções são plot (para gráficos 2-D ) e
plot3 (para gráficos 3-D).
• Em adição, você pode fazer anotações no gráfico usando
comandos como title, xlabel, ylabel, e legend
.
Exemplo
>> 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)
10 20 30 40 50 60
Exemplo de anotações
>> grid on;
>> title ('Gráfico de v por t');
>> xlabel('Valores de x');
>> ylabel('Valores de y');
10 20 30 40 50 60
Gráfico de v por t
Valores de y
Comando plot
• Caso o usuário decida plotar cada ponto com um
símbolo pode incluir um especificador delimitado por
aspas simples no 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,'o')
10 20 30 40 50 60
Comando plot
• Também é possível controlar a largura da linha, cor, tipo
de marcador
>> plot(t,v,'--dc', 'LineWidth',2,'MarkerSize',10,...
'MarkerEdgeColor', 'k', 'MarkerFaceColor','m');
10 20 30 40 50 60
Comando plot
CORES
Azul b
Verde g
Vermelho r
Ciano c
Magenta m
Amarelo y
Preto K
Branco w
Tipos de linha
Sólida -
Pontilhada :
Traço-ponto -.
Símbolos
Ponto .
Círculo o
Símbolo X x
Mais +
Estrela *
Quadrado s
Diamante d
Comando plot
• O MATLAB permite exibir mais de um conjunto de dados
no mesmo gráfico.
plot(t,v, t,2*v,'o');
20
40
60
80
100
120
Comando plot
• Os gráficos anteriores são apagados toda vez que um
novo comando plot é executado.
• O comando hold on é usado para manter o gráfico
anterior.
• O comando hold off retorna ao modo padrão.
>> plot(t,v)
>> hold on
>> plot (t,v,'o');
Comando subplot(m,n,p)
• Permite dividir a janela do gráfico em subjanelas.
• Divide a janela do gráfico em uma matriz mxn e
seleciona o p-ésimo gráfico como corrente.
>> subplot(1,2,1)
>> subplot(1,2,1);
>> plot(t,v);
>> axis square;
>> title 'gráfico 01';
>> subplot(1,2,2);
>> plot(t,v,'o');
>> title ('Outro gráfico');
0 5 10 15 20
0 10 20 30 40 50 60
gráfico 01
0 10 20 30 40 50 60
Outro gráfico