Professional Documents
Culture Documents
MANUAL DO MATLAB
Curso de MATLAB
Projeto REENGE - DEL
Elaborao/ Redao: Leonardo Pereira Bastos Reviso: Prof. Celso Munaro Data: maro de 1997 Esta apostila foi elaborada dentro do projeto REENGE/DEL, cujo objetivo melhorar as condies de ensino do curso de Engenharia Eltrica via suporte computacional adequado.
ndice:
PARTE I:
1. Informaes Iniciais 1. 2. 2. Iniciando 1. 2. 3. 4. 5. 6. 7. 8. 9. Linha de Comando Matrizes Simples Elementos da Matriz Linhas de Comando e Variveis do MATLAB Obtendo Informaes do Espao de Trabalho O Comando Help Finalizando e Salvando o Espao de Trabalho Nmeros e Expresses Aritmticas Nmeros Complexos e Matrizes Instalao Diretrio
10. Formatos de Sada 11. Funes 3. 4. Operaes com Matrizes Operaes com Vetores 1. 2. 3. 5. Operaes Relacionais Operaes Lgicas Funes Matemticas
6.
Introduo aos Grficos 1. 2. 3. 4. 5. 6. 7. Funes Elementares de Plotagem Criando um Grfico Estilos de Linha, Marcadores e Cor Adicionando Linhas a um Grfico Existente Dados Imaginrios e Complexos Plotando Matrizes Copiando Grficos
PARTE I
Informaes Bsicas
Esta primeira parte traz os captulos de 1 a 6, e contm as informaes necessrias para se comear a trabalhar com MATLAB. Aps esta parte o leitor deve estar apto a declarar variveis no prompt, seja do tipo vetor ou matriz, realizar operaes com estas variveis, utilizar o comando Help e plotar grficos.
Captulo 1
Informaes Iniciais
Este captulo possui informaes para a instalao do MATLAB verso 4.20 no seu computador.
1.1 Instalao
A instalao do MATLAB no computador feita da seguinte forma: Insira o disco 1 e chame o arquivo setup.exe. O programa de instalao o informar sobre o espao disponvel no disco rgido e o espao necessrio para a instalao do programa; caso o espao disponvel seja suficiente para a instalao, ser perguntado um nome para o diretrio onde o programa ser instalado (o nome padro do diretrio MATLAB). medida que a instalao for sendo realizada, o programa de instalao pedir o prximo disco (at o disco 5). No final da instalao, perguntado se deseja-se instalar alguma toolbox. Responda no. A mesma resposta deve ser dada com respeito aos compiladores. Quando a instalao terminar, insira o disco 6 e copie o diretrio control para o caminho c:/matlab/toolbox/matlab/. Desta forma, a toolbox de controle ficar disponvel no caminho c:/matlab/toolbox/matlab/control/ Existe um arquivo no diretrio principal que define os caminhos que o MATLAB segue (em quais subdiretrios o MATLAB procura os arquivos ou funes necessrias); este arquivo uma espcie de autoexec.bat do MATLAB. Este arquivo o matlabrc.m; ele pode ser modificado em qualquer editor de texto de modo a definir o caminho para o diretrio da toolbox de controle. Os caminhos so definidos na seguinte parte do arquivo matlabpath([... C:\MATLAB\toolbox\local,... ;C:\MATLAB\toolbox\matlab\control,... (linha adicionada) ;C:\MATLAB\toolbox\matlab\datafun,... ;C:\MATLAB\toolbox\matlab\elmat,... ]); onde a linha que deve ser adicionada est indicada acima.
Obs.: O MATLAB utiliza, geralmente, o Bloco de Notas do Windows para que se possa criar ou alterar arquivos .m. Por isso, quando a instalao do MATLAB terminar, deve-se fazer o seguinte: No Windows 3.x No gerenciador de arquivos, clique uma vez sobre qualquer arquivo com extenso .m e, no menu Arquivo, escolha Associar. No item Arquivos com extenso coloque m (extenso dos arquivos que o MATLAB utiliza). No item Associar com escolha o Bloco de Notas. Clique em OK e pronto.
No Windows 95
No Explorer, clique no menu Exibir e escolha Opes. Escolha em tipos de arquivo o cone Novo tipo. Onde estiver Descrio do tipo escreva MATLAB; onde estiver escrito Extenso associada escreva m. Em seguida escolha Novo e preencha da seguinte forma: Aes: Abrir Aplicativo utilizado para executar a ao: c:\windows\notepad.exe Clique em OK at que todas as janelas sejam fechadas.
1.2 Diretrio
O diretrio MATLAB composto de vrios subdiretrios. Os dois que possuem maior importncia a nvel de conhecimento do aluno so os descritos abaixo: /bin /toolbox/matlab Diretrio em que se encontra o arquivo matlab.exe, arquivo de execuo do MATLAB. Diretrio onde esto localizados os subdiretrios de toolboxes (/matlab, /control, etc.).
Captulo 2
Iniciando
Neste captulo apresentado o espao de trabalho do MATLAB. mostrado como se lidar com matrizes e como utilizar o comando Help para obter informaes de utilizao das funes.
>> log(sqt(atan(2*(3+4))))
MATLAB responde com uma mensagem de erro do tipo
>> plo
A tabela abaixo lista as teclas que podem ser usadas para edio na linha de comandos: Ctrl-P Ctrl-N Ctrl-B Ctrl-F Delete Ctrl-L Ctrl-R Ctrl-A Ctrl-E Ctrl-U Ctrl-D Ctrl-K Chama uma linha de comando anterior. Chama uma linha de comando posterior. Move o cursor um caractere esquerda. Move o cursor um caractere direita. Move o cursor esquerda, apagando um caractere. Move o cursor uma palavra esquerda. Move o cursor uma palavra direita. Move o cursor para o comeo da linha. Move o cursor para o final da linha. Cancela a linha. Apaga o caractere que est sobre o cursor. Apaga at o final da linha.
A maneira mais fcil de se declarar matrizes fazendo a explicitao da lista de elementos na linha de comando, seguindo as convenes abaixo: Separar os elementos da lista de elementos atravs de espaos ou vrgulas. Colocar os elementos entre colchetes, [ ]. Usar (;) ponto-e-vrgula para indicar o fim de uma linha. Por exemplo, entrando com a linha de comando
>> A=[1 2 3; 4 5 6; 7 8 9]
resulta em
>> matriz
atribui matriz A os dados correspondentes.
Pode-se construir grandes matrizes utilizando matrizes menores como elementos. Por exemplo, para acrescentar uma nova linha matriz A:
>> A = A(1:3,:);
que fornece a seguinte matriz
varivel = expresso
ou simplesmente
expresso
Podem ser compostas expresses com operadores e outros caracteres especiais, com funes, e com nomes de variveis. A execuo da expresso produz uma matriz. A matriz mostrada na tela e assume o nome da varivel definida na linha de comando para que possa ser utilizada em uma outra situao. Se for omitido o nome da varivel e o sinal =, MATLAB cria automaticamente uma varivel com o nome ans. Por exemplo, digitando a expresso
>> who
Para verificar uma listagem mais completas sobre as variveis armazenadas deve-se utilizar o comando whos, o qual traz informaes sobre o nome, a dimenso da matriz correspondente, o nmero de elementos dessa matriz, entre outros.
>> help
sem nenhum argumento mostra uma lista de diretrios que contm arquivos relacionados com MATLAB. Cada linha mostrada lista o nome de um diretrio seguido por uma descrio do contedo do mesmo. Alguns diretrios so associados com os comandos bsicos do MATLAB. Outros contm toolboxes, tais como control e signal; esses possuem funes adicionais do MATLAB cobrindo reas de aplicaes mais especializadas. Para uma lista de funes relacionadas a um determinado diretrio, digita-se help seguido pelo nome do mesmo. Aparece uma lista de comandos, funes e smbolos especficos do MATLAB. O comando help seguido por estes comandos ou funes fornece informaes sobre como utiliz-los em uma linha de comando. Com o comando
>> save
Este comando salva todas as variveis em um arquivo em disco chamado matlab.mat. Na prxima vez que MATLAB chamado, pode-se executar o comando load para restaurar o espao de trabalho com as variveis de matlab.mat. Podem ser utilizados os comandos save e load em arquivos com outros nomes, ou salvar somente algumas variveis. O comando save temp salva as variveis em um arquivo de nome temp.mat. O comando
potncia
MATLAB possui tambm funes matemticas elementares encontradas em calculadoras cientficas. Estas funes incluem abs, sqrt, log e sin. Voc pode facilmente adicionar mais funes atravs dos arquivos-M. Algumas funes simplesmente retornam valores especiais comumente utilizados, como a funo pi que retorna o valor da constante . A funo Inf indica resultado infinito; uma diviso por zero gera como resposta Inf. A varivel NaN (Not a Number) possui diferentes propriedades com relao varivel Inf. Uma diviso 0/0 ou Inf/Inf produz NaN como resposta.
>> z = 3 + 4*i
Uma outra forma
>> w = r*exp(i*theta)
Quando forem entrados nmeros complexos como elementos de matriz com os colchetes, deve ser evitado qualquer espao em branco. Uma expresso como 1 + 5*i, com espaos em volta do sinal +, representa dois nmeros. Isto tambm vlido para nmeros reais; uma espao antes do exponencial, como em 1.23 e-4, causa um erro. O nome de uma funo do MATLAB tambm pode ser usada como o nome de uma varivel. Quando utilizado como uma varivel, a funo original se torna indisponvel no espao de trabalho at que a varivel seja apagada.
2.11 Funes
Grande parte do poder do MATLAB atribudo ao extensivo conjunto de funes. Algumas das funes so intrnsecas ao MATLAB. Outras funes esto disponveis na biblioteca de arquivos-M distribudos com MATLAB (a toolbox do MATLAB). Ainda existem outras que so adicionadas por usurios individuais ou grupos de usurios, para aplicaes mais especializadas. Esta uma importante caracterstica do MATLAB; todo usurio pode criar funes que atuam da mesma forma que uma funo intrnseca do MATLAB.
Captulo 3
As funes elementares de matrizes e a sintaxe das operaes entre matrizes so o assunto deste captulo. A linha de comando B = A indica que a varivel B recebe a transposta da matriz A. Para matrizes complexas, teremos que a linha de comando acima fornece a transposta complexa conjugada. Assim, para obtermos somente a transposta de uma matriz complexa devemos fazer B = conj (A). A adio e subtrao de matrizes pode ser feita entre matrizes de mesma dimenso ou entre um escalar e uma matriz. Na primeira, cada elemento de uma matriz somado ou subtrado do correspondente na outra matriz. Na segunda forma, o escalar adicionado ou subtrado de todos os elementos do outro operando. A operao de multiplicao definida quando o nmero de colunas da primeira matriz for igual ao nmero de linhas da segunda matriz. Dependendo das dimenses envolvidas, o resultado pode ser uma matriz, um vetor ou, at mesmo, um escalar. O produto de um escalar por uma matriz resulta em todos os elementos da matriz multiplicados pelo escalar. Se A uma matriz quadrada no-singular, ento A\B e B/A corresponde formalmente a multiplicao esquerda e direita de B pela inversa de A; ou seja, inv(A)*B e B*inv(A), mas o resultado obtido diretamente sem o clculo da inversa. Em geral X = A\B uma soluo para A*X = B X = B/A uma soluo para X*A = B A diviso esquerda, A\B, definida sempre que B tiver o mesmo nmero de linhas que A. Dependendo se A for quadrada ou no, deve-se usar algum mtodo de fatorao. A diviso normal de um escalar pelo outro feita fazendo-se x/y. A expresso A^p eleva A a p-sima potncia e definida se A uma matriz quadrada e p um escalar. MATLAB trata expresses como exp(A) e sqrt(A) como operaes de vetores, definidas em cada elemento de A. As funes elementares de matrizes incluem poly - polinmio caracterstico det - determinante trace - trao da matriz exp - exponencial de cada elemento da matriz log - logaritmo de cada elemento da matriz sqrt - raiz quadrada de cada elemento da matriz MATLAB tambm calcula funes transcendentais, tais como exponencial e logaritmo da matriz. Estas funes especiais so definidas somente para matrizes quadradas. Uma funo matemtica transcendental interpretada como uma funo da matriz se um m acrescentado ao nome da funo. As trs funes abaixo so distribudas juntamente com o MATLAB expm - matriz exponencial logm - matriz logartmica sqrtm - matriz raiz quadrada
Captulo 4
MATLAB compara os elementos correspondentes de cada matriz.; o resultado uma matriz de 1s e 0s, com 1 representando verdadeiro e 0 representando falso.
A funes trigonomtricas includas no MATLAB so sin - seno cos - cosseno tan - tangente asin - arco-seno acos - arco-cosseno atan - arco-tangente atan2 - arco-tangente para os quatro quadrantes sinh - seno hiperblico cosh - cosseno hiperblico tanh - tangente hiperblica asinh - arco-seno hiperblico acosh - arco-cosseno hiperblico atanh - arco-tangente hiperblico
MATLAB inclui como funes elementares abs - valor absoluto ou mdulo de um nmero complexo angle - ngulo de fase sqrt - raiz quadrada real - parte real imag - parte imaginria conj - complexo conjugado round - arredondamento para o inteiro mais prximo fix - arredondamento para o inteiro mais prximo de zero floor - arredondamento para o inteiro mais prximo de ceil - arredondamento para o inteiro mais prximo de + sign - funo sinal rem - remanescente ou mdulo gcd - mximo divisor comum lcm - mnimo mltiplo comum exp - exponencial de base e log - logaritmo natural log10 - logaritmo de base 10
Captulo 5
>> x = 1:5
gera um vetor linha contendo os nmeros de 1 a 5 com incremento de uma unidade. Desta forma produzido o vetor
x= 12345
Pode-se utilizar incrementos diferentes da unidade como em
>> y = 0: pi/4: pi
que resulta em um vetor linha comeando em zero e terminando em (3.1416) com incremento de /4 (0.7854). Esta notao do dois pontos possibilita a fcil gerao de tabelas. Para se obter um vetor coluna basta transpor o vetor linha gerado. Outras funes para gerao de vetor incluem o logspace, o qual gera vetores espaados logaritmicamente, e o linspace, que permite que voc especifique o nmero de pontos ao invs do incremento.
Captulo 6
>> t = 0:pi/100:2*pi; >> x = sin(t); >> y1 = sin(t+.25); >> y2 = sin(t+.5); >> plot(x,y1,r-,x,y2,g)
plot produz um grfico de y1 versus x e y2 versus x no mesmo eixo. O primeiro grupo de dados (y1) plotado com uma linha vermelha slida e o segundo grupo (y2) plotado com uma linha tracejada verde. A linha de comando abaixo adiciona um ttulo ao grfico e nome aos eixos:
>> plot(X,Y,S)
S uma string envolvida por aspas e construda com os caracteres mostrados na tabela abaixo: Smbolo y m c r g b w k Cor amarelo magenta ciano vermelho verde azul branco preto Smbolo . o x + * : -. -Por exemplo, plot(X,Y,b*) plota um asterisco azul em cada ponto de dado. Se no for especificada uma cor, a funo plot automaticamente utiliza as cores na ordem em que se apresentam na tabela acima. Desta forma, para uma linha somente, o grfico traado em amarelo. Estilo de Linha ponto crculo x sinal positivo asterisco slida pontilhada trao e ponto tracejada
>> plot(x) >> hold on >> plot(y1,) >> plot(y2,-.) >> hold off
>> plot(Z)
onde Z um vetor ou uma matriz complexa, equivalente a
>> plot(real(Z),imag(Z))
O arquivo-M cria uma matriz que possui os valores da funo para x e y na faixa de -3 a 3. Os valores de x variam ao longo das colunas e os de y ao longo das linhas. Voc pode especificar o tamanho da matriz quadrada que retornada passando como argumento funo peaks. Por exemplo,
>> M = peaks(20)
cria uma matriz de dados de dimenso 20 por 20. Se voc omitir o argumento de entrada, o valor utilizado o padro, que 49. A funo plot pode ter um nico argumento que pode ser uma matriz:
>> plot(Y)
Isto faz com que seja traada uma linha no grfico para cada coluna de Y. O eixo x assumido como sendo o ndice do vetor linha, 1:m, onde m o nmero de linhas de Y. Por exemplo, a linha de comando
>> plot(peaks)
produz um grfico com 49 linhas. A funo plot tambm aceita dois vetores ou matrizes como argumentos. Por exemplo,
>> plot(peaks,rot90(peaks))
produz um grfico da funo peaks em funo da transposta deslocada de 90° da mesma funo peaks. Em geral, se plot utilizada com dois argumentos, e se X ou Y possuem mais de uma linha ou coluna, ento:
- Se Y uma matriz, e x um vetor, plot(x,Y) plota sucessivamente as linhas ou colunas de Y, utilizando diferentes cores ou tipos de linha para cada, em funo do vetor x. A orientao de linhas ou colunas selecionada de forma a possuir o mesmo nmero de elementos de x. Se Y quadrada, suas colunas que so usadas. Se X uma matriz e y um vetor, plot(X,y) plota cada linha ou coluna de X em funo do vetor y.
- Se ambos X e Y so matrizes de mesma dimenso, plot(X,Y) plota as colunas de X em funo das colunas de Y. Tambm pode ser utilizada a funo plot com vrios pares de matrizes no argumento.
>> plot(X1,Y1,X2,Y2,...)
Cada par X-Y plotado, gerando mltiplas linhas. Os diferentes pares podem ser de dimenses diferentes.
PARTE II
Informaes Avanadas
A segunda parte traz os captulos de 7 a 15, e contm tpicos mais avanados. Para avanar nesta parte o leitor deve ter compreendido a primeira parte. Os tpicos mais importantes e que o usurio deve ter o controle ao final desta parte dizem respeito a representao polinomial, a utilizao das opes de fluxo de controle e a criao de arquivos-M, sejam nas formas script ou funo.
Captulo 7
Anlise de Dados
Este captulo apresenta um grupo de funes que possuem a capacidade de anlise de dados. Um grupo de funes que possui a capacidade de anlise de dados mostrado abaixo: max - valor mximo min - valor mnimo mean - valor mdio std - desvio mdio sort - ordenar sum - soma dos elementos prod - produto dos elementos cumsum - soma acumulativa dos elementos cumprod - produto acumulativo dos elementos hist - histograma
Quando os argumentos forem vetores, no ir importar se o vetor orientado por linha ou por coluna. Se o argumento for uma matriz, as funes operaro orientadas por coluna. Desta forma, se voc aplicar a funo max a uma matriz, o resultado um vetor linha contendo o valor mximo de cada coluna.
Captulo 8
Funes de Matriz
Neste captulo so descritas algumas funes especiais para aplicaes em matrizes, tais como fatorao e decomposio.
>> eig(A)
que retorna os autovalores em uma vetor coluna. Se A real e simtrica, os autovalores so reais. Mas se A no simtrica, os autovalores frequentemente so nmeros complexos. Para se obter os autovalores e os autovetores de uma vez basta utilizar a seguinte linha de comando:
Captulo 9
residue - expanso em fraes parciais polyder - derivada do polinmio polyfit - ajuste do polinmio
fftshift - troca os quadrantes da matriz Para argumentos bidimensionais, como matrizes, usam-se as funes modificadas: fft2 - fft bidimensional ifft2 - ifft bidimensional conv2 - convoluo bidimensional
>> y = filter(b, a, x)
filtra os dados contidos no vetor x com o filtro descrito pelos vetores a e b, criando os dados filtrados y. A estrutura do filtro pode ser descrita pela equao diferencial
H(z) = Y(z) = b(1) + b(2)z 1 +...+b(nb)z (na 1) X(z) 1 + a(2)z 1 +...+a(na)z (na 1)
A funo freqz retorna a resposta complexa em frequncia de filtros digitais.
Captulo 10
Funes de Funo
Neste captulo so tratadas as funes do MATLAB que no trabalham com matrizes numricas, mas com funes matemticas. As funes de funo so descritas como sendo: Integrao numrica - Equaes no-lineares - Soluo de equaes diferenciais MATLAB representa funes matemticas atravs de arquivos de funo-M. Por exemplo, a funo
f(x) =
pode ser encontrada no MATLAB, pois foi criada atravs de um arquivo-M chamado humps.m.
Pelo grfico, pode-se observar que a funo humps apresenta dois zeros. A localizao do zero prximo a x = 0
Captulo 11
Fluxo de Controle Os fluxos de controle encontrados na maioria das linguagens de programao so tratados neste captulo. As linhas de comando de fluxo de controle permitem que MATLAB seja utilizado como uma linguagem de programao completa de alto-nvel.
Captulo 12
>> z = 1:99;
o valor mdio deste encontrado atravs do comando
>> mean(z)
que resulta em
ans = 50
As informaes abaixo so para o arquivo mean.m, mas o princpio vlido para todos os arquivos funo:
A primeira linha declara o nome da funo e os argumentos de entrada e sada. Sem esta linha, o arquivo um arquivo script, e no um arquivo funo. O smbolo % indica que o restante da linha um comentrio e deve ser ignorado. As primeiras linhas descrevem o arquivo-M e so mostradas quando voc digita help mean. As variveis m, n e y so locais a mean e no aparecem no espao de trabalho aps mean ter terminado. (Ou, se elas existem, permanecem inalteradas.) No necessrio definir os inteiros de 1 a 99 em uma varivel de nome x. No exemplo, a funo mean foi usada com uma varivel z. O vetor z que contm os inteiros de 1 a 99 foi passado ou copiado para mean onde ele se tornou uma varivel local de nome x. Pode-se criar uma ajuda online para os arquivos-M entrando com um texto de uma ou mais linhas de comentrios, comeando pela segunda linha do arquivo. Por exemplo, o arquivo-M angle.m contm function p = angle(h) %ANGLE Phase angle. ANGLE(H) returns the phase angles, in radians, of a matrix with complex elements. See also ABS, UNWRAP. Quando se entra com help angle, as linhas 2, 3 e 4 so mostradas. Baseado nisto, a primeira linha de comentrios em qualquer arquivo-M deve conter o maior nmero de informaes possveis.
>> s = Hello
resulta em
s= Hello
O texto armazenado em um vetor, sendo um caractere por elemento. Neste caso,
Hello World
A Funo eval
A funo eval trabalha com variveis do tipo texto e implementa uma poderosa facilidade de macro. eval(t) faz com que o texto contido em t seja avaliado. Por exemplo, t = 1/(i+j-1); for i = 1:n for j = 1:n a(i,j) = eval(t); end end cria uma matriz a de dimenso n por n, onde cada elemento avaliado pela funo que est descrita por t.
Captulo 13
Arquivos de Disco
Os comandos relacionados com arquivos que permitem a importao e a exportao de dados so os assuntos deste captulo. Os comandos do MATLAB save e load, gravam e executam o contedo do espao de trabalho, respectivamente. Outros comandos relacionados com arquivos de disco permitem executar programas externos e torna possvel a importao e a exportao de dados. Alguns desses comandos so dir, type, delete e cd. Eles atuam de forma idntica como atuam no MS-DOS.
Gravar os dados em um arquivo-MAT utilizando o comando save, e escrever um programa em C para traduzir este arquivo-MAT para o formato que se desejar.
Captulo 14
O Debugger do MATLAB
Este captulo descreve comando que auxiliam na descoberta de erros que ocorrem durante o tempo de execuo. Apesar da linguagem que MATLAB utiliza ser menos complexa que as outras linguagens de programao, ele possui sua prpria sintaxe, e talvez seja necessrio reparar alguns erros que venham a acontecer. MATLAB encontra erros de sintaxe durante a compilao. Estes erros usualmente so fceis de consertar. MATLAB tambm pode encontrar erros durante o tempo de execuo; estes erros tendem a ser mais difceis de serem repararados, pois o espao de trabalho local funo perdido quando um erro fora o retorno ao prompt do MATLAB e ao espao de trabalho principal. Se utiliza-se o ponto-e-vrgula para que os resultados imediatos das linhas de comando no sejam mostrados, no se saber onde ocorreu o erro. Para se mostrar os resultados intermedirios, pode-se utilizar qualquer um dos mtodos abaixo: Remover os ponto-e-vrgulas de forma que se possa visualizar os resultados imediatos. Adicionar o comando keyboard para que se possa examinar a situao do espao de trabalho no ponto onde keyboard foi inserido. Retirar a declarao de function para que os arquivos-M possam ser executados como script, tornando os resultados intermedirios disponveis no espao de trabalho principal. Utilizar o debugger do MATLAB. Os trs primeiros mtodos requerem a edio do arquivo-M. O ltimo mtodo foi introduzido a partir da verso 4.0 do MATLAB, e os seus comandos so dbstop dbclear dbcont dbdown dbstatus dbstep dbtype dbup dbquit Introduz uma interrupo Remove a interrupo Continua a execuo Muda o contexto do espao de trabalho local Lista todas as interrupes Executa uma ou mais linhas Lista os arquivos-M com o nmero das linhas Muda o contexto do espao de trabalho local Finaliza o modo debug
Captulo 15
Arquivos E/S
As funes de E/S de arquivo do MATLAB que permitem a leitura e a escrita em formato diferente ao gerados pelo mesmo so descritas neste captulo. As funes de E/S (Entrada/Sada) de arquivo do MATLAB permitem a leitura de dados coletados em outro formato diretamente pelo MATLAB, ou a escrita de dados gerados pelo MATLAB no formato requerido por outro programa ou dispositivo. As funes lem e gravam arquivos de texto formatados e arquivos binrios de dados.
Outras strings de permisso podem ser obtidas com o comando help fopen. A funo fopen retorna um identificador de arquivo, que um inteiro positivo atribudo ao arquivo pelo sistema operacional. Este identificador de arquivo basicamente um atalho para se referenciar o arquivo. As funes de E/S de arquivo do MATLAB utilizam o identificador como argumento para identificar o arquivo aberto para leitura, escrita ou encerramento. Se o arquivo no pode ser aberto, fopen retorna -1 como identificador. aconselhvel testar o identificador cada vez que um arquivo aberto. Um segundo valor que retornado pode fornecer informao adicional sobre erros. Por exemplo, se MATLAB no encontra o arquivo pen.dat, o comando
>> A = fread(fid,Inf)
l at o final do arquivo, preenchendo a matriz A como um vetor coluna. Omitir o tamanho do argumento produz o mesmo efeito. O
argumento de preciso numrica controla o nmero de bits lidos em cada valor e a interpretao destes bits como valores caractere, inteiro ou ponto flutuante. Algumas precises comuns incluem char e uchar para caracteres com sinal e sem sinal (tipicamente 8 bits) short e long para inteiros curtos e longos (tipicamente 16 e 32 bits, respectivamente) float e double para valores em ponto flutuante de preciso simples e dupla (tipicamente 32 e 64 bits, respectivamente) Se fid se referir a um arquivo aberto contendo valores em ponto flutuante, ento
>> A = fread(fid,10,float)
l 10 valores em ponto flutuante preenchendo um vetor coluna A.
A funo de entrada de texto do MATLAB, fscanf, similar funo fprintf. fscanf possui como argumento o identificador para o arquivo de texto aberto, e uma string de controle do formato contendo caracteres e especificadores de converso, nesta ordem. Os especificadores para fscanf so precedidos pelo caractere %; converses comuns incluem %s para converter uma string %d para converter um nmero decimal %f para converter um valor em ponto flutuante O exemplo a seguir faz a leitura do arquivo com os dados exponenciais escrito anteriormente:
>> A = fscanf(fid,%5d,100);
faz a leitura de 100 valores decimais para um vetor coluna A, e
>> A = fscanf(fid,%5d,[10,10]);
faz a leitura de 100 valores decimais para uma matriz A 10x10.
PARTE III
Grficos Avanados
A ltima parte traz o captulo 16 que contm a parte avanada de grficos. So descritas as funes especiais para grficos 2-D e a introduo e as funes especiais para grficos 3-D. Os recursos de alterao de cores e plotagem de mais de um grfico em uma mesma figura tambm so mostrados. Por fim, so explicados os objetos de nvel inferior, essenciais ao entendimento da programao no MATLAB.
Captulo 16
Grficos Avanados
O sistema grfico do MATLAB incorpora uma variedade de tcnicas sofisticadas para apresentao e visualizao de dados. Este sistema construdo atravs de um conjunto de objetos grficos, tais como linhas e superfcies, cuja presena pode ser controlada pelo ajuste dos valores das propriedades de cada objeto. Entretanto, em virtude do MATLAB possibilitar um rico ajuste nas funes grficas 2-D e 3-D, na maior parte do tempo no necessrio acessar estes objetos grficos, os quais so considerados objetos de baixo nvel.
>> month = [Jan; Feb; Mar; Apr; ... May; Jun; Jul; Aug; ... Sep; Oct; Nov; Dec]; >> plot(temp,precip,o) >> axis([28 80 2.5 5.2]) >> xlabel(temp) >> ylabel(precip) >> title(Boston)
A linha de comando axis, do exemplo, acima introduz espao extra ao grfico atravs do ajuste da escala dos eixos a valores maiores que a faixa de dados. Isto permite que o texto fique dentro do grfico.
bar - cria um grfico do tipo barra compass - cria um grfico de ngulos e mdulos de nmeros complexos onde a representao dos pontos feita por setas com incio na origem errorbar - cria um grfico com barras de erro feather - cria um grfico de ngulos e mdulos de nmeros complexos onde a representao dos pontos feita por setas com comeo em pontos igualmente espaados ao longo do eixo horizontal fplot - avalia uma funo e plota os resultados hist - cria um histograma polar - cria um grfico em coordenadas polares dos ngulos em funo dos raios quiver - cria um grfico do gradiente ou de outro campo do vetor rose - cria um histograma de ngulo stairs - cria um grfico similar a um grfico de barra, mas sem as linhas internas fill - desenha um polgono e o preenche com cores slidas ou interpoladas
intervalo
Obs.: Ser utilizado o termo superfcie mesh para indicar os grficos criados atravs do comando mesh. Alm das funes de insero de comentrios e notas mostradas para os grficos 2-D, MATLAB possui as seguintes funes para os grficos 3-D: zlabel - define um nome para a varivel do eixo z clabel - define identificaes para os contornos em grficos de contorno MATLAB permite a especificao do ponto de visualizao do grfico. Em geral, as vistas so definidas por uma matriz de transformao 4 por 4 que o MATLAB utiliza para transformar um grfico 3-D em uma tela 2-D. Entretanto, a funo abaixo permite a especificao do ponto de viso de uma maneira simplificada: view - ajusta o ponto de viso atual onde os parmetros de entrada podem ser o azimute (rotao horizontal) e a elevao vertical, ambos em grau, ou as coordenadas cartesianas.
>> plot3(x,y,z)
gera uma linha no espao tridimensional que passa pelos pontos de coordenadas dadas pelos elementos dos vetores x, y e z, e depois produz uma projeo bidimensional desta linha na tela.. Por exemplo
>> plot3(X,Y,Z)
plota as linhas obtidas pelas colunas de X, Y e Z. Para especificar vrios tipos de linhas, smbolos grficos e cores, usa-se a linha de comando plot3(X,Y,Z,s), onde s uma string de 1, 2 ou 3 caracteres formada pelos caracteres listados com a funo plot.
>> plot3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3.s3,...)
combina os grficos definidos por cada grupo de elementos (x, y, z, s), onde x, y e z so vetores ou matrizes e s so as strings.
16.2.2 Meshgrid
MATLAB define uma superfcie mesh pelas coordenadas z dos pontos, situando-a acima de uma rea retangular no plano x-y. Desta forma, um grfico formado pela ligao dos pontos adjacentes com linhas retas. Superfcies mesh so teis para visualizao de matrizes que so muito grandes para serem mostradas na forma numrica, e funes grficas de duas variveis. O primeiro passo para que seja mostrada uma funo de duas variveis, z = f(x,y), gerar as matrizes X e Y consistindo de linhas e colunas repetidas, respectivamente, sobre o domnio da funo. Depois utiliza-se estas matrizes para avaliar e plotar a funo. A funo meshgrid transforma o domnio especificado por dois vetores, x e y, em matrizes, X e Y. Utiliza-se estas matrizes para avaliar funes de duas variveis. As linhas de X so cpias do vetor x e as colunas de Y so cpias do vetor y. Para ilustrar o uso da funo meshgrid, considere a funo sin/r, tambm chamada funo sinc. Para avaliar esta funo entre -8 e 8, tanto em x como em y, passa-se como argumento dois vetores para a funo meshgrid criando as matrizes necessrias:
>> x = -8:.5:8; >> y = x; >> [X,Y] = meshgrid(x,y); >> R = sqrt(X.^2 + Y.^2) +eps; >> Z = sin./R; >> mesh(Z)
A matriz R contm a distncia dos pontos ao centro da matriz, o qual a origem. Adiconando eps evita a diviso por zero, o que produz NaNs no dados.
MATLAB possui funes para gerar grficos de contorno tanto para 2-D como para 3-D. As funes contour e contour3 geram grficos compostos de linhas obtidas da matriz entrada como argumento. Existe a opo de se especificar o nmero de linhas de contorno, a escala dos eixos e o valor dos dados com os quais se desenhar as linhas de contorno. Por exemplo, a linha de comando abaixo cria um grfico de contorno contendo 20 linhas de contorno e usando o arquivo-M peaks para gerar os dados de entrada.
>> contour(peaks,20)
Os crculos de contorno agem da mesma forma que a funo plot com relao a estilos de linha, marcadores e cores. Para criar um grfico de contorno 3-D com os mesmo dados, utiliza-se a funo contour3:
>> contour3(peaks,20)
>> mesh(Z)
gera uma figura da superfcie, colorida e definida por linhas, e a mostra em uma projeo em perspectiva. Da mesma forma
>> surf(Z)
gera uma figura da superfcie, colorida e definida por faces, e a mostra em uma projeo em perspectiva. Ordinariamente, as faces so quadrilteros com cores constantes, delineadas por linhas mesh pretas, mas a funo shading permite que sejam eliminadas estas linhas. Quando mesh(Z) e surf(Z) so usados com simples matrizes como argumentos, este argumento especifica tanto a altura quanto as cores da superfcie. Para a matriz peaks utilizada anteriormente
>> mesh(peaks)
produz uma superfcie mesh para a funo peaks
Matrizes de Cores
Utilizando duas matrizes como argumentos, as linhas de comando,
>> mesh(Z,C)
ou
>> surf(Z,C)
especifica independentemente atravs do segundo argumento, as cores a serem mostradas na superfcie. Com pcolor, os valores de C so postos em escala e usados como ndices no mapa de cores selecionado. No caso, C chamada matriz de cores. Quando a superfcie de dados contm NaNs, estes elementos no so plotados. Isto cria um falha na superfcie no lugar correspondente. Definindo alguns elementos na matriz de cores como NaNs, uma maneira til de tornar regies da superfcie invisveis. Por exemplo, a linha de comando abaixo produz uma falha na superfcie definida pela matriz peaks:
Superfcies Paramtricas
As funes mesh, surf e pcolor podem ter dois vetores ou matrizes adicionais como argumento, com a funo de descrever a superfcie com os dados x e y. Se Z uma matriz m por n, e x e y so vetores de dimenses n e m respectivamente, ento
>> mesh(x, y, Z, C)
descreve uma superfcie mesh cujo os vrtices possuem cores C(i,j) e esto localizados nos pontos (x(j), y(i), Z(i, j)) Perceba que x corresponde coluna e y linha da matriz Z.. De maneira mais geral, se X, Y, Z e C so matrizes de mesmas dimenses, ento
>> mesh(X, Y, Z, C)
descreve uma superfcie mesh cujo os vrtices possuem cores C(i,j) e esto localizados no pontos (X(i,j), Y(i,j), Z(i,j)) As mesmas consideraes podem ser aplicadas para a funo surf(X, Y, Z, C), etc.
16.3.4 Subgrficos
Podem ser mostrados vrios grficos em uma mesma janela ou imprimi-los em uma mesma folha de papel com a funo subplot. subplot(m,n,p) divide a janela em uma matriz m por n de subregies e seleciona a p-sima subregio para o grfico que est sendo plotado no momento. Os grficos so numerados comeando pela primeira linha na parte superior da janela; em seguida, a segunda linha, e assim segue. Por exemplo,
>> t = 0:pi/10:2*pi; >> [X,Y,Z] = cylynder(4*cos(t)); >> subplot(2,2,1) >> mesh(X) >> subplot(2,2,2) >> mesh(Y) >> subpoot(2,2,2) >>mesh(Y) >> subplot(2,2,3) >> mesh(Z) >> subplot(2,2,4) >> mesh(X,Y,Z)
plota dados em quatro diferentes subregies na janela de grficos.
16.3.5 Figura
Chamando a funo figure sem argumentos faz com que seja aberto uma nova janela grfica. figure(N) faz com que a N-sima figura se torne a figura atual; o resultado dos comandos grficos subsequentes so mostrados nesta janela. Se a figura N no existe, MATLAB cria uma usando o prximo nmero disponvel (no necessariamente N). A funo ginput permite que sejam utilizados o mouse ou as teclas de seta para selecionar pontos no grfico. Isto fornece as coordenadas da posio do ponteiro.
1 1 0 .5 .5
1 0 1 .5 0
0 1 1 .5 0
Os mapas de cores podem ser fornecidos por tabelas, ou gerados em operaes de matrizes. O diretrio color do toolbox do MATLAB possui vrias funes que geram mapas teis, incluindo hsv, hot, cool, pink, copper e flag. Cada funo possui um parmetro opcional, m, o qual especifica o nmero de linhas no mapa resultante. Por exemplo
>> hot(m)
uma matriz m por 3, cuja as linhas especificam a intensidade das cores padres de um mapa que varia de preto, passando por sombras de vermelho, laranja e amarelo, at o branco. Se o tamanho do mapa de cores no especificado, MATLAB utiliza m = 64 como valor padro. Isto permite trs ou quatro figuras, onde cada uma possui sua tabela de 256 cores. A linha de comando,
>> colormap(M)
faz com que a matriz de mapa de cores M seja usada pela figura ativa. Por exemplo,
>> colormap(hot)
torna ativo o mapa de cores hot de tamanho 64. Desde que as funes mesh, surf, pcolor e image utilizam mapas de cores, todas as outras funes que so derivadas destas quatro tambm o fazem. As funes plot, plot3, contour e contour3 no fazem uso dos mapas de cores.
Objetos axes definem uma regio na janela de figura e orienta os seus descendentes nesta regio. Eixos so descendentes de figuras e so superiores a linhas, superfcies, texto, imagens e patches. Todos as funes de criao de objetos e todas as funes de alto-nvel criam objetos eixo se eles no existem. Pode-se criar eixos diretamente utilizando-se a funo axes. Objetos line so usados para criar a maioria dos grficos 2-D e alguns 3-D. Eles so descendentes dos eixos e suas posies so definidas pelo sistema de coordenadas estabelecido pelo seus superiores (eixos). Objetos linha so criados por plot, plot3, contour e contour3. Objetos patch so definidos pelos polgonos preenchidos. Eles so descendentes dos eixos e suas posies so definidas pelo sistema de coordenadas estabelecido pelo seus superiores (eixos). Este objetos podem ser preenchidos com cores slidas ou interpoladas. fill e fill3 cria objetos patch. Objetos surface so representaes 3-D dos dados de uma matriz. Eles so compostos de quadrilteros cujo os vrtices so especificados pelos dados definidos. Superfcies podem ser preenchidas com cores slidas ou interpoladas ou somente com uma rede de linhas ligando os pontos. Eles so descendentes dos eixos e suas posies so definidas pelo sistema de coordenadas estabelecido pelo seus superiores (eixos). pcolor e o grupo de funes de mesh e surf criam os objetos superfcie. Objetos image dado pelo resultado do mapeamento dos elementos de uma matriz com o mapa de cores se encontra ativo. Imagens, geralmente, possuem seu prprio mapa de cores que definem somente as cores usadas naquela imagem. Imagens so 2-D e, portanto, no podem ser vistas por nenhum ngulo diferente do padro. Eles so descendentes dos eixos e suas posies so definidas pelo sistema de coordenadas estabelecido pelo seus superiores (eixos). Objetos imagem so criados atravs da funo image. Objetos text so as strings de caracteres. Eles so descendentes dos eixos e suas posies so definidas pelo sistema de coordenadas estabelecido pelo seus superiores (eixos). Objetos uicontrol so interfaces de controle que permitem ao usurio executar funes quando selecionado um objeto com o mouse. Eles so descendentes das figuras e, portanto, so independentes dos eixos. Objetos uimenu so interfaces de menu que permitem o usurio criar menus na parte superior da janela de figura. Eles so descendentes das figuras e, portanto, independentes dos eixos.
Handle de Objetos
Cada objeto grfico individual possui um nico identificador (chamado handle) que atribudo ao objeto quando ele criado. Alguns grficos tais como contour plot, so compostos de mltiplos objetos, cada qual com seu prprio handle. O handle do objeto raiz sempre zero enquanto que o de uma figura um inteiro. O handle de outros objetos so nmeros decimais que contm informaes utilizadas pelo MATLAB. MATLAB define as seguintes funes para simplificar o acesso aos handles dos objetos: gcf - informa o handle da figura ativa gca - informa o handle do sistema de eixos ativo Pode-se utilizar estas funes como argumentos de entrada de outras funes que requeiram os handles de grficos e eixos. Podese, tambm, remover qualquer objeto utilizando a funo delete, descrevendo como argumento o handle do objeto. Por exemplo, os eixos atuais podem ser apagados atravs da linha de comando:
>> delete(gca)
Todas as funes do MATLAB que criam objetos, criam handles para estes objetos. Isto inclui funes de alto-nvel, tais como surfc, a qual cria tanto objeto linha como objeto superfcie.
>> line
MATLAB desenha a linha no eixo que est ativo usando os valores de dado padro. Se no houver eixo, MATLAB cria um. Se no houver uma janela de figura onde possam ser criados os eixos, MATLAB tambm cria uma janela. Se chamada a funo line pela
segunda vez, uma linha desenhada nos eixos existentes (diferentemente com relao a funo plot, por exemplo, a qual substitui os eixos em cada chamada). Esta caracterstica til quando se quer adicionar um objeto a uma figura existente. Pode-se obter o mesmo resultado utilizando o comando hold.
>> set(surfh,LineStyle,-)
Para se ter uma lista das propriedades que podem ser alteradas de um objeto particular, chama-se a funo set com o handle do objeto:
>> set(surfh)
Para se fazer a alterao do valor de uma propriedade, utiliza-se a funo get. Chamando-se a funo get com o handle do objeto, obtm-se a lista de todas as propriedades para aquele objeto com o valores atuais:
>> get(surfh)