Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo
Eugnio Silva
E Adriano Cruz
Introduo
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 de ampla abrangncia.
Introduo
o MatLab uma poderosa ferramenta matemtica e uma linguagem de programao de alto-desempenho para a computao cientfica integra clculos matemticos, visualizao e programao em um ambiente interativo de fcil utilizao
Introduo
o elemento de dados bsico uma matriz
MatLab
>> a = [1 2 3; 4 5 6; 7 8 9] a= 123 456 789 >> b = a b= 1 4 7 2 5 8 3 6 9
matrizes e vetores so manipulados com mais facilidade e rapidez que em programas escritos em linguagens no-interativas como Pascal, C ou Fortran
Introduo
Linha de comandos possvel usar o matlab atravs de comandos emitidos a partir de linha de comandos scripts arquivos que contm comandos matlab
Introduo
toolboxes - bibliotecas de funes que permitem a resoluo de classes particulares de problemas simulink - acessrio que acrescenta uma interface de diagramas de blocos e recursos de simulao real aos demais recursos numricos, grficos e de linguagem
Aplicaes
matemtica e computao desenvolvimento de algoritmos modelagem, simulao e prototipao anlise de dados, explorao e visualizao grficos cientficos em duas e trs dimenses
Help
On line Linha de comandos help help elfun help abs demos demo
Operaes Elementares
>> 4 + 6 2 ans = >> 25 / 5 + 5 \ 25 ans = 8 >> 4 * 2 + 6 * 5 + 2 * 9 ans = 56 10 >> 3 ^ 2 * 2 ^ 2 + 2 ans = 38
Comandos
Prioridades
Parnteses Potncia 3 * 2 ^ 3 = 24 *e/ Resolvendo da esquerda para direita 8/4*3=6 +e Resolvendo da esquerda para direita
Nmeros
Inteiros: 32, -12345 Reais: 3.1789, -23.0, 1.0e-3 Complexos: 3.2 23.5i Inf: Infinito (resultado da diviso por 0) NaN: Not a number 0/0 Contas so feitas com 15 dgitos aproximadamente Comando format controla impresso dos resultados.
Definio de Variveis
>> a = 10 a= 10 >> b = 20; O ; evita que o resultado aparea na tela. >> c = 1 + 2i ou c = 1 + 2j c= 1.0000 2.0000i
Nomes de Variveis
Combinaes de letras e nmeros, comeando com letra n1, ab, temp Nomes especiais eps = 2.220446049250313e-16 (o menor nmero tal que 1 + eps indistinguvel de 1) pi i, k
Variveis Pr-definidas
ans: vriavel padro usada para resultados de expresses do tipo
>> 3 + 5
Variveis Pr-definidas
nargin: nmero de argumentos de entrada nargout: nmero de argumentos de sada
pi i ou j: igual a raiz quadrada de -1 realmax: maior nmero real utilizvel 1.797693134862316e+308 realmin: menor nmero real utilizvel 2.225073858507201e-308
Funes Elementares
abs(x) sin(x) asin(x) cos(x) acos(x) tan(x) exp(x) valor absoluto de x seno de x arc seno x co-seno x arc co-sen x tangente x e elevado a x
Funes Elementares
log(x) log10(x) gcd(x,y) lcm(x,y) max(x) min(x) inv(x) ... log inverso de exp(x) log base 10 de x mdc de x e y mmc entre x e y mximo de x mnimo de x matriz inversa de x
Espao de Trabalho
>> who >> whos >> clear >> save >> load lista variveis na memria lista variveis detalhadamente apaga variveis da memria salva variveis em arq .mat carrega variveis de um .mat
Comandos do SO
>> dir ou ls >> cd ou pwd >> cd . . >> cd \ >> delete <arquivo> >> edit <arquivo> >> type <arquivo> >> quit ou exit arquivos do diretrio diretrio corrente diretrio acima do corrente diretrio raiz apaga arquivo abre arquivo para edio mostra o contedo do arquivo sai do ambiente
Vetores em linha
>> x = [ 1 3 5 ]; >> lenght(x) ans = 3 >> y = [ 3 4 5 ]; >> x + y ans = 4 7 >> z = 3 * y ans = 9 12
Vetores
10
15
Vetores
>> x = [ 1 3 5 ]; >> v1 = [ 3 4 5 6]; >> x + v1
Gerando 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)
Gerando vetores
linspace(x1,x2) gera um vetor linha com 100 pontos igualmente espaados. linspace(x1,x2,n) gera vetor com n pontos entre x1 e x2 >>linspace(0,pi,11)
Gerando vetores
a:b:c gera vetor comeando em a, incrementando por b, at chegar em c. No gera alm de c. >> 0:0.1:1 ans = 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 a : b gera vetor comeando em a at chegar em b incrementando por 1
Manipulando vetores
x = (0:0.1:1)*pi x = 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 3.1416 x(6) = 1.5708 x(1:5) = 0 0.3142 0.6283 2.1991 0.9425 2.5133 0 1.5708 1.2566 2.8274 x(7:end) = 1.8850 3.1416 x(2:2:7) = 0.3142
Operaes Especiais
>>eye(linhas,colunas) Cria matriz identidade >> zeros(n1,n2,n3,...) Matriz de zeros >> ones(n1,n2,...) Matriz de uns >> rand (n1,n2,...) Matriz de rand entre 0 e 1.0 >> det(m) Determinante de m >> inv(m) Inversa de m >> m Transposta de m
Matrizes
1 2 3 4 5 6 7 8
matriz(10) ou matriz(2,3) 9 10 11 12 13 14 15 16
Busca de Sub-Matrizes
>> x = -3:3 x= -3 -2 -1 0 1 2 3 >> k = find(abs(x) > 1) k= 1 2 6 7 >> y = x(k) -3 -2 2 3 >> A= [1 2 3; 4 5 6; 7 8 9] A=1 2 3 4 5 6 7 8 9 >> [ i , j ] = find(A > 5) i=3 j=1 3 2 2 3 3 3
[x,y] = size(A) x contm o nm de linhas e y o de colunas x = size(A,1) y = size(A,2) n = length(A) retorna o nmero de linhas de A retorna o nmero de colunas de A retorna max(size(A))
a ./ b = [a1 /b1 ... an /bn] a .\ b = [a1\b1 ... an\bn] c.^a = [c^a1 ... c^an]
Alguns exemplos
x = [ 1 2 3 4], y = [ 1 1/2 1/3 1/4]; x .* y % dot product 1111 x * y' % scalar product 4 sqrt( x * x') %Comprimento vetor 5.4722
Grficos
Grficos Bidimensionais
>> x = linspace(0, 2 * pi, 30); >> y = sin(x); >> z = cos(x); >> plot(x,y,x,z)
Legendas
>> x = linspace(0, 2 * pi, 30); >> y = sin(x); >> z = cos(x); >> plot(x,y,x,z);
>> plot(x,z,r*)
Hold
Comando plot limpa a janela do grfico antes de desenhar o novo grfico Isto no conveniente se desejarmos adicionar outros grficos no futuro Usar hold para evitar limpeza da janela plot(x,y,'w-'), hold on plot(x,y,'gx'), hold off hold off no limpa a janela (usar clf)
Subplots
A janela do grfico dividida em uma matriz m x n de pequenas janelas. As janelas so contadas entre 1 e m x n Cada subfigura tratada como uma figura podendo ter mais de uma curva, estilos, legendas, cores etc
Subplots
x = linspace(0,2*pi,30); y1 = sin(x); y2 = sin(2*x); y3 = sin(3*x); y4 = sin(4*x); subplot(221), plot(x,y1), legend('y = sen(x)'); subplot(222), plot(x,y2), legend('y = sen(2*x)'); subplot(223), plot(x,y2), legend('y = sen(3*x)'); subplot(224), plot(x,y4), legend('y = sen(4*x)');
Subplots
Grficos Bidimensionais
>> x = -2.9 : 0.2 : 2.9; >> y = randn(5000,1); >> hist(y,x)
Textos Formatados
Possvel aumentar ou diminuir fontes Alguns comandos latex podem ser usados possvel obter os valores de qualquer propriedade atravs do handle da figura handle = plot(x,y); get (handle, 'markersize');
Controlando os eixos
Uma vez que um grfico foi criado possvel mudar a excurso dos valores x e y mostrados na figura. clf, N=100; h=1/N; x = 0:h:1; y = sin(3*pi*x), plot(x,y); axis([-0.5 1.5 -1.2 1.2]), grid;
Controlando os eixos
Grficos Tridimensionais
>> t = 0 : pi / 50 : 10 * pi; >> plot3(sin(t),cos(t),t); >> title(hlice) >> xlabel(sen(t)) >> ylabel(cos(t)) >> zlabel(t) >> grid
Grficos Tridimensionais
%z = f(x,y) x = -0.5*pi:0.1:0.5*pi; y = x; % minusculas [X Y] = meshgrid(x,y); Z = sin(2*X)+sin(3*Y); % maiusculas mesh(X,Y,Z); title('Ex de graf 3D');
Grficos Tridimensionais
Grficos Tridimensionais
>> surf(peaks)
Arquivos M (Scripts)
Armazenam uma sequncia de comandos em um arquivo texto que executado a partir do prompt teis quando o nmero de comandos a serem executados grande, ou caso seja necessrio alterar os valores das variveis e re-executar alguns comandos Devem ter a extenso .m
Scripts
Scripts em Matlab
Scripts no aceitam e no retornam argumentos. Scripts podem alterar as variveis do espao de trabalho (workspace) atual. Scripts podem conter comandos que interagem com o usurio e/ou arquivos. Use scripts para:
Automatizar a execuo de uma seqncia de comandos frequentemente utilizados Documentar os passos de um processo
Scripts em Matlab
%Exemplo de script % clear all; 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
Scripts
Para executar um script armazenado em um arquivo digite o nome do arquivo sem o .m O que aparece na tela so os resultados da execuo dos comandos. echo on faz com que os comandos apaream antes da execuo. echo off faz com que os comandos deixem de aparecer.
& | ~
e ou no
Laos de Repetio
clf; x = -2:0.1:2; hold on; for n = 1:8 plot(x,n*x .*x ); end hold off;
Laos de Repetio
Otimizao de Cdigo
o lao de repetio for i = 0:999 x(i+1) = sin(2*pi*i/100); end
keyboard transfere o controle para o teclado pode ser substitudo por x = sin(2*pi*[0:999]/100); pause(n) suspende execuo por n segundos pause suspende at pressionada que tecla seja
Anlise de Dados
cov(x)
matriz de covarincia componente mnima componente mxima nm. aleatrios uniformemente distrib varincia desvio padro soma dos elementos da coluna
mean(x) mdia
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
Arquivos M de funes
variveis criadas dentro de uma funo permanecem apenas no espao de trabalho da funo funes podem compartilhar variveis com outras funes desde que sejam declaradas como globais arquivos M de funes podem conter mais de uma funo, a funo primria e as sub-funes
Funes em Matlab
function [d] = distPontos(p1,p2) % % Calcula a distancia entre dois pontos % p1 = [x1 y1] e p2 = [x2 y2] % em um espaco bi-dimensional % Entradas: % p1, p2: dois pontos % Sada: % d: distancia entre p1 e p2 % Uso: % d = distPontos(p1, p2) % Autor: % Adriano Cruz % Data: % 2010/03/02 d = sqrt((p1(1) - p2(2))^2 + (p1(2) - p2(2))^2);
Funes em Matlab
p1 = [ 1 1 ]; p2 = [ 0 0 ]; d = distPontos(p1, p2)
Arquivos
Arquivos Formatados
Parecido com C Lembrar que matlab anda no sentido da coluna. Ao ler dados para uma matriz ir preencher no sentido da coluna Ao escrever dados de uma matriz ir ler no sentido da coluna
Arquivos Formatados
(1,1) = (1) (1,2) = (5) (1,3) = (9) (1,4)=(13) (2,1) = (2) (2,2) = (6) (2,3)=(10) (2,4)=(14) (3,1) = (3) (3,2) = (7) (3,3)=(11) (3,4)=(15) (4,1) = (4) (4,2) = (8) (4,3)=(12) (4,4)=(16
Arquivos Formatados
1 2 3 4 5 Considere o arquivo 1 4 9 16 25
Arquivos Formatados
Ser armazenado em um vetor como
1 1 2 4 3 9 4 16 5 25
Arquivos Formatados
1 2 3 4 5 Novamente Considere o arquivo 1 4 9 16 25
Temporizao
Extras
tic: comea a contar o tempo.
Temporizao
tic: comea a contar o tempo.
Matrizes Celulares
so matrizes cujos elementos so clulas
qualquer clula da matriz pode conter qualquer tipo de dado (matrizes numricas, texto, matrizes celulares, etc.)
Matrizes Celulares
>> A(1,1) = { [1 2 3; 4 5 6; 7 8 9] }; >> A(1,2) = { 2 + 3i }; >> A(2,1) = { um texto } >> A(2,2) = {12 : -2 : 0}; >>A = [3x3 double] 'um texto' [2.0000+ 3.0000i] [1x7 double]
Matrizes Celulares
>> A{1,1} = [1 2 3; 4 5 6; 7 8 9]; >> A{1,2} = 2 + 3i; >> A{2,1} = um texto >> A{2,2} = 12 : -2 : 0; >>A = [3x3 double] 'um texto' [2.0000+ 3.0000i] [1x7 double]
Matrizes Celulares
>> cellplot(A);
Estruturas
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
>> cliente.nome = Joo da Silva; >> cliente.custo = 86.50; >> cliente.teste.A1C = [6.3 6.8 7.1 7.0 6.7]; >> cliente.teste.CHC = [2.8 3.4 3.6 4.1 3.5];
Ajuda On-Line
help helpwin helpdesk lookfor demo arquivos de ajuda
Demonstraes
matrices/graphs and matrices matrices/matrix manipulation visualization/vibration movie visualization/visualizing sound gallery/knot gallery/slosh gallery/logo games/sliding puzzle
Temporizao
tic: comea a contar o tempo.