Professional Documents
Culture Documents
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.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
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.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
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);
>> 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;
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]
>> 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
valor absoluto fase do nmero do complexo conjugado parte imaginria parte real
Funes de arredondamento
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)')
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
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