Sie sind auf Seite 1von 34

Tutorial Básico de

MATLAB
Aluno do PPGEE: Anderson Tregancini Junior
UNESP Campus - Experimental de São João da Boa Vista
Sumário
 Motivação;
 Framework do MATLAB;
 Declarando Variáveis e seus tipos;
 Operações Matemáticas/Lógicas;
 Variáveis Predefinidas;
 Comandos úteis da Janela de trabalho;
 Funções Matemáticas: Trigonométricas, Elementares, Aproximações;
 Vetores/Matrizes;
 Variáveis Simbólicas;
 Estruturas de repetição e decisão;
 Gráficos.
Motivação

 Por que quero utilizar o MATLAB?


 Relativamente fácil de aprender;
 Podemos utiliza-lo como uma calculadora ou como uma linguagem de programação;
 Bom desempenho para quando trabalhamos com matrizes;
 Linguagem interpretada: erro são fáceis de serem detectados e consertados;
 Toolboxes.

 Por que não quero utilizar o MATLAB?


 Linguagem interpretada: tempo de execução mais longo;
 Projetada para computação científica, não sendo maleável para outras aplicações
( adicionar texto de análise, montar apresentações);
 Não é gratuita $$$;
Framework
Framework
Declaração e tipos de variáveis
Tipo Observações Exemplo

Numérica Por padrão: >> x = 9.3


-1x1 tipo double;
x=
-format short.
9.3000
Caractere - tipo char; >> letra = 'A'
-deve ser declarado entre aspas
letra =
simples.
'A’

Palavra - Tipo string; >> word = "MATLAB"


- Deve ser declarado entre aspas
word =
duplas.
"MATLAB"
Lógica - 1x1 tipo logical; >>Bool = true >>Bool2 = false
- Definida por true (1) ou false (0)
Bool = Bool2 =
logical logical
1 0
Números Complexos Por padrão: >> c=3+j*4
-1x1 tipo complex double;
c=
-format short.
- Pode ser tanto o “i” quanto o “j” 3.0000 + 4.0000i
Declaração e tipos de variáveis
 Vale destacar que podemos mudar a precisão que uma variável numérica nos é mostrado:

Formato Descrição Exemplo

format short (padrão) 4 dígitos decimais >> format short


>> x = 9.3

x=
9.3000
format long 15 dígitos decimais >>format long
>> x = 9.3
x=
9.300000000000001

o Também existem format bank (2 dígitos decimais), format rat (aproximação racional) etc.

 Podemos também forçar uma determinada variável para outro tipo:

Tipo Sintaxe Exemplo


-int8, int16, int32, int64 >> y = int32(x) >> y =string(x)
-uint8, uint16, uint32, uint64; y= y=
“Tipo”(valor/variável)
-single, -double (padrão); int32 string
-string, char; 9 "9.3"
Operações Matemáticas básicas
Operação Descrição Exemplo

+ Adição >> S= 1 + 8.5


S=
9.5000
- Subtração >> s = 1 - 8.5
s=
-7.5000
* Multiplicação >> mul = 2*2.5
mul =

5
/ ou \ Divisão >> div = 5/2 >> div2 = 2\5

div = div2 =

2.5000 2.5000
^ Potenciação >> elev = 2^3

elev =
Obs.:
8 Ordem de precedência:
mod(a,b) Resto da Divisão de “a” por “b” >> res = mod(5,2) 1° Parênteses;
2° Potenciação;
res = 3° Multiplicação/Divisão;
1 4° Adição/Subtração.
Operações Lógicas/Comparação
Operação Descrição Exemplo

a&b “a” E “b” >> A = true; B = false; >> A = true; B = false; >> A = true; B = false;
and(a,b) >> M = A&B >> M = and(A,B) >> M = A&&B
a && b M= M= M=
logical logical logical
0 0 0
a|b “a” OU “b” >>N = A|B >>N = or(A,B) >>N = A||B
or(a,b)
a || b N= N= N=

logical logical logical

1 1 1
~a “a” NEGADO >> O = ~A >> O = not(A)
not(a)
O= O=

logical logical

0 0
xor(a,b) “a” OU “b” EXCLUSIVO >>P = xor(A,B)
P=

logical

1
Operações Lógicas/Comparação
Operação Descrição Exemplo

IGUALDADE >> C = 9.3; D = 8.5; >> C = 9.3; D = 8.5;


se : >>Q = (C == D) >>Q = (C ~= D)
a == b “a” igual a “b”
Q= Q=
se : logical logical
a~=b “a” diferente de “b” 0 1
SUPERIORIDADE >>R = (C>D) >>R = (C<D)
se :
a>b “a” maior que “b” R= R=

logical logical
se :
a<b “a” menor que “b” 1 0
SUPERIORIDADE/IGUALDADE >>S_1 = (C>=D) >>S_1= (C<=D)
se :
a >= b “a” maior OU igual a “b” S_1 = S_1 =

logical logical
se :
a <= b “a” menor OU igual a “b” 1 0

>>E = 9.3; >>E = 9.3;


>>S_2 = (C >= E) >>S_2 = (C <= E)
S_2 = S_2 =
logical logical
1 1
Variáveis predefinidas
Variável Descrição Exemplo

ans Variável auxiliar que retorna resultado de uma >> 10*2.5


operação quando nenhuma variável é ans =
declarada
25
eps Variável que retorna a menor precisão relativa >> accuracy = eps
entre dois números do tipo double (padrão). accuracy =
2.2204e-16
i, j Usados para representar os números >> x = j*4 >> x = i*4
imaginários/complexos
x= x=

0.0000 + 4.0000i 0.0000 + 4.0000i


Inf Infinito ∞ >> Inf >> 1/0
ans = ans =
Inf Inf
NaN Not-a -Number >> nan >> 0/0
ans = ans =
NaN NaN

pi Número 𝜋 >> val = pi


val =
3.1416
Comandos úteis
Comando Descrição

clc - apaga a janela de comando

clear - apaga todas as variáveis declaradas

clear “variável” - apaga uma variável específica


help “comando” - informações a respeito de um determinado comando

close - fecha a ultima janela de um gráfico aberta

save “variável” - salva (.mat) uma variável no diretório atual

load “variável” - carrega uma variável (.mat) se presente no diretório atual

whos - mostra todas as variáveis declaradas, o seu tipo e tamanho


Funções Matemáticas: Elementares
Operação Descrição Exemplo

sqrt(x) raiz quadrada de “x” >> x = 100;


>> y = sqrt(x)
y=
10
exp(x) exponencial de “x” (ex ) >> a = 3;
>> z = exp(-a)
z=
0.0498
abs(x) módulo de “x” >> v1 = abs(-a) >> b = 4; >> t_rad = angle(a+j*b)
v1 = >> v2 = abs(a+j*b) t_rad=
angle(x) fase de “x”
v2 =
3 0.9273
5
real(x) parte real de um número complexo >> v3 = real(a+j*b) >> v4 = imag(a+j*b)
v3 = v4 =
imag(x) parte imaginário de um número complexo
3 4
log(x) logaritmo natural de “x” ( base (e)) >> f = log(exp(1)) >> f2 = log2(4) >> f3 = log10(x)
log2(x) logaritmo de “x” na base 2 f= f2 = f3 =
log10(x) logaritmo de “x” na base 10
1 2 2
factorial(x) fatorial de “x” >>f3 = factorial(a)
f=
6
Funções Matemáticas: Trigonométricas
Operação Descrição Exemplo

sin(x) - seno de x (em radianos) >> x = pi/2 >> z= asin(y)


>> y= sin(x) z=
asin(x) - arco seno de x (em radianos) y= 1.5708
1
cos(x) - cosseno de x (em radianos) >> y = cos(x) >> z = acos(y)
y= z=
acos(x) - arco cosseno de x (em radianos)
6.1232e-17 1.5708
tan(x) - tangente de x (em radianos) >> y = tan(x) >> z = atan(y)
y= z=
atan(x) - arco tangente de x (em radianos)
1.6331e+16 1.5708

o Obs¹.: equivalentemente temos os representantes da: cossecante (csc(x), acsc(x)), secante (sec(x), asec(x)), e
cotangente (cot(x), acot(x));

 Obs².: podemos trabalhar diretamente com os valores em graus, adicionando na a letra “d” no fim dos
comandos apresentados acima. Ex.:
Operação Descrição Exemplo

sind(x) - seno de x (em graus) >> x = 90 >> z= asind(y)


>> y= sind(x) z=
asind(x) - arco seno de x (em graus) y= 90
1
Funções Matemáticas: Aproximações
Operação Descrição Exemplo

round(x) - aproxima “x” para o inteiro mais >> x = 1.932; >> y=round(-x)
próximo >> y=round(x) y=
y= -2
2
fix(x) - aproxima “x” para o inteiro mais >> y2=fix(x) >> y2=fix(-x)
próximo de “0” (zero) y2 = y2 =
1 -1
ceil(x) - aproxima “x” para o inteiro mais >> y3=ceil(x) >> y3=ceil(-x)
próximo do ∞ (infinito)
y3 = y3 =
2 -1
floor(x) - aproxima “x” para o inteiro mais >> y4=floor(x) >> y4=floor(-x)
próximo do −∞ (infinito negativo)
y4 = y4 =
1 -2
Declarando Vetores/Matrizes
Sintaxe Descrição Exemplo

Vetor: >> vl = [0, 2, 4, 6, 8, 10] >> vc = [0;1;2;3] >> vw = [true, false]


[a1 , a2 ,..., an ] -vetor em linha (elementos devem ser vl = vc = vw =
separados por “,”;
[a1 ; a2 ;...; an ] -vetor em coluna (elementos devem ser 0 2 4 6 8 10 0 1×2 logical array
separados por “;”) 1 1 0
2
3
Matriz: -Segue a lógica acima: “,” para separar >> M = [0, 1, 2; 3, 4, 5; 6, 7, 8] >> Mw = ['A','b';'c','D']
[a11 , a12 ,..., a1𝑛 ; elementos em uma linha, “;” para gerar M= Mw =
a21 , a22 ,..., a2𝑛 ; novas linhas.
⋮⋱ 0 1 2 2×2 char array
am1 , am2 ,..., am𝑛 ] 3 4 5 'Ab'
6 7 8 'cD'

 Existem outras maneiras de criar vetores/matrizes numéricos:


Sintaxe Descrição Exemplo

“a1 ”:”passo”:” an ” -Cria um vetor que vai de a1 à an de em >> vl =0:2:10 >> M = [0:2; 3:5; 6:8]
um incremento de “passo”.
vl = M=
Obs¹.: se o valor de “passo” é omitido, o
incremento padrão é unitário. 0 2 4 6 8 10 0 1 2
3 4 5
linspace("a1 ", "a𝑛 ",”num_elem”) -Cria um vetor que vai de a1 à an com >> vl = linspace(0,10,6) 6 7 8
“num_elem” elementos entre eles vl =
Obs².: se o valor de “num_elem” é omitido, Obs³.: as linhas devem ter mesmo número de
o valor padrão considerado é 100 0 2 4 6 8 10 elementos
Endereçamento dos vetores/matrizes
Sintaxe Descrição Exemplo

Elemento de um array >> vet = [0, 2, 4, 6, 8, 10] >> mat = [0:2; 3:5; 6:8]
Vetor: vet = mat =
vet(n) -“n”-ésimo elemento do vetor “vet”;
0 2 4 6 8 0 1 2
Matriz:
-elemento da “m-ésima linha e “n”-ésima coluna, 3 4 5
mat(m, n) >>vet(4)
ou seja, coordenada (m,n) da matriz “mat”; 6 7 8
ans =
>> mat(2,2)
6
ans =
4
Intervalo de elementos de um array >> vet(2:4) >> mat(2:3, 1:2)
Vetor:
ans = ans =
vet(n:p) - elementos do vetor “vet” que vão da “n”-ésima
posição à “p”-ésima posição”; 2 4 6 3 4
Matriz:
6 7
mat(m:q, n:p) - elementos da matriz “mat” contidos da linha “m”
até a “q”, e da coluna “n” até a “p”

Exemplos de outras variações >> mat(2:3, :) >> mat(:, 3)


mat(m:q, :) - elementos da matriz “mat” contidos da linha “m” ans = ans =
até a linha “q”, em todas as colunas.
3 4 5 2
mat(:, n) - elementos da matriz “mat” contidos em todas as 6 7 8 5
linhas e na coluna “n”, 8
Funções para análise e modificação de arrays
Sintaxe Descrição Exemplo

ones(m,n) - matriz de 1’s com dimensão (m x n) >> M1 = ones(2,2) >> M0 =zeros(2,2) Me = eye(2)
zeros(m,n) - matriz de 0’s com dimensão (m x n) M1 = M0 = Me =
eye(n) - matriz identidade com dimensão (n x n) 1 1 0 0 1 0
1 1 0 0 0 1
length(x) - retorna o numero de elementos no vetor “x” >>x = [1 2 5 9]; >> [m,n] = size(Me)
>> z = length(x)
size(X) - retorna as dimensões da matriz “X” m=
z= 2
4 n=
2
reshape(X,m,n) - rearranja uma matriz “X” de dimensão (r x s) para uma >> Me_2 = reshape(Me, 1, 4)
nova dimensão (m x n). Obs.: r*s == m*n Me_2 =
1 0 0 1
diag(x) - quando “x” é um vetor, cria uma matriz quadrada com os >> X = diag(x) >> x2 = diag(X)
elementos de “x” na diagonal; X= x2 =
diag(X) - quando “X” é uma matriz, gera um vetor coluna com a 1 0 0 0 1
elementos da diagonal de “X”; 0 2 0 0 2
0 0 5 0 5
0 0 0 9 9
transpose(X) - transposta da matriz/vetor “X” >> x2_T = transpose(x2) >> x2_T = x2’
X’ x2_T = x2_T =
1 2 5 9 1 2 5 9
Operações matemáticas com arrays:
adição/subtração e multiplicação
Sintaxe Descrição Exemplo

A+B - Soma matrizes A e B >> A = [1, 3; 2, 4]; >> D = A-B >> E = [2 5] >> F = [2; 5];
>> B = [1, 2; 4, 3];
A–B - Subtrai matriz B da A D= E= >> A + F
>> C = A+B
0 1 2 5 ans =
Obs¹.: As matrizes devem ser das mesmas dimensões; C= -2 1
Obs².: Podemos ainda somar/sub. uma matriz com um >> A + E 3 5
2 5
vetor desde que este tenha o mesmo núm. de linhas 7 9
6 7 ans =
ou colunas da matriz.
3 8
4 9
A*B - Multiplicação das matrizes “A” e” B” >> A*B >> a = 2;
Obs.: (#colunas de “A”) == (#linhas de ”B”) >> a*A
ans =
a*A - Multiplicação da matriz “A” e constante “a” 13 11 ans =
18 16 2 6
4 8
Operações matemáticas com arrays:
divisão
Ex.: Considerando o sistema linear:
4𝑥 − 2𝑦 + 6𝑧 = 8
ቐ 2𝑥 + 8𝑦 + 2𝑧 = 4
6𝑥 + 10𝑦 + 3𝑧 = 0

Podemos representar esse sistema linear na forma matricial de duas formas:


A*X = B X’*C = D
4 −2 6 𝑥 8 4 2 6
2 8 2 𝑦 = 4 ou 𝑥 𝑦 𝑧 − 2 8 10 = 8 4 0
6 10 3 𝑧 0 6 2 3

Sintaxe Descrição Exemplo

Divisão de matrizes: >> A = [4 -2 6; 2 8 2; 6 10 3]; >> C = [4 2 6; -2 8 10; 6 2 3];


X = A\B -left division: “B” divido por “A” >> B = [8; 4; 0]; >> D = [8 4 0];
>> X =A\B >> X = D/C
X = D/C -right division: “D” divido por “C”
X= X=

-1.8049 -1.8049 0.2927 2.6341


0.2927
2.6341

 O MATLAB já faz a divisão entre matrizes diretamente, mas os também existem os comandos para fazer a divisão da forma
tradicional, (A*B^-1 ), que é encontrando a partido do determinando ( det(B) ) e matriz inversa ( inv(B) ) etc.
Operações matemáticas com arrays:
elemento à elemento (“.”)
Sintaxe Descrição Exemplo

A.*B - multiplicação elemento-à-elemento da matriz “A” >> A = [1, 3; 2, 4];


com a “B”; >> B = [1, 2; 4, 3];
>> A.*B
ans =
1 6
8 12
A./B - divisão elemento-à-elemento da matriz “A” pela >> A./B >> B.\A
matriz “B” ans = ans =
A.\B
1.0000 1.5000 1.0000 1.5000
0.5000 1.3333 0.5000 1.3333
A.^B - cada elemento matriz “A” elevado por seu respectivo >> A.^B
elemento da “B” ans =
1 9
16 64
Funções úteis para quando trabalhamos
com arrays
Sintaxe Descrição Exemplo

mean(x) - média dos elementos do vetor “x”; >> x = [0.6376 0.8483 1.0157 0.1710];
>> mu_x = mean(x)
mu_x =
0.6682
max(x) - retorna o elemento e o índice do maior >> [max_x, arg] = max(x) >> [min_x, arg2] = min(x)
elemento do vetor “x”; max_x = min_x =
min(x) - retorna o elemento e o índice do menor 1.0157 0.1710
elemento do vetor “x”;
arg = arg2 =
3 4
std (x) - desvio padrão dos elementos do vetor “x” >> sigma_x = std(x)
sigma_x =
0.3658
sum(x) - soma todos os elementos de um vetor “x” >> sum(x) >>prod(x)
ans = ans =
prod(x) - multiplica todos os elementos de um vetor “x”
2.6726 0.0940
Funções úteis para quando trabalhamos
com arrays (cont.)
Sintaxe Descrição Exemplo

dot(a,b) - produto escalar entre os vetores “a” e “b” >> a = [1 2 3]; >> z_2 = a*b’
>> b = [3 4 5];
a*b’ z_2=
>> z = dot(a,b)
26
z=
26
sort(x) - coloca os elementos do vetor “x” em ordem >> x = [0.6376 0.8483 1.0157 0.1710]; >> sort(x, ’descend)
crescente >> sort(x) ans =
ans =
sort(x, ’descend’) - coloca os elementos do vetor “x” em ordem 1.0157 0.8483 0.6376 0.1710
decrescente 0.1710 0.6376 0.8483 1.0157
>> [x_ordem, idx]=sort(x’descend)
Obs¹: também rearranja vetores de >> [x_ordem, idx]=sort(x) x_ordem =
characteres/strings em ordem alfabética x_ordem = 1.0157 0.8483 0.6376 0.1710
0.1710 0.6376 0.8483 1.0157 idx =
idx = 3 2 1 4
4 1 2 3
median(x) - mediana dos elementos do vetor “x” >> median(x)
ans =
0.7429
Variáveis simbólicas
 Inicialmente precisamos definir as variáveis simbólicas:

>> syms x y z k
Sintaxe Descrição Exemplo

diff(y,x,n) - derivada de ordem “n” uma função “y” em >> y = 2*x^2;


“x” >>dy = diff(y,x)
dy =
4*x
int(y,x,[a b]) - integral definida de uma função “y” em z =-2*x/(1+x^2)^2; >> int(z,x)
função de “x”, no intervalo entre “a” e “b”. >> int(z,x,[0,1]) ans =
Obs.: se “[a b]” for omitido, a integral ans =
será indefinida 1/(x^2 + 1)
-1/2
symsum(y, k, a, b) - somatório simbólico de uma função “y” >> symsum(x^k/factorial(k), k, 0, Inf)
para “k” variando de “a” até “b” ans =
exp(x)
subs(y, x, a) - substituição simbólica: Substitui o “x”, na >> subs(dy,x,2)
função simbólica “y”, por um valor “a” ans =
8
symplify(y) - simplifica, se possível,l uma função >> simplify(sin(x)^2 +cos(x)^2)
simbólica ans =
1
 Outras funções interessantes para simplificar expressões: expand(x), fator(x), collect(x), combine(x) etc
Limitações da janela de comando

 Para tarefas elaboradas a janela de comando se torna inviável;

 Não é nenhum pouco interativo;

 Para mudar/testar novamente alguma comando, todos as funções devem ser executados novamente;

Solução: criar e trabalhar em um M – file (Script File).: File > New: M-file

 Aqui podemos elaborar rotinas mais complexas, depurar o código em determinado passo,

criar novas funções e scripts específicos para auxiliar outros códigos etc;

 Similar a linguagem C;

 Facilidade para trabalhar com estruturas de repetição( for, while, switch ...) e de condição ( if,

else, else if ... );

 Trabalhamos nesta estrutura da mesma forma que trabalhávamos na janela de comando.


M – file
 Ex. simples:
Estruturas de decisões
 IF, ELSEIF, ELSE:
 Estrutura

if “condição lógica_1”

“ações da cond.1”;

elseif “condição lógica_2”

“ações da cond.2”;

elseif “condição lógica_n”

“ações da cond.n”;

else

“ação final”;

end
Estruturas de decisões
(cont.)

 SWITCH...CASE:
 Estrutura:
switch “variável”
case “val_1”
“ação_1”;
case “val_2”
“ação_2”;

case “var_(n-1) “
“ação_(n-1)”;
otherwise
“ação_(n)”;
end
Estruturas de repetição

 WHILE:

 Estrutura:

while “condição_x”

“ações_x “ % repete “ações_x”

% enquanto “condição_x” for TRUE

end
Estruturas de repetição (Cont.)

 FOR:
 Estrutura:

for “var”=“valor_inicial”:”passo”:”valor_final”

“ações_x” % repete “ações_x”

% enquanto “var” não atinge o valor de “valor_final”

end
Gráficos
 comando plot:
 Sintaxe:

plot(x, y, “propriedades”)
Gráficos: Subplot
 comando subplot:
 Sintaxe:

subplot( “num_linhas”, “num_coluna”, “posição”)

plot(x,y, “propriedades”)
Gráficos: 3D

 comando surf:
 Sintaxe:

surf(“ x”“,”y”, “z”)


FIM

Muito Obrigado a todos