Вы находитесь на странице: 1из 10

Introduo

Iniciao ao MatLab
MatLab Matrix Laboratory (Universidades de Stanford
e Novo Mxico - 1970)

originalmente escrito para trabalhar com matrizes e


vetores

evoluiu ao longo do anos at se tornar uma ferramenta


Eugnio Silva de ampla abrangncia.
eugenio@posgrad.nce.ufrj.br

Introduo Introduo
o MatLab uma poderosa ferramenta matemtica e
uma linguagem de programao de alto-desempenho o elemento de dados bsico uma matriz
para a computao cientfica

integra clculos matemticos, visualizao e matrizes e vetores so manipulados com mais


programao em um ambiente interativo facilidade e rapidez que em programas escritos em
linguagens no-interativas como Pascal, C ou Fortran
de fcil utilizao

Introduo Aplicaes
matemtica e computao
toolboxes - bibliotecas de funes que permitem a
resoluo de classes particulares de problemas desenvolvimento de algoritmos

simulink - acessrio que acrescenta uma interface de modelagem, simulao e prototipao


diagramas de blocos e recursos de simulao real aos
demais recursos numricos, grficos e de linguagem anlise de dados, explorao e visualizao

grficos cientficos em duas e trs dimenses

1
Scripts em Matlab Scripts em Matlab
%Exemplo de script
Um script em Matlab um arquivo texto que contm %
uma seqncia de de um mais comandos. clear y1,y2;
x = 0:0.01:2*pi;
Scripts no aceitam e no retornam argumentos. eixos = [0 2*pi -2 +2];
Scripts podem alterar as variveis do espao de y1 = sin(x);
y2 = cos(x);
trabalho (workspace) atual. y3 = tan(x);
Scripts podem conter comandos que interagem com o y4 = zeros(size(x));

usurio e/ou arquivos. plot (x,y1,x,y2,x,y3,x,y4,'k');


axis (eixos);
Use scripts para: legend('Seno', 'Coseno','Tangente');
Automatizar a execuo de uma seqncia de comandos title('Graficos de seno, coseno e tangente.');
frequentemente utilizados xlabel('Angulos');
ylabel('Seno, coseno e tangente');
Documentar os passos de um processo

Scripts em Matlab Funes em Matlab


Uma funo em Matlab um arquivo de texto.
Arquivos de funes devem ter um nome igual
ao nome da funo.
Um conjunto de funes e scripts pode ser
agrupado em um nico diretrio. O conjunto
chamado de toolbox.
Toolboxes extendem as capacidades do Matlab

Funes em Matlab Funes em Matlab


function [membership] = triangle(x,tri_def); a = tri_def(1); b = tri_def(2); c = tri_def(3);
%TRIANGLE Triangular Membership Function membership=zeros(size(x));
% [membership] = triangle(x,[a b c]) A=find(x==a); B=find(x==b); C=find(x==c);
%
if isempty(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
error('a,b, and c must be defined in the universe of
discourse. discourse: x.')
% end
% x : universe of discourse for i=A:B
% a : left point of the triangular membership function membership(i)=(i-A)/(B-A+eps);
% b : center of the triangular membership function end
% c : right point of the triangular membership function for i=B:C
% y : membership function membership(i)=(C-i)/(C-B+eps);
%
end
% Wes Hines
% The University of Tennessee if B==C
% Copyright 1997 membership(B)=1;
end

2
Funes em Matlab Scripts em Matlab
% Matlab mantem um workspace, assim apaga tudo do workspace Graficos de Frio.
clear all; 1.5
temperatura = -30:1:60; MuitoFrio
eixos = [-30 60 0 1.5]; Frio
Normal
MuitoFrio = trapzoid (temperatura, [-30 -30 5 15]); Quente
Frio = triangle (temperatura, [5 15 25]); MuitoQuente
Normal = triangle (temperatura, [15 25 35]); 1
Quente = triangle (temperatura, [25 35 45]);
MuitoQuente = trapzoid (temperatura, [35 45 60 60]);

Frio
plot (temperatura, MuitoFrio, temperatura, Frio, temperatura,
Normal, temperatura, Quente, temperatura, MuitoQuente);
0.5
axis (eixos);
legend('MuitoFrio','Frio', 'Normal','Quente','MuitoQuente');
title('Graficos de Frio.');
xlabel('Temperaturas');
ylabel('Frio');
0
-30 -20 -10 0 10 20 30 40 50 60
Temperaturas

Exemplo transpor uma matriz Operaes Elementares


Pascal MatLab >> 4 + 6 2 >> 25 / 5 + 5 \ 25
var >> a = [1 2 3; 4 5 6; 7 8 9] ans = ans =
a, b : array [1..3, 1..3] of integer; a=
i, j : integer; 123 8 10
456
begin 789
... >> 4 2 + 6 5 + 2 9 >> 3 ^ 2 2 ^ 2 + 2
for i = 1 to 3 >> b = a
for j = 1 to 3 b= ans = ans =
b(j,i) := a(i,j); 1 4 7
56 38
end; 2 5 8
end; 3 6 9
end.

Definio de Variveis Variveis Pr-Definidas


>> a = 10 >> ans varivel padro usada para resultados
a=
10
>> pi
>> i ou j 1
>> b = 20; >> realmax maior nmero real positivo utilizvel
O ; evita que o resultado aparea na tela. >> realmin menor nmero real positivo utilizvel
>> nargin nmero de argumentos de entrada
>> c = 1 + 2i ou c = 1 + 2j
c= >> nargout nmero de argumentos de sada
1.0000 2.0000i >> inf infinito

3
Funes Elementares Espao de Trabalho
abs(x) mdulo gcd(x,y) MDC >> who lista variveis existentes na memria
sin(x) seno lcm(x,y) MMC
>> whos lista variveis com informaes detalhadas
asin(x) arco seno log(x) logaritmo natural
>> clear apaga as variveis da memria
cos(x) co-seno log10(x) logaritmo na base 10
>> save salva as variveis em um arquivo .mat
tan(x) tangente max(x) valor mximo
exp(x) exponencial min(x) valor mnimo >> load carrega as variveis contidas em um .mat
inv(x) matriz inversa de x sqrt(x) raiz quadrada >> format formato de apresentao dos resultados

Comandos do Sistema Operacional Vetores


>> dir ou ls arquivos do diretrio
>> x = [0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1] pi
>> cd ou pwd diretrio corrente
ou
>> cd . . diretrio acima do corrente >> x = (0:0.1:1) pi
>> cd \ diretrio raiz ou
>> delete <arquivo> apaga arquivo >> x = linspace(0,pi,11)
>> edit <arquivo> abre arquivo para edio
>> type <arquivo> mostra o contedo do arquivo >> y = sin(x)

>> quit ou exit sai do ambiente

Vetores Matrizes

>> x(3) >> y([8 2 9 1]) >> A = [1 2 3; 4 5 6; 7 8 9] >> B = A(3:-1:1, : )


>> x(1:5) >> z = [x(1:5) 2 5 7]
>> A(3,3) = 9 >> C = [A B( : , [1 3])]
>> x(7:end) >> t = [x y]

>> y(3:-1:1) >> t = [x; y] >> A(2,2:3) = 5 6 >> B(:,2) = [ ]

>> x(2:2:7) >> z = z


>> A(3,:) = 7 8 9 >> B = A( : , [2 2 2 2])

4
Matrizes Matrizes matriz(10) ou matriz(2,3)

>>eye(linhas,colunas) >> det(m) 1 5 9 13


Cria matriz identidade Determinante de m
>> zeros(n1,n2,n3,...) >> inv(m) 2 6 10 14
Matriz de zeros Inversa de m
>> ones(n1,n2,...) >> m 3 7 11 15
Matriz de uns Transposta de m
>> rand (n1,n2,...) 4 8 12 16
Matriz de rand entre 0 e 1.0

Busca de Sub-Matrizes Dimenses de Vetores e Matrizes


>> x = -3:3 >> A = [1 2 3; 4 5 6; 7 8 9]
whos lista as variveis e suas dimenses
x= A=1 2 3
-3 -2 -1 0 1 2 3 4 5 6 s = size(A) retorna o nmero de linhas e colunas de A
>> k = find(abs(x) > 1) 7 8 9 [x,y] = size(A) x contm o nm de linhas e y o de colunas
k= >> [ i , j ] = find(A > 5)
x = size(A,1) retorna o nmero de linhas de A
1 2 6 7 i=3 j=1
>> y = x(k) 3 2 y = size(A,2) retorna o nmero de colunas de A
-3 -2 2 3 2 3 n = length(A) retorna max(size(A))
3 3

Operaes com Vetores e Matrizes Operaes com Vetores e Matrizes


a = [a1 a2 ... an] , b = [b1 b2 ... bn] , c = <um escalar> a = [a1 a2 ... an] , b = [b1 b2 ... bn] , c = <um escalar>

adio a escalar a + c = [a1 + c ... an + c] diviso de vetores (direita) a . / b = [a1 / b1 ... an / bn]

multiplicao por escalar a c = [a1 c ... an c] diviso de vetores (esquerda) a . \ b = [a1 \ b1 ... an \ bn]

soma de vetores a + b = [a1 + b1 ... an + bn] c .^ a = [c ^ a1 ... c ^ an]


potenciao vetorial a .^ c = [a1 ^ c ... an ^ c]
multiplicao de vetores a . b = [a1 b1 ... an bn] a .^ b = [a1 ^ b1 ... an ^ bn]

5
Operadores Relacionais e Lgicos Funes Relacionais e Lgicas
< menor que xor(x,y) ou exclusivo

<= menor ou igual & e ischar(x) 1 se x um vetor de caracteres

> maior que | ou isequal(x,y) 1 se x e y so iguais

>= maior ou igual ~ no isempty(x) 1 se x vazio

= igual ismember(x,y) 1 se os elementos de x pertencem a y

~= diferente isstruct(x) 1 se x uma estrutura

Estrutura Condicional if Estrutura Condicional switch - case


>> if expresso_1 >> switch expresso
comandos_1; case teste_expresso_1
elseif expresso_2 comandos_1
comandos_2; case teste_expresso_2
else comandos_2
comandos_3; otherwise
end comandos_3
end

Laos de Repetio for / while Otimizao de Cdigo


>> for x = vetor o lao de repetio
comandos; for i = 0:999
end x(i+1) = sin(2 pi i / 100);
end
>> while expresso
comandos;
pode ser substitudo por
end
x = sin(2 pi [0:999] / 100);

6
Arquivos M de comandos Funes dos Arquivos M
disp(x) mostra o resultado sem identificar a varivel
teis quando o nmero de comandos grande, ou caso echo controla a exibio dos comandos
seja necessrio alterar os valores das variveis e re-
executar alguns comandos input solicita ao usurio que fornea a entrada
keyboard transfere o controle para o teclado
armazenam uma seqncia de comandos em um
pause(n) suspende a execuo por n segundos
arquivo texto que executado a partir do prompt
pause suspende at que uma tecla seja pressionada

Arquivos M de funes Arquivos M de funes


o nome da funo deve ser idntico ao nome do variveis criadas dentro de uma funo permanecem
arquivo apenas no espao de trabalho da funo

a partir da segunda vez a execuo de uma funo funes podem compartilhar variveis com outras
mais rpida que da primeira funes desde que sejam declaradas como globais

as linhas de comentrio que antecedem a primeira linha arquivos M de funes podem conter mais de uma
sem comentrio aparecem quando se pede ajuda funo, a funo primria e as sub-funes

Anlise de Dados Grficos Bidimensionais


cov(x) matriz de covarincia >> x = linspace(0, 2 pi, 30);
min(x) componente mnima >> y = sin(x);
max(x) componente mxima >> z = cos(x);
mean(x) mdia >> plot(x,y,x,z)
rand(x) nm. aleatrios uniformemente distribudos
var(x) varincia
std(x) desvio padro
sum(x) soma dos elementos de cada coluna

7
Grficos Bidimensionais Grficos Bidimensionais
>> x = linspace(0, 2 pi, 30); >> x = -2.9 : 0.2 : 2.9;
>> y = sin(x); >> y = randn(5000,1);
>> z = cos(x); >> hist(y,x)
>> subplot(2,1,1)
>> plot(x,y,go)
>> subplot(2,1,2)
>> plot(x,z,r*)

Grficos Tridimensionais Grficos Tridimensionais


>> t = 0 : pi / 50 : 10 pi; >> mesh(peaks)
>> plot3(sin(t),cos(t),t);
>> title(hlice)
>> xlabel(sen(t))
>> ylabel(cos(t))
>> zlabel(t)
>> grid

Grficos Tridimensionais Matrizes Celulares


>> surf(peaks)
so matrizes cujos elementos so clulas

qualquer clula da matriz pode conter qualquer tipo de


dado (matrizes numricas, texto, matrizes celulares,
etc.)

8
Matrizes Celulares Matrizes Celulares
>> A(1,1) = { [1 2 3; 4 5 6; 7 8 9] }; >> A{1,1} = [1 2 3; 4 5 6; 7 8 9];
>> A(1,2) = { 2 + 3i }; >> A{1,2} = 2 + 3i;
>> A(2,1) = { um texto } >> A{2,1} = um texto
>> A(2,2) = {12 : -2 : 0}; >> A{2,2} = 12 : -2 : 0;
>>A = >>A =
[3x3 double] [2.0000+ 3.0000i] [3x3 double] [2.0000+ 3.0000i]
'um texto' [1x7 double] 'um texto' [1x7 double]

Matrizes Celulares Estruturas


>> cellplot(A); so objetos que contm recipientes de dados com
nomes diferentes
esses recipientes so chamados de campos
os campos podem conter qualquer tipo de dado
ao se referir aos campos de uma estrutura usa-se seus
nomes em vez de usar ndices
estruturas podem conter outras estruturas

Estruturas Ajuda On-Line

>> cliente.nome = Joo da Silva; help

>> cliente.custo = 86.50; helpwin


>> cliente.teste.A1C = [6.3 6.8 7.1 7.0 6.7]; helpdesk
>> cliente.teste.CHC = [2.8 3.4 3.6 4.1 3.5]; lookfor

demo

arquivos de ajuda

9
Para Saber Mais Demonstraes

Hanselman, Duane; Littlefield, Bruce; Matlab 5 Guia do matrices/graphs and matrices


matrices/matrix manipulation
Usurio (verso do estudante), Makron Books, 1997.
visualization/vibration movie
visualization/visualizing sound
gallery/knot
Matsumoto, lia Yathie; Matlab 6 - Fundamentos de
gallery/slosh
Programao, Editora rica, 2001. gallery/logo
games/sliding puzzle

10

Вам также может понравиться