Professional Documents
Culture Documents
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
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.
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=
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
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
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
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
“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”
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
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
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
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,
if “condição lógica_1”
“ações da cond.1”;
“ações da cond.2”;
“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”
end
Estruturas de repetição (Cont.)
FOR:
Estrutura:
for “var”=“valor_inicial”:”passo”:”valor_final”
end
Gráficos
comando plot:
Sintaxe:
plot(x, y, “propriedades”)
Gráficos: Subplot
comando subplot:
Sintaxe:
plot(x,y, “propriedades”)
Gráficos: 3D
comando surf:
Sintaxe: