View
1.098
Download
4
Category
Preview:
Citation preview
Conceitos Básicos
Rodolfo Maduro Almeida
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
O que é o MATLAB?
• Desenvolvido pela Mathworks Inc., sede em Natick, Massachusetts, EUA.http://www.mathworks.com/
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Características
• Software multiplataforma: Distribuições para Windows, Linux/Unix e Mac.
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
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
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 deOtimização
Toolbox de Redes Neurais
Toolbox de Proc. de Imagens
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
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
Alternativas ao MATLAB
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
O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Diretório de trabalho
O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Current directory: Exibe o conteúdo do diretório de trabalho
O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Janela de comandos
O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Workspace: Exibe informações acerca das variáveis carregadas na memória
O Ambiente do MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Command history: Exibe informações acerca do histórico de comandos
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
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.
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
Declaração de variáveis
Representação das variáveis: matrizes
Escalar StringMatrizes
numéricas
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
X = 3
Matriz(1x1)
BALTAM
nome = „MATLAB‟
Vetor linha01
10B
101B
1
0
1
B
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]
Operadores aritméticos matriciais
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Operação Símbolo
Adição +
Subtração -
Multiplicação *
Divisão /
Potenciação ^
Matriz transposta „
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
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
Operadores aritméticosponto-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) oselementos da matriz. Quando envolver duas matrizes, as suas dimensõesdevem ser as mesmas.
Operadores aritméticos>> A = [1 2; 3 4]
A =
1 2
3 4
>> B = [5 6; 7 8]
B =
5 6
7 8
>> C1 = A * B
C =
19 22
43 50
>> C1 = A .* B
C2 =
5 12
21 32
>> D1 = A/B
C3 =
3.0000 -2.0000
2.0000 -1.0000
>> D2 = A./B
D1 =
0.2000 0.3333
0.4286 0.5000
>> E1 = A^3
E1 =
37 54
81 118
>> E2 = A.^3
E2 =
1 8
27 64
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
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
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
>> 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
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
Manipulação de matrizes>> A = ones(3,3)
A =
1 1 1
1 1 1
1 1 1
>> dimA = size(A)
dimA =
2 3
>> A1 = diag(A)
A1 =
1
1
1
>> maxdimA = length(A)
maxdimA =
3
>> B = diag(5 * A1)
B =
5 0 0
0 5 0
0 0 5
>> rand('seed',10)
>> C = rand(size(A))
C =
0.1291 0.9505 0.1597
0.6048 0.3367 0.7808
0.5040 0.0924 0.6925
>> C1 = triu(C)
C1 =
0.1291 0.9505 0.1597
0 0.3367 0.7808
0 0 0.6925
>> C2 = tril(C)
C2 =
0.1291 0 0
0.6048 0.3367 0
0.5040 0.0924 0.6925
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Exercícios
Defina as matrizes e efetue as seguintes operações:
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
índices demais os para 3,
ímpares e para,2
pares e para ,1
)( 99ji
ji
bB ij
índices demais os para 3,
par ímpar para,2
ímpar par para ,6
)( 99jei
jei
aA ij
a) A * A‟b) B^2c) B.^2
d) A * Be) A .^Bf) A./B
Exercícios>> A = 3 * ones(9,9)
>> A(2:2:end,1:2:end)=6
>> A(1:2:end,2:2:end)=2
>> disp(A)
3 2 3 2 3 2 3 2 3
6 3 6 3 6 3 6 3 6
3 2 3 2 3 2 3 2 3
6 3 6 3 6 3 6 3 6
3 2 3 2 3 2 3 2 3
6 3 6 3 6 3 6 3 6
3 2 3 2 3 2 3 2 3
6 3 6 3 6 3 6 3 6
3 2 3 2 3 2 3 2 3
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Exercícios>> B = 3 * ones(9,9)
>> B(2:2:end,2:2:end)=1
>> B(1:2:end,1:2:end)=2
>> disp(B)
2 3 2 3 2 3 2 3 2
3 1 3 1 3 1 3 1 3
2 3 2 3 2 3 2 3 2
3 1 3 1 3 1 3 1 3
2 3 2 3 2 3 2 3 2
3 1 3 1 3 1 3 1 3
2 3 2 3 2 3 2 3 2
3 1 3 1 3 1 3 1 3
2 3 2 3 2 3 2 3 2
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
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 – Verdadeiro0: False - Falso
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
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
Editando scripts
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Outra opção: File > New M-File
Programando em MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
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
Entrada e Saída (tela)
• Comando de entrada: inputR = input(‘Forneca o valor de entrada:')
>>
Forneca o valor de entrada: <digitar valor> <enter>
• Comando de saida: dispdisp(X)
Mostra o valor de X na janela de comandos.
disp('Ola Mundo!')
>>
Ola Mundo!
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
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
Entrada e Saída (arquivos)
• Comando de entrada: loadFormato ASCII:
>> x = load('arquivo.txt');
Formato binário do MATLAB:
>> load arquivo.mat
• Comando de saída: saveFormato ASCII:
>> save „arquivo.txt‟ variaveis –ascii
Formato binário do MATLAB:
>> save „arquivo.mat‟ variaveis
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
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
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.
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
Controladores de fluxodisp('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
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.
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)(
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
índices demais os para 3,
par ímpar para,2
ímpar par para ,6
)( 99jei
jei
aA ij
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.
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
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)
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
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
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
Salvando figurasclc; 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.
Salvando figurasclc; 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
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
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”:
• 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
Como aprender maise 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
Como aprender maismais sobre MATLAB?
• Livros sobre MATLAB
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Como aprender maise mais sobre MATLAB?
• Google:
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
MATLAB: Conceitos Básicos - Rodolfo Maduro Almeida
Recommended