2. O que é o MATLAB?
MATrix LABoratory é um software para
resolução de problemas numéricos e
visualização computacional.
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
3. O que é o MATLAB?
• Desenvolvido pela Mathworks Inc., sede em
Natick, Massachusetts, EUA.
http://www.mathworks.com/
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
5. Características
• Possui ambiente interativo e uma linguagem
simples, de alto nível cujos recursos permitem
ganho no tempo de implementação.
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
6. Vantagens
• Seu ambiente de desenvolvimento permite
interação do MATLAB com outras linguagens
como C/C++, Java, Fortran. Isto permite o
desenvolvimento de toolboxes: extensões de
sua linguagem para solução de problemas
específicos.
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Toolbox de
Otimização
Toolbox de
Redes Neurais
Toolbox de Proc. de Imagens
7. Desvantagens
• Não aconselhável para solução de problemas
complexos que exijam elevado esforço
computacional: por ser baseado em uma
linguagem de programação interpretada.
• Você tem que pagar para usá-lo (05/05/09):
Versão Estudante: U$ 99.00
Cada toolbox: U$ 59.00
8. Alternativas ao MATLAB
• SciLab: software livre que possui os mesmas
características do MATLAB anteriormente
mencionadas. Nos últimos anos vem ganhando espaço
no meio acadêmico. Possui distribuições para Windows
e Linux.
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
10. Inicializando o MATLAB
Iniciar > Executar > “matlab” <enter>
Iniciar > Programas > MATLAB > MATLAB
Pelo prompt de comando do MS-DOS:
> “matlab” <enter>
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
11. O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
12. O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Diretório de trabalho
13. O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Current directory: Exibe o
conteúdo do diretório de trabalho
14. O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Janela de comandos
15. O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
16. O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
17. O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Workspace: Exibe
informações acerca das
variáveis carregadas na
memória
18. O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Command history:
Exibe informações
acerca do histórico de
comandos
19. O Ambiente MATLAB
Os comandos do MATLAB são definidos em
uma linguagem própria.
Suas instruções podem ser interpretadas:
• via janela de comandos
• via arquivos com um conjunto de instruções (script)
editado com o MATLAB Editor e salvo em um arquivo de
extensão “.m”.
O bom uso do MATLAB exige um melhor
domínio da sintaxe de sua linguagem.
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
20. Declaração de variáveis
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
• Variável: Elemento de um programa que é
declarado e armazenado na memória, cujo
valor pode ser modificado ao longo de sua
execução.
• Declaração de uma variável no MATLAB: usa-
se o operador atribuição “=”.
>> variavel = valor;
• Tipos de valores:
Os tipos podem ser numérico (real ou inteiro),
complexo ou caractere.
21. Declaração de variáveis
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Regras para nomes Comentário e exemplos
Case sensitive Custo, CustO, CuStO e CUSTO são variáveis
diferentes no MATLAB
Devem conter no
máximo 31 caracteres
CustoTotalAnoAnterior = 10
CustoTotalEstimadoProximoAno = 4
Não deve começar com
número e nem conter
pontuações ou espaços
Valor_Estimado = 3
Valor1 = 9.2
X123 = 2.5
22. Declaração de variáveis
Representação das
variáveis: matrizes
Escalar String
Matrizes
numéricas
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
X = 3
Matriz
(1x1)
BALTAM
nome = „MATLAB‟
Vetor linha
01
10
B
101B
1
0
1
B
23. Declaração de variáveis
• Declarando matrizes no MATLAB:
1. Os elementos devem ser declarados entre [ ]
2. Os elementos de uma mesma linha numa matriz
são separados por espaço(s) ou vírgula
3. ponto-e-vírgula(;) indica o final de uma linha de
uma matriz ou final de uma expressão
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
452
906
841
A A = [1 4 8; 6 0 9; 2 4 5]
25. Operadores aritméticos
>> a = 4
a = 4
>> b = 3
b = 3
>> c = a + b
c = 7
>> c1 = a – b
c1 = 1
>> c2 = b / a
c2 = 0.7500
>> c3 = a^2 + b^2
c3 = 25
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
26. Operadores aritméticos
>> A = [1 2; 3 4]
A =
1 2
3 4
>> B = [5 6; 7 8]
B =
5 6
7 8
>> C = A + B
C =
6 8
10 12
>> C1 = A – B
C1 =
-4 -4
-4 -4
>> C2 = A^(-1) %=(inv(A))
C2 =
-2.0000 1.0000
1.5000 -0.5000
>> C3 = A/B %=(A*inv(B))
C3 =
3.0000 -2.0000
2.0000 -1.0000
>> C4 = A^2 + B^2
C4 =
74 88
106 128
>> C5 = A’
C5 =
1 3
2 4
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
27. Operadores aritméticos
ponto-a-ponto
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Operação Símbolo
Multiplicação .*
Divisão ./
Potenciação .^
Operador ponto-a-ponto: Executa a operações entre (ou sobre) os
elementos da matriz. Quando envolver duas matrizes, as suas dimensões
devem ser as mesmas.
29. Operador dois-pontos (:)
É um dos operadores mais úteis do MATLAB.
Cria vetores e serve para manipular índices de
matrizes.
Criando vetores:
>> vetor = valor_inicial:incremento:valor_final
>> vetor = valor_inicial:valor_final (incremento=1)
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
30. Operador dois-pontos (:)
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
>> C = 1:2:11
C =
1 3 5 7 9 11
>> E = [1:1:3;4:1:6;7:1:9]
E =
1 2 3
4 5 6
7 8 9
>> D = 0 : 0.5 : 3
D =
0 0.5 1.0 1.5 2.0 2.5 3.0
31. >> A = [1 : 2 : 15]
A =
1 3 5 7 9 11 13 15
>> A(1,5)
ans =
9
>> B = [1:1:3;2:2:6;5:2:9]
B =
1 2 3
2 4 6
5 7 9
>> b = [10 20 30]
b =
10 20 30
>> B = [B;b]
B =
1 2 3
2 4 6
5 7 9
10 20 30
>> B(1:3,2)
ans =
2
4
7
>> B(3,:)
ans =
5 7 9
>> B([2 3],[1 2])
ans =
2 4
5 7
>> B(end,:)
ans =
10 20 30
Manipulação de Matrizes
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
32. Manipulação de matrizes
>> A = ones(3,3)
A =
1 1 1
1 1 1
1 1 1
>> B = zeros(4,3)
B =
0 0 0
0 0 0
0 0 0
0 0 0
>> I = eye(4,4)
I =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> C = rand(3,3)
C =
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
>> rand('seed',0)
>> D = rand(3,3)
D =
0.2190 0.6793 0.5194
0.0470 0.9347 0.8310
0.6789 0.3835 0.0346
>> E = diag(D)
E =
0.2190
0.9347
0.0346
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
34. Exercícios
Defina as matrizes e efetue as seguintes
operações:
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
índicesdemaisospara3,
ímparesepara,2
paresepara,1
)( 99
ji
ji
bB ij
índicesdemaisospara3,
parímparpara,2
ímparparpara,6
)( 99
jei
jei
aA ij
a) A * A‟
b) B^2
c) B.^2
d) A * B
e) A .^B
f) A./B
37. Operadores lógicos e
relacionais
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Operador
relacional
Símbolo
Igual ==
Diferente ~=
Maior >
Menor <
Maior ou igual >=
Menor ou igual <=
Operador
lógico
Símbolo
E &
Ou |
Não ~
1: True – Verdadeiro
0: False - Falso
38. Operadores lógicos e
relacionais
>> 2 == 3
ans = 0
>> 2 <= 3
ans = 1
>> (2 == 3) & (2 <= 3)
ans = 0
>> ~(2 == 3) & (2 <= 3)
ans = 1
>> (2 ~= 3) & (2 <= 3)
ans = 1
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
39. Trabalhando com scripts
• O que é um script?
o conjunto de instruções do MATLAB que podem ser
executadas sistematicamente.
• Para que serve?
o Sintetiza os comandos freqüentemente digitados
em um único comando (o script com os comandos é
executado)
o Aplicável a problemas mais extensos onde é exigido
mais comandos
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
42. Programando em MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Salvar o script em
um diretório de sua
preferência
Executar o script.
Atalho: F5
43. Entrada e Saída (tela)
• Comando de entrada: input
R = input(‘Forneca o valor de entrada:')
>>
Forneca o valor de entrada: <digitar valor> <enter>
• Comando de saida: disp
disp(X)
Mostra o valor de X na janela de comandos.
disp('Ola Mundo!')
>>
Ola Mundo!
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
44. Entrada e Saída (tela)
clc
A = input('Forneca uma matriz 2 x 2: ');
B = input('Forneca uma matriz 2 x 2: ');
C1 = A + B;
C2 = A * B;
disp('Soma entre as duas matrizes: ');
disp(C1)
disp('Produto entre as duas matrizes: ');
disp(C2)
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
45. Entrada e Saída (arquivos)
• Comando de entrada: load
Formato ASCII:
>> x = load('arquivo.txt');
Formato binário do MATLAB:
>> load arquivo.mat
• Comando de saída: save
Formato ASCII:
>> save „arquivo.txt‟ variaveis –ascii
Formato binário do MATLAB:
>> save „arquivo.mat‟ variaveis
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
46. Entrada e Saída (arquivos)
dados = load('lorenz_xyz.txt');
t = dados(:,1);
x = dados(:,2);
y = dados(:,3);
z = dados(:,4);
save lorenz_xyz.mat t x y z;
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Obtenha o arquivo: http://br.geocities.com/rodmaduro/lorenz_xyz.txt
47. Controladores de fluxo
if expressao_1
instrucoes_1
else
instrucoes_2
end
if expressao_1
instrucoes_1
elseif expressao_2
instrucoes_2
else
instrucoes_3
end
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
if: cria caminhos alternativos na execução de
um script.
48. Controladores de fluxo
disp('Script que compara dois numeros')
a = input('Forneca um numero: ');
b = input('Forneca outro numero: ');
if a > b
disp(['Numero maior: ' num2str(a)])
disp(['Numero menor: ' num2str(b)])
else
disp(['Numero maior: ' num2str(b)])
disp(['Numero menor: ' num2str(a)])
end
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
49. Controladores de fluxo
disp('Script que compara dois numeros')
a = input('Forneca um numero: ');
b = input('Forneca outro numero: ');
if a > b
disp(['Numero maior: ' num2str(a)])
disp(['Numero menor: ' num2str(b)])
elseif a < b
disp(['Numero maior: ' num2str(b)])
disp(['Numero menor: ' num2str(a)])
else
disp(['Os dois numeros sao iguais a '
num2str(a)])
end
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
50. Controladores de fluxo
for variavel = valor_inicial:passo:valor_final
instrucoes;
end
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
for: permite que um grupo de instruções se
repitam por um número especificado de vezes.
51. Controladores de fluxo
N = input('Forneca a dimensao da matriz: ');
A = zeros(N,N);
for i = 1:N
for j=1:N
A(i,j) = 2 * i - 3 * j;
end
end
disp(A)
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
jiaA NNij 32)(
52. Controladores de fluxo
clc
N = input('Forneca a dimensao da matriz: ');
A = zeros(N,N);
for i = 1:N
for j=1:N
if (mod(i,2) == 0) & (mod(j,2) == 1)
A(i,j) = 6;
elseif (mod(i,2) == 1) & (mod(j,2) == 0)
A(i,j) = 2;
else
A(i,j) = 3;
end
end
end
disp(A)
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
índicesdemaisospara3,
parímparpara,2
ímparparpara,6
)( 99
jei
jei
aA ij
53. Controladores de fluxo
while (expressao de controle)
instrucoes;
end
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
while: permite que um grupo de instruções se
repitam enquanto uma determinada expressão
de controle for verdadeira.
54. Controladores de fluxo
EPS = 2;
while (1+EPS) > 1
EPS = EPS/2;
end
disp(EPS)
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
EPS é o maior número que adicionado a 1 torna seu valor igual a 1.
Isso acontece porque o computador um utiliza número fixo de dígitos
para representar os números. O MATLAB usa 16 dígitos de precisão,
nesse caso o valor de EPS será próximo de 10^(-16):
>> EPS
EPS =
1.1102e-016
>> 1 + EPS == 1
ans =
1
55. Controladores de fluxo
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
break: encerra a execução de um laço de
repetição (for ou while).
EPS = 1;
for num = 1 : 1000
EPS = EPS / 2;
if ~((1+EPS) > 1)
break
end
end
disp(EPS)
EPS = 1;
while (1+EPS) > 1
EPS = EPS/2;
end
disp(EPS)
56. Visualizando figuras
• Comando plot: gera um gráfico 2D
>> plot(x,y)
y: vetor linha ou vetor coluna
y: vetor linha ou vetor coluna
• Exemplo:
x = -pi:0.001:pi;
y = sin(x);
plot(x,y)
axis([-pi pi -1 1])
xlabel('x')
ylabel('sin(x)')
title('Grafico da Função Seno')
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
57. Visualizando figuras
• Comando plot3: gera um gráfico 3D
>> plot3(x,y,z)
y: vetor linha ou vetor coluna
y: vetor linha ou vetor coluna
z: vetor linha ou vetor coluna
• Exemplo:
t = 0 : pi/50 :10*pi;
plot3(sin(t) ,cos(t) ,t)
axis([-1 1 -1 1 0 40])
xlabel('x')
ylabel(„y')
zlabel(„z')
grid on
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
58. Salvando figuras
• Comando print:
print(gcf,formato,nome_da_figura)
Formatos mais comuns:
-dpng: salva figura em PNG
-deps: salva em Encapsulated PostScript
-depsc: salva Encapsulated Color PostScript
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
59. Salvando figuras
clc; close all;
dados = load('lorenz_xyz.txt');
t = dados(:,1);
x = dados(:,2);
y = dados(:,3);
z = dados(:,4);
figure;
subplot(3,1,1)
plot(t,x)
xlabel('t')
ylabel('x(t)')
subplot(3,1,2)
plot(t,y)
xlabel('t')
ylabel('z(t)')
subplot(3,1,3)
plot(t,z)
xlabel('t')
ylabel('z(t)‘)
print(gcf,'-dpng',‘lorenz_xyz.png')
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Para baixar o aquivo 'lorenz_xyz.txt'
clique aqui.
60. Salvando figuras
clc; close all;
dados = load('lorenz_xyz.txt');
t = dados(:,1);
x = dados(:,2);
y = dados(:,3);
z = dados(:,4);
figure;
plot3(x,y,z)
xlabel('x(t)')
ylabel('x(t)')
zlabel('z(t)')
grid on
print(gcf,'-dpng',‘lorenz3d.png')
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
61. Funções em MATLAB
• Uma função é um trecho de código que admite
parâmetros de entrada e retorna valores.
• Arquivos “.m” podem ser tanto scripts quanto
funções.
• Os comandos nativos do MATLAB são funções
criadas na sua própria linguagem.
function variavel_retorno = nome_da_funcao(variaveis_entrada)
instrucoes para obter variavel_retorno;
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
62. Criando uma função no
MATLAB
function distancia = calcula_distancia(x,y)
diferenca = x - y;
distancia = sqrt(diferenca*transpose(diferenca));
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Exemplo: Função que calcula a distancia euclidiana entre
dois vetores do Rn. Crie e salve o seguinte arquivo “.m”:
63. • Para executar essa função, vá a janela de
comando e proceda da seguinte forma:
>> p = [1 0 0];
>> q = [0 1 0];
>> d = calcula_distancia(p, q)
• Ou:
>> d = calcula_distancia([1 0 0], [0 1 0])
Criando uma função no
MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
64. Como aprender mais
e mais sobre MATLAB?
• Acessando sua documentação:
Comando doc:
>> doc
• Acessando scripts demonstrativos:
Comando demo:
>> demo
• Maiores esclarecimentos sobre algum comando:
>> help comando
Exemplo:
>> help plot
>> doc plot
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
65. Como aprender mais
mais sobre MATLAB?
• Livros sobre MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
66. Como aprender mais
e mais sobre MATLAB?
• Google:
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida