You are on page 1of 13

1) Introduo

Matlab um pacote de alto desempenho para computao e visualizao numrica Centenas de funes e facilidades implementadas Animao Linguagem de programao de alto nvel

1.2) Matlab permite computao simblica?


Sim

1.3) Em quais plataformas Matlab executa?


Praticamente em qualquer plataforma: MS-Windows, Unix, GNU Linux, etc.

1.4) Abrindo a janela do Matlab


Prompt do matlab On-line help

1.5) Fundamentos de Matlab


1.5.1) Matlab windows Command window: >> Graphics window Edit window

1.5.2) On-line help 1.5.3) Entrada-Sada Essencialmente, h apenas um tipo em Matlab: matrix de nmeros complexos Dimenso: size() length() Sensibilidade caixa-alta/baixa: Matlab sensvel caixa Sada Controle de sada: entre com more para paginar a sada Formato de sada o format short o format short e o format long o format long e o format hex

o format rat o format bank Histrico de comandos: usar up-arrow

1.5.4) Tipos de Arquivos M-files: arquivos com extenso .m do tipo ASCII. H dois tipos de arquivos: script files e function files. Programas so escritos em M-files Mat-files: arquivos binrios de dados. Servem para salvar resultados armazenados na memria (comando save e load) Mex-files: arquivos executveis escritos em C e Fortran que podem ser executados diretamente a partir de Matlab

1.5.5) Matlab independente de plataforma Executando Matlab Salvando arquivos Imprimindo

1.5.6) Comandos teis On-line help o help o help topic o lookfor topic o expo : roda um programa de demonstrao Workspace information o who : lista variveis do workspace o whos : lista variveis do workspace com tamanho o what : lista m-, mat- e mex-files do disco o clear: limpa o workspace, todas as variveis so eliminadas o clear x y z : limpa apenas x, y e z Informao sobre diretrio o pwd : mostra diretrio corrente o cd : troca o diretrio corrente o dir : lista o contedo do diretrio corrente o ls : similar ao dir Informaes gerais o computer : tipo do computador o clock : hora o date : data

o more : controla paginao o flops : nmero de operaes de ponto flutuante realizadas Trmino o ^c : aborta o quit : sai do Matlab o exit : sai do Matlab

2. Tutorial 2.1 Uma sesso Matlab mnima


>> 2 + 2 >> x = 2+2 >> y = 2^2 + log(pi)*sin(x) >> y >> theta = acos(-1) >> format short e >> theta >> format long >> theta >> quit

2.2 Criando e trabalhando com matrizes de nmeros


>> x = [1 2 3] >> y = [1; 2; 3] >> z = [ 2 1 0] >> a = x + z >> b = x + y >> a = x.*z >> b = 2*a >> x = linspace(0,10,5); % cria vetor com 5 elementos, espaados linearmente entre % 0 e 10 >> y = sin(x) % operadores sin pode ser aplicada a vetores >> z = sqrt(x).*y

2.3 Criando e imprimindo grficos simples


2.3.1 Desenhar o crculo unitrio Utilizamos a equao paramtrica do crculo: x = cos , y = sin , 0 <= <= 2 >> theta = linspace(0,2*pi,100); >> x = cos(theta); >> y = sin (theta); >> plot(x,y); >> axis('equal'); >> xlabel('x'); >> ylabel('y'); >> title('Circle of unit radius'); 2.3.2 Criando, salvando e executando um script Nome do arquivo: circle.m % circle A script file to draw a unit circle % File written by Rudra Pratap. Last modified 9/14/94 theta = linspace(0,2*pi,100); x = cos(theta); y = sin(theta); plot(x,y); axis('equal'); xlabel('x'); ylabel('y'); title('Circle of unit radius'); >> help circle >> circle 2.3.3 Criando e executando funo function [x,y] = circlefn(r); % CIRCLEFN Function to draw a circle of radius r theta = linspace(0,2*pi,100); x = r*cos(theta); y = r*sin(theta); plot(x,y);

axis('equal'); xlabel('x'); ylabel('y'); title(['Circle of unit radius r = ',num2str(r)]); >> r = 5; >> [x,y] = circlefn(r); >> [cx,cy] = circlefn(2.5); >> circlefn(1); >> circlefn(r^2/(r+5*sin(r))); 2.3.4 Examplo de Script O cdigo abaixo imprime mensagem de cumprimento, dia do ms e hora. disp('Hello! How are you today?'); disp(' '); disp('Today is...'); disp(date); time = fix(clock); % get time as integers hourstr = int2str(time(4)); minstr = int2str(time(5)); if time(5)<10 minstr = [' ', minstr]; end timex = [hourstr ':' minstr]; disp(' '); disp('And th etime is...'); disp(timex);

3. Computao Iterativa 3.1 Matrizes e vetores


3.1.1 Entrada de matrizes/vetores >> A = [1 2 5; 3 9 0] >> x = pi >> B = [2*x log(x)+sin(y); 5i 3*2i] >> x = []; % vetor/matriz vazia A = [1/3 5.55*sin(x) 9.35 0.097; ... 3/(x+2*log(x)) 3 0 6.555; ... (5*x-23)/55 x-3 x*sin(x) sqrt(3)] 3.1.2 ndices A(i,j) se refere ao elemento da linha i e coluna j da matriz A. >> B = [0 0 0; 0 0 5] >> B(2,3) >> C = [0 0 0; 0 0 0; 1 2 3] >> C(3,1:3) 3.1.3 Multiplicao de matrizes Exemplos

A uma matriz 10 x 10 B uma matriz 5 x 10, y um vetor linha com 20 colunas

>> A([1 3 6 9],:) = [B(1:3,:)]; y(1:10)] Uma forma mais sofisticada de indexao fazer uso de vetores 0-1 para fazer referncia a matrizes. Por exemplo, v = [1 0 0 1 1] e Q uma matriz 5 x 5 Ento Q(v,:) pega as linhas de Q cujas entradas de v so no nulas, a saber, as linhas 1, 4 e 5. >> Q = [1 2 3 4 5; 2 3 4 5 1; 3 4 5 1 2;

4 5 1 2 3; 5 1 2 3 4] >> v = [ 1 0 0 1 1]; >> Q(v,:) Transpose


Para uma matriz rde reais, B = A' corresponde a AT Para uma matriz de complexos A, B = A' produz conjugado(A)T

Inicializao de matrizes >> m = 3 >> n = 3 >> A = zeros(m,n) Inicializao dinmica. Utilize [] e laos for ou while Adicionando uma linha ou coluna

O comando A =[A u] adiciona o vetor coluna u ao conjunto de colunas de A. A = [A; v] adiciona o vetor linha v ao cojunto de linhas de A. B = []; for k=1:3, B=[B, k k+1 k+2];

Eliminando uma linha ou coluna >> A(2,:) = []; % deleta a 2a linha >> A(:,3:5) = []; % deleta colunas 3, 4 e 5 >> A([1 3], :) = []; % deleta linhas 1 e 3 Matrizes comuns eye(m,n) % matriz com 1's na diagonal principal zeros(m,n) ones(m,n) rand(m,n) % matriz de nmeros aleatrio distribudos de forma uniforme diag(v) % gera uma matriz diagonal cujos valores so provenientes do vertor 1 diag(A) % obtm uma matriz com a diagonal de A diag(A,1) % retorna a primeira diagonal acima da diagonal principal

Criando vetores a = 0:10:100 % produz [0 10 20 ... 100] b = 0:pi/5:2*pi % produz [0 pi/50 2*pi/50 ... 2*pi] u = 2:10 % [2 3 4 ... 10] u = [1:10 33:-2:19] linspace(a,b,n) % produz um vetor de comprimento n de a at b, com % nmeros linearmente espaados u = linspace(0,20,5) logspace(a,b,n) logspace(0,3,4) % produz [1 10 100 1000]

3.2 Operaes com matrizes


3.2.1 Operaes Aritmticas A + B % A e B devem ter as mesmas dimenses AB A*B % vlida se o nmero de colunas de A igual ao nmero de linhas de B A/B = A.B^-1 % vlida para matrizes quadradas de mesmo tamanho, onde B % inversvel A^2 = A*A % A deve ser uma matriz quadrada Diviso esquerda x = A \ b corresponde a soluo do sistemas A x = b x = A^-1*b Operaes com matrizes e vetores u.*v % produz [u1v1 u2v2 ... ] u./v % produz [u1/v1 u2/v2 ...] u.^v % produz [u1^v1 u2^v2 ...] C = A.*B % produz Cij = AijBij Claramente A^2 diferente de A.^2 Alguns exemplos

>> A = [1 2 3; 4 5 6; 7 8 9] >> x = A(1,:)' >> x'*x >> x*x' >> A*x >> A^2 >> A.^2 % quando o '.' precede o operador aritmtico, as operaes so executadas elemento a elemento, logo A.^2 proudz a matriz (aij)^2 Operaes relacionais H seis operadores relacionais: < <= > >= == ~= (diferente) Se x = [1 5 3 7] e y [0 2 8 7], ento: x < y produz [0 0 1 0] x <= y produz [0 0 1 1] x > y produz [1 1 0 0] x >= y produz [1 1 0 1] x == y produz [0 0 0 1] x ~= y produz [1 1 1 0] Operaes lgicas Os operadores lgicos so: &, |, ~ e xor Para x = [0 5 3 7] e y = [0 2 8 7] (x>y) & (x>4) produz [0 1 0 0] x | y produz [0 1 1 1], pois x ou y no nulo ~(x | y) produz [1 0 0 0] Outras operaes isfinite % retorna true (1) para todos os elementos finitos da matriz isnan % retorna true (1) para todos os elementos que no so nmeros find % retorna os ndices dos elementos no nulos da matriz

Para x = [0 2 5 7], find(x) retorna [2 3 4]

3.2.4 Funes matemticas elementares


Funes exponenciais exp exponencial log logaritmo natural log10 logaritmo na base 10 sqrt raiz quadrada Funes complexas

abs angle conj imag real

valor absoluto fase do nmero do complexo conjugado parte imaginria parte real

Funes de arredondamento

fix floor ceil round rem sign

arredonda na direo do 0 exemplo: fix([-2.33 2.66]) = [-2 2] arredonda na direo -infinito floor([-2.33 2.66]) = [-3 2] arredonda na direo +infinito ceil([-2.44 2.66]) = [-2 3] arredonda na direo do inteiro mais prximo round([-2.44 2.66]) = [-2 3] resto aps diviso inteira se a = [-1.5 7], b = [2 3], ento rem(a,b) = [-1.5 1] sinal sing([-2.33 2.66]) = [-1 1]

3.2.6 Trabalhando com cadeias de caracteres Cadeias de caracteres so delimitadas pelo apstrofe ('), por exemplo, 'string'. >> message = 'deixe me em paz' Podemos criar um vetor com uma lista de nomes, fazendo:

>> nomes = ['Joao'; 'Maria'; 'Carla'; 'Marcelo'] Outra forma e construir uma matriz com o comando str2mat: >> oi = str2mat('oi ','ola', 'boa noite') Manipulando cadeias de caracteres >> [oi(2,:) nomes(3,:)] % produz ola Carla Funes adicionais

abs blanks(n) deblank eval findstr int2str isstring lower num2str strcmp

converte a string em cdigos ASCII cria uma string de n brancos remove brancos do fim da string executa a string como comandos encontra uma sub-string especfica dentro de outra string converte um inteiro em string retorna 1 se o argumento uma string conver caixa-alta para caixa-baixa converte um nmero em string compara duas strings

Avaliao de funes Matlab oferece uma funo poderosa, eval, que executa os comandos contidos em uma string. >> eval('x = 5*sin(pi/3)')

3.3 Usando funes internas do MatLab


Se voc sabe o nome da funo, voc pode usar comando help para obter informaes de uso Se voc no sabe, ento use o comando lookfor string para buscar informaes sobre string >> lookfor eigenvalue >> help eig

3.4 Salvando e carregando dados


O comando save pode ser usado para salvar todo o workspace ou apenas algumas variveis. Os dados podem ser salvos em arquivos binrios .mat

ou em arquivos tipo texto

Alguns exemplos de comandos teis:


save dados.mat x y save dados.dat x -ascii save load load dados

salva as variveis x e y salva a varivel x em formato ASCII no arquivo dados.dat salvo toda a rea de trabalho no arquivo matlab.mat carrega a rea de trabalho a partir do arquivo matlab.mat carrega os dados armazenados em dados.mat

3.5 Traando grficos simples


>> x = 0:.1:20; >> y = exp(0.1*x).sin(x); >> plot(x,y) >> xlabel('Tempo (t) em segundos (s)'); >> ylabel('Resposta em amplitude em mm'); >> title('Um grafico 2-D simples'); >> print resp_amp.eps -deps

You might also like