Iniciação ao MatLab
Eugênio Silva eugenio@posgrad.nce.ufrj.br
Introdução
• MatLab – Matrix Laboratory (Universidades de Stanford e Novo México - 1970)
• originalmente escrito para trabalhar com matrizes e vetores
• evoluiu ao longo do anos até se tornar uma ferramenta de ampla abrangência.
Introdução
• o MatLab é uma poderosa ferramenta matemática e uma linguagem de programação de alto-desempenho para a computação científica
• integra cálculos matemáticos, visualização e programação em um ambiente interativo
• é de fácil utilização
Introdução
• o elemento de dados básico é uma matriz
• matrizes e vetores são manipulados com mais facilidade e rapidez que em programas escritos em linguagens não-interativas como Pascal, C ou Fortran
Introdução
• toolboxes - bibliotecas de funções que permitem a resolução de classes particulares de problemas
• simulink - acessório que acrescenta uma interface de diagramas de blocos e recursos de simulação real aos demais recursos numéricos, gráficos e de linguagem
Aplicações
• matemática e computação
• desenvolvimento de algoritmos
• modelagem, simulação e prototipação
• análise de dados, exploração e visualização
• gráficos científicos em duas e três dimensões
Scripts em Matlab
• Um script em Matlab é um arquivo texto que contém uma seqüência de de um mais comandos.
• Scripts não aceitam e não retornam argumentos.
• Scripts podem alterar as variáveis do espaço de trabalho (workspace) atual.
• Scripts podem conter comandos que interagem com o usuário e/ou arquivos.
• Use scripts para:
– Automatizar a execução de uma seqüência de comandos frequentemente utilizados
– Documentar os passos de um processo
Scripts em Matlab
%Exemplo de script
%
clear y1,y2;
x = 0:0.01:2*pi;
eixos = [0 2*pi -2 +2];
y1 = sin(x);
y2 = cos(x);
y3 = tan(x);
y4 = zeros(size(x));
plot (x,y1,x,y2,x,y3,x,y4,'k');
axis (eixos);
legend('Seno', 'Coseno','Tangente');
title('Graficos de seno, coseno e tangente.');
xlabel('Angulos');
ylabel('Seno, coseno e tangente');
Scripts em Matlab Funções em Matlab
• Uma função em Matlab é um arquivo de texto.
• Arquivos de funções devem ter um nome igual ao nome da função.
• Um conjunto de funções e scripts pode ser agrupado em um único diretório. O conjunto é chamado de toolbox.
• Toolboxes extendem as capacidades do Matlab
Funções em Matlab
function [membership] = triangle(x,tri_def);
%TRIANGLE Triangular Membership Function
% [membership] = triangle(x,[a b c])
%
% Returns the membership to a universe of discourse defined
% by [a,b,c]. Note: a,b,c must be in the universe of discourse.
%
% x : universe of discourse
% a : left point of the triangular membership function
% b : center of the triangular membership function
% c : right point of the triangular membership function
% y : membership function
%
% Wes Hines
% The University of Tennessee
% Copyright 1997
Funções em Matlab
a = tri_def(1); b = tri_def(2); c = tri_def(3);
membership=zeros(size(x));
A=find(x==a); B=find(x==b); C=find(x==c);
if isempty(A&B&C);
error('a,b, and c must be defined in the universe of discourse: x.')
end for i=A:B
membership(i)=(i-A)/(B-A+eps);
end for i=B:C
membership(i)=(C-i)/(C-B+eps);
end if B==C
membership(B)=1;
end
Funções em Matlab
% Matlab mantem um workspace, assim apaga tudo do workspace clear all;
temperatura = -30:1:60;
eixos = [-30 60 0 1.5];
MuitoFrio = trapzoid (temperatura, [-30 -30 5 15]);
Frio = triangle (temperatura, [5 15 25]);
Normal = triangle (temperatura, [15 25 35]);
Quente = triangle (temperatura, [25 35 45]);
MuitoQuente = trapzoid (temperatura, [35 45 60 60]);
plot (temperatura, MuitoFrio, temperatura, Frio, temperatura, Normal, temperatura, Quente, temperatura, MuitoQuente);
axis (eixos);
legend('MuitoFrio','Frio', 'Normal','Quente','MuitoQuente');
title('Graficos de Frio.');
xlabel('Temperaturas');
ylabel('Frio');
Scripts em Matlab
-30 -20 -10 0 10 20 30 40 50 60
0 0.5 1 1.5
Graficos de Frio.
Temperaturas
Frio
MuitoFrio Frio Normal Quente MuitoQuente
Exemplo – transpor uma matriz
• Pascal
var
a, b : array [1..3, 1..3] of integer;
i, j : integer;
begin . . . for i = 1 to 3
for j = 1 to 3 b(j,i) := a(i,j);
end;
end;
end.
• MatLab
>> a = [1 2 3; 4 5 6; 7 8 9]
a = 1 2 3 4 5 6 7 8 9
>> b = a’
b = 1 4 7 2 5 8 3 6 9
Operações Elementares
>> 4 + 6 – 2 ans =
8
>> 4 ∗ 2 + 6 ∗ 5 + 2 ∗ 9 ans =
56
>> 25 / 5 + 5 \ 25 ans =
10
>> 3 ^ 2 ∗ 2 ^ 2 + 2 ans =
38
Definição de Variáveis
>> a = 10 a =
10
>> b = 20;
O ‘;’ evita que o resultado apareça na tela.
>> c = 1 + 2i ou c = 1 + 2j c =
Variáveis Pré-Definidas
número de argumentos de saída
>> nargout
número de argumentos de entrada
>> nargin
menor número real positivo utilizável
>> realmin
maior número real positivo utilizável
>> realmax
>> i ou j π
>> pi
variável padrão usada para resultados
>> ans
−1
Funções Elementares
raiz quadrada sqrt(x)
matriz inversa de x inv(x)
valor mínimo min(x)
exponencial exp(x)
valor máximo max(x)
tangente tan(x)
logaritmo na base 10 log10(x)
co-seno cos(x)
logaritmo natural log(x)
arco seno asin(x)
MMC lcm(x,y) seno
sin(x)
MDC gcd(x,y) módulo
abs(x)
Espaço de Trabalho
formato de apresentação dos resultados
>> format
carrega as variáveis contidas em um .mat
>> load
salva as variáveis em um arquivo .mat
>> save
apaga as variáveis da memória
>> clear
lista variáveis com informações detalhadas
>> whos
lista variáveis existentes na memória
>> who
Comandos do Sistema Operacional
sai do ambiente
>> quit ou exit
mostra o conteúdo do arquivo
>> type <arquivo>
abre arquivo para edição
>> edit <arquivo>
apaga arquivo
>> delete <arquivo>
diretório raiz
>> cd \
diretório acima do corrente
>> cd . .
diretório corrente
>> cd ou pwd
arquivos do diretório
>> dir ou ls
Vetores
>> x = [0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1] ∗ pi ou
>> x = (0:0.1:1) ∗ pi ou
>> x = linspace(0,pi,11)
>> y = sin(x)
Vetores
>> z = z’
>> x(2:2:7)
>> t = [x; y]
>> y(3:-1:1)
>> t = [x y]
>> x(7:end)
>> z = [x(1:5) 2 5 7]
>> x(1:5)
>> y([8 2 9 1])
>> x(3)
Matrizes
>> B = A( : , [2 2 2 2])
>> A(3,:) = 7 8 9
>> B(:,2) = [ ]
>> A(2,2:3) = 5 6
>> C = [A B( : , [1 3])]
>> A(3,3) = 9
>> B = A(3:-1:1, : )
>> A = [1 2 3; 4 5 6; 7 8 9]
Matrizes
>> rand (n1,n2,...) Matriz de rand entre 0 e 1.0
>> m’
Transposta de m
>> ones(n1,n2,...) Matriz de uns
>> inv(m) Inversa de m
>> zeros(n1,n2,n3,...) Matriz de zeros
>> det(m) Determinante de m
>>eye(linhas,colunas) Cria matriz identidade
Matrizes
16 12
8 4
15 11
7 3
14 10
6 2
13 9
5 1
matriz(10) ou matriz(2,3)