Você está na página 1de 54

AC304 MATLAB UMA FERRAMENTA PARA A ENGENHARIA.

INATEL - Instituto Nacional de Telecomunicaes

Coordenador do curso: Estevan Marcelo Lopes


Apostila elaborada por: Lus Antonio Ribeiro Scudeler
Monitores: Ivo Bizon Franco de Almeida Lus Antonio Ribeiro Scudeler

Introduo
O MATLAB (MATrix LABoratory-Laboratrio de Matrizes) um programa de computador de uso especfico, otimizado para executar clculos cientficos e de engenharia. Ele nasceu como um programa para operaes matemticas sobre matrizes, mas ao longo dos anos transformouse em um sistema computacional flexvel capaz de resolver essencialmente qualquer problema tcnico. O MATLAB implementa a linguagem de programao de mesmo nome, juntamnete com uma grande biblioteca de funes predefinidas que tornam as tarefas de programao tcnicas mais fceis e eficientes.

CAPITULO 1: Introduo ao MATLAB


Ambiente MATLAB:

Janela de Comando: onde o usurio ir digitar todos os comandos que sero executados e processados pelo MATLAB. Espao de Trabalho: onde o MATLAB armazenar as variveis criadas na execuo de comandos possibilitando assim ao usurio a ter acesso a elas quando quiser. Janela de Documentos: So os olhos do MATLAB. Todo tipo de arquivo que o usurio deseja abrir no MATLAB deve estar indicado nesse campo. Se desejarmos abrir um m-file, por exemplo, que est numa determinada pasta, esta pasta deve estar direcionada no Current Directory para a sim o software executar o arquivo desejado. Janela de Histrico de Comandos: um campo que grava todas as linhas de comandos digitadas.

Obtendo ajuda no matlab:


- help nome_da_funao - lookfor palavra_chave Existem duas formas de se obter ajuda nesse software. A primeira usarmos o help em seguida o nome de uma funo. Porem essa forma exige ao usurio saber o nome exato da funo, mas nem sempre conhecemos, o lookfor, mais flexvel nessa questo. Digitamos lookfor em seguida a palavra chave (o que a funo faz), o comando procurar funes que trabalhem com a correspondente palavra chave. No exemplo abaixo o help retornou um resumo da funo seno (sin=nome_da_funao), o lookfor retornou todas as funes que trabalham com radianos(radians=palavra_chave).

CAPITULO 2: Conceitos Bsicos


Variveis - conceito inicial:
A unidade fundamental de dados, em qualquer programa MATLAB, a matriz. Matriz uma coleo de valores de dados organizados em linhas e colunas, conhecidos por um nome nico. Valores individuais de dados em uma matriz so acessados por meio do nome da matriz, seguido de ndices entre parnteses que identificam a linha e a coluna do valor particular. Uma varivel MATLAB uma regio de memria que contem uma matriz, conhecida por um nome especificado pelo usurio. O contedo de uma matriz pode ser utilizado ou modificado a qualquer momento pela incluso de seu nome em um comando MATLAB apropriado. Criar ou manipular variveis no MATLAB bem simples, seguimos a forma geral: Var=expresso, onde Var o nome da varivel e expresso uma constante escalar, uma matriz ou combinao de constantes com outras variveis e operaes matemticas (+,- etc). Exemplos (no Command Window): - Na primeira linha de comando, atribudo para a varivel var o numero imaginrio 40i, na segunda linha de comando atribudo para varivel var2 o dado da varivel var dividido por 5, na terceira linha de comando, atribudo para a varivel vetor os elementos 1,2 e 3, na quarta linha a varivel matriz recebe os dados do vetor na primeira linha e os elementos 4,4 e 5 na segunda linha.

No exemplo acima verificamos que existem algumas constantes numricas predefinidas como o i que usado para nmeros imaginrios, verificamos que quando queremos atribuir vrios valores em uma varivel esses elementos ficam entre colchetes ( [ ] ), e que o ponto e virgula ( ; ), usado para encerrar uma linha e comear outra em uma matriz.

Criando e Manipulando as variveis:


Quando queremos criar uma varivel que receba um vetor linha (matriz 1xN) ou vetor coluna (matriz Nx1), colocamos seus elementos entre colchetes e usa-se virgula ou espao em branco para separar-los isto no caso do vetor linha, j no caso do vetor coluna, os elementos tero que ser separados por ponto e virgula. Conclui-se ento que o espao em branco ou a vrgula so usados para separar os elementos em relao s colunas, e o ponto e vrgula para separ-los em relao s linhas. Exemplos (no Command Window):

Podemos tambm criar vetores com intervalos escolhendo a variao desejada. Para intervalos segue-se a sintaxe: [valor _inicial:inc:valor_final] Se o inc no for fornecido ele assumira o valor 1. Exemplos (no Command Window):

Os operadores aritmticos so: soma (+), subtrao (-), diviso(/), potenciao(^) e multiplicao(*). No sofrem variaes perante nmeros escalares (matriz 1x1), porm quando se trata de matrizes com Mlinhas e Ncolunas os operadores tm dupla interpretao. Considere A e B matrizes com dimenso 3x3. Se fizermos A*B o MATLAB retornar uma matriz correspondente a multiplicao matricial de A com B, porem se fizermos A.*B matriz resultante corresponde multiplicao ponto a ponto, ou seja, elemento a elemento. O mesmo conceito se aplica para a diviso ponto a ponto (./) e potenciao ponto a ponto (.^). Exemplos(no Command Window):

Indexao:
A indexao possibilita a pegar um ou mais valores de dentro de uma matriz j existente. A sintaxe para isso a seguinte: var=A(i,j), sendo var uma varivel que ir receber o elemento ixj da matriz A. Os ndices i e j podem assumir um escalar ou um vetor(permitindo assim pegar varias linhas ou varias colunas). Exemplo (no Command Window):
Na varivel var1 est armazenado o elemento da linha 2 e coluna 3 da matriz A. Na varivel var2 est guardada as linhas 1 e 2 e as colunas 1, 2 e 3 da matriz A.

Concatenao:
Concatenar significa montar matrizes com matrizes. Por exemplo, seja A uma matriz 2x2 e B uma matriz 3x2, podemos concaten-las formando uma nova matriz C com 5 linhas e 2 colunas. A concatenao feita ou em relao linha ou em relao coluna, temos que observar que as matrizes devem ter a mesma dimenso no sentido da concatenao, no nosso exemplo s poderamos concatenar em relao coluna (tanto A quanto B tm duas colunas). Para concatenar, lembrar o conceito de criao de variveis, (entre colchetes, espao ou vrgula usado para delimitar as colunas e o ponto e vrgula delimita as linhas) a diferena que ao invs de nmeros, usamos matrizes. Exemplo (no Command Window):
A e B s podem ser concatenadas em relao coluna. Ento C recebe [A;B](continua 2 colunas, mas agora, com 5 linhas)

Funes Predefinidas: O MATLAB possui uma ampla biblioteca de funes, dentre elas iremos trabalhar com funes trigonomtricas, funes exponenciais e outras funes de criao de matrizes de leitura de dados e etc. A sintaxe principal de qualquer funo segue o padro, [a1,a2,...an]=nome_da_funo(e1,e2,...,en), onde a1,a2,...a3 so os n parmetros de sada(valores que sero retornados depois de serem modificados pela funo) colocados entre colchetes (quando so mais do que um). E os parmetros de entrada, e1,e2,...,en colocados sempre entre parnteses iro fornecer valores para dentro da funo.

Exemplos (no Command Window):


No primeiro quadro algumas funes trigonomtricas. No segundo quadro algumas funes exponenciais. No terceiro quadro uma funo matricial que tem 2 parmetros de sada e 1 de entrada.

OBS: Notem que quando atribumos a uma varivel algum valor ou expresso, se ao final da linha de comando colocarmos ; o MATLAB suprime (no mostra para o usurio) o contedo dela. Como no caso do x, que ao final da linha de atribuio foi colocado um ;. No caso do a, ao final da linha de comando no foi colocado o ; ento o MATLAB mostrou o contedo de a na tela. At agora aprendemos a criar vetores e matrizes simples. Porm existem muitas funes para a criao de matrizes e vetores. Dentre elas iremos destacar: - linspace: uma funo de criao de vetores com elementos linearmente espaados, ou seja, o intervalo entre os elementos do vetor tero a mesma distancia. A sintaxe : var=linspace(val_inicial,val_final,n_de_elem) Exemplo (no Command Window):

- rand: uma funo de criao de matrizes com elementos aleatrios entre 0 e 1. A sintaxe : var=rand(m,n)

Exemplo (no Command Window):

- zeros: Funo que cria matriz com elementos nulos. A sintaxe : var=zeros(m,n) Exemplos (no Command Window):

- eye: Funo que cria matriz identidade. A sintaxe : var=eye(m,n) Exemplos (no Command Window):

Agora que j sabemos os conceitos de criao de matrizes e vetores, iremos trabalhar com algumas funes informativas ou para realizar algumas modificaes, funes que sero uteis para as variveis criadas.

- det: Calcula o determinante de uma matriz. A sintaxe : var=det(matriz)

Exemplo (no Command Window):

- inv: Calcula a inversa de uma matriz. A sintaxe : var=inv(matriz)

- reshape: Redimensiona uma matriz. A sintaxe : var=reshape(matriz,n_linhas,n_colunas) Exemplo (no Command Window):

- size: Retorna o numero de linhas e o numero colunas de uma matriz. A sintaxe : [m,n]=size(matriz) Exemplo (no Command Window):

OBS: Como existem 2 parmetros de sada, necessrio o colchetes.

- numel: Retorna o numero de elementos de uma matriz. A sintaxe : var=numel(matriz) Exemplo (no Command Window):

- diag: Retorna a diagonal principal de uma matriz. A sintaxe : var=diag(matriz) Exemplo (no Command Window):

- : Retorna a transposta de uma matriz. A sintaxe : var=matriz Exemplo (no Command Window):

- trace: Retorna a soma da diagonal principal de uma matriz. A sintaxe : var=trace(matriz)

Exemplo (no Command Window):

- find: Retorna os ndices correspondentes as posies na memria dos elementos que satisfazem a condio. A sintaxe : var=find(condio)

A matriz A contem os elementos 3, 2 e 1 na 1 linha, 5, 5 e 7 na 2 linha e 8, 9 e 10 na 3 linha. Os ndices entre parnteses em vermelho correspondem ordem como est salvo na memria, ou seja, se quisermos o elemento 7 por exemplo , ele o oitavo na ordem da memria, ento no Command Window fazemos:

Ou tambm como j vimos anteriormente, o elemento 7 corresponde a 2 linha e 3 coluna:

A funo find, ir retornar as posies da memria. Se quisermos converter esses nmeros correspondentes s posies, usamos o conceito de indexao. Veja o exemplo no Command Window abaixo:
No exemplo criamos uma matriz A qualquer, depois em uma varivel ind, salvamos o vetor coluna correspondente aos ndices das posies da memria dos elementos da matriz A que so menores do que 3. Em B esto os elementos correspondentes a essas posies.

Resolvendo Sistemas de Equaes:

Para resolvermos sistemas, criamos uma matriz correspondente aos ndices que multiplicam as incgnitas, depois criamos outra matriz (vetor coluna), correspondente aos resultados das equaes. Veja como foi resolvido o sistema abaixo no Command Window:

Integral e Derivada:
Usa-se a funo polyder para derivar e polyint para integrar um polinmio qualquer. A sintaxe : deri=polyder([ndices]) e inte=polyint([ndices]), veja o exemplo abaixo:

CAPITULO 3: Introduo a Programao do MATLAB


Os arquivos criados no MATLAB tem extenso .m e so chamados de m - files. Existem dois tipos: - script: uma seqncia de comandos, serve basicamente para automatizar algum processo repetitivo. Compartilha suas variveis com o Workspace e no possui nem parmetro de entrada e nem de sada. - funo: Quando voc utiliza funes do MATLAB, como abs, size, rand, o MATLAB toma as variveis que voc definiu, calcula os resultados desejados de acordo com o que voc pediu e depois devolve os resultados. Os comandos executados junto com as variveis criadas no interior do programa permanecem ocultos ( ento a funo uma caixa preta). Resumindo a funo aceita parmetros de entrada e retorna parmetros de sada. Para criarmos os programas no MATLAB digitamos edit no Command Window, ir abrir o editor de programas. no editor que iremos criar nossos scripts ou nossas funes. Exemplo de script: No editor de programas escrevemos:

ATENO: Script no aceita parmetros de entrada nem de sada. Mas notem que no exemplo a entrada e a sada de valores so feitas por duas funes existentes no corpo do programa: Input (que ir solicitar um valor) e disp(que ir retornar o resultado para o usurio ou uma mensagem). Ento nada impede de usarmos funes em scripts (como tambm o rand que usamos para criar o vetor). Input e disp sero muito usados em scripts. A sintaxe dessas duas funes : disp(mensagem qualquer) ou disp(variavel) var=input(mensa_de_aviso_que_est_sendo_solicitado_um valor) Para executar o script, digitamos no Command Window seu nome (o que foi salvo):
CURIOSIDADE: Para verificarmos se o resultado est certo, existe uma funo que soma um vetor qualquer, a funo se chama sum. Sua sintaxe sum(vetor). No caso do exemplo: sum(vetor_linha)

Exemplo de funo: No editor de programas escrevemos:

ATENO: O nome da funo ter que ser o mesmo do nome que ser salva (no exemplo: ex_fun). A funo no precisou do auxilio de outras funes (como input ou disp) para solicitar valores de entrada nem retornar na sada. Parmetros de sada e de entrada so naturais em funes. Para executar no Command Window:
Note que nesse caso no h como verificarmos se o resultado est certo, afinal, caracterstica da funo no compartilhar suas variveis com o workspace, ento no temos acesso ao vetor_linha.

Foi feito o mesmo exemplo para um script e para a funo para se verificar as diferenas entre suas construes. Mas note que se quisssemos entrar com uma matriz, por exemplo, para ser trabalhada dentro do m-file, o script (por no aceitar diretamente parmetros de entrada), no seria a melhor opo. Veja o exemplo abaixo: Exemplo de funo: No editor:

No Command Window:

Para criarmos os programas precisamos ter o conhecimento dos operadores, das estruturas de deciso e de repetio:

CAPITULO 4: Entrada e Sada de Dados


Existem funes de importao (ler dados vindos de arquivos fora do MATLAB, como uma imagem, por exemplo) ou de exportao (salvar dados em tipos diferentes de arquivos) no MATLAB.
IMPORTANTE: Os arquivos que iremos ler devero existir na pasta indicada no Current Directory, assim como tambm os arquivos que salvamos ficaro armazenados nesta pasta.

Funes de Importao/Exportao de Dados:


Algumas funes so usadas para salvar e outras para ler, mas cada uma grava ou l arquivos de tipos diferentes. -dlmwrite: Usado para gravar uma matriz em um arquivo ASCII delimitado. A sintaxe : dlmwrite(nome_arquivo,matriz,delimitador) O nome_arquivo sempre entre apstrofos, um nome opcional que voc deseja salvar a matriz que pode ser qualquer matriz contida no Workspace, o delimitador tambm sempre entre apstrofos, pode ser vrgula, ponto e vrgula ou espao em branco. -dlmread: Usado para ler uma matriz em ASCII. Sintaxe: dlmread(nome_arquivo) O nome_arquivo vem sempre entre apstrofos. Exemplos no Command Window :

CURIOSIDADE: Note que quando escolhemos um nome para salvar a matriz em ASCII, se ao final do nome acrescentarmos .txt, podemos acessar os dados desse arquivo com o arquivo de texto do Windows.

-save: Usado para salvar variveis em arquivos do tipo .MAT( o formato de armazenamento de dados mais eficiente, mais compacto e rpido disponvel no MATLAB). Sintaxe: save(nome_arquivo,var1,...,varN) a forma mais comum de salvar dados, afinal podemos salvar quantas variveis (contidas no Workspace) quisermos. Observe que o nome_arquivo e as variveis que desejamos salvar so todos colocados entre apstrofos. -load: Usado para carregar as variveis salvas em arquivos do tipo .MAT. Sintaxe: load(nome_arquivo) Exemplos (no Command Window):

Note que criamos trs variveis (A, r e b), porem somente A e b foram salvas. Para observarmos os processos, apagamos as variveis do Workspace (clear usado para isso), com ele vazio, usamos load para carregar as variveis salvas, aps isso podemos verificar que no Workspace foram criadas as variveis A e b novamente. -xlsread: Usado para ler uma planilha do MS-Excel. Sintaxe: [dados_num,dados_alfanumericos]=xlsread(nom.xls)

Esta funo ir retornar como parmetros de sadas duas matrizes, sendo dados_num uma matriz contendo os valores numricos e dados_alfanumericos uma matriz contendo caracteres (dados que no so numricos). Exemplo: No Excel foi criada a planilha com o nome de notas, e no Command Window digitamos a funo entre parnteses o nome e a extenso:

Funes de Importao/Exportao de Arquivos de Imagem: -imfinfo: Fornece informaoes sobre a imagem. Sintaxe: imfinfo(nome_imagem.ext) -imread: L arquivo de imagem. Sintaxe: [a,map]=imread(nome_imagem.ext) A sintaxe indica que a funao deve retornar (parametros de sada) duas matrizes sendo uma(matriz a) contendo os dados para gerao da imagem e a outra (matriz map) contendo as cores da imagem. Ao executar a funo pode-se observar 2 possveis casos: 1 Situao: Ser retornado somente a matriz a ( matriz map estar vazia), e ela ser uma matriz tridimensional, as cores estaro junto matriz combinadas entre suas dimenses. 2 Situao: Ser retornado duas matrizes ( a e map) unidimensionais. Usa-se a funo image(matriz_contendo_os_dados) para gerar a figura e colormap(matriz_contendo_as_cores) para dar cor a ela(quando se tem a matriz correspondente s cores).

Exemplos no Command Window:

OBSERVAOES: Quando for executado os exemplos acima note que na primeira situao, a matriz map retornou vazia, diferente da matriz a (matriz tridimensional) que continha os dados para criao da imagem, por isso para visualiza-la s precisou usar a funo que gera a imagem. J na segunda situao tanto a matriz correspondente aos dados(a), quanto a matriz correspondente as cores(map) no eram vazias, ento para visualizarmos a imagem nesse caso, foi preciso usar uma funo para gerala e depois outra funo para dar cor a ela. -imwrite: Grava matriz em arquivo de imagem. Sintaxe: imwrite(a,map,nome_qualquer.extensao) Para essa funo teremos tambm duas possibilidades: 1 Situao: Quando se tem uma matriz tridimensional correspondente a criao de uma imagem, para salva-la, usamos a funo de gravao e entre parenteses colocamos a matriz correspondente aos dados(matriz tridimensional) e o nome que ser salvo nesta ordem, conforme indicado na sintaxe. 2 Situao: Caso tenhamos duas matrizes, uma correspondente aos dados para criao da imagem e a outra correspondente s cores(ambas unidimensionais), para salva-las, usamos a funo de gravao e entre parenteses colocamos primeiro a matriz relacionada aos dados e depois a matriz relacionada as cores e por ultimo o nome que ser salvo, conforme a sintaxe da funo.

Exemplo no Command Window(1 Situao): No exemplo a seguir, vamos ler os dados de uma imagem e guarda-los em uma matriz, que ser uma matriz tridimensional (matriz a) e como as cores estaro combinadas entre suas dimenses, iremos pegar todos elementos porm da primeira dimenso da matriz a e guarda-los em uma matriz b aps isso salvaremos b em um arquivo de imagem com um nome de nova.jpg.
Aps ser executado esse exemplo, verificar que na pasta direcionada no Current Directory foi gerada uma imagem com o nome de nova.jpg

Exemplo no Command Window(2 Situao): Nesse exemplo faremos a leitura de uma imagem que nos retornar duas matrizes unidimensionais (a e map), uma correspondente aos dados e a outra correspondente as cores, a seguir ser criada outra matriz (matriz b) que conter todos elementos de a multiplicados por 3, assim iremos salvar a nova matriz b (correspondente a gerao da imagem) e a matriz map (correspondete as cores) em um arquivo de imagem com o nome de imagem.bmp
Verificar que na pasta direcionada no Current Directory foi gerada uma imagem com o nome de imagem.jpg

Funes de Importao/Exportao de Arquivos de Som: -wavread: L arquivo de som Microsof Wave. Sintaxe: [A,fs,bits]=wavread(nome_do_arquivo) A funao dever retornar (parametros de sada) trs matrizes sendo matriz A contendo a amplitude do som, matriz fs contendo a frequencia do som (em Hz) e a matriz bits que so bits por amostragem do som. Usa-se a funo sound(A,fs,bits) para gerar o audio do som. Exemplo no Command Window:
Para ler o arquivo de som Bee, ele precisou estar na pasta direcionada do Current Directory.

-wavwrite: Grava matriz em arquivo de som Microsoft Wave. Sintaxe: wavwrite(A,fs,bits, nome_do_arquivo) A funo ter que ter quatro parametros de entrada, sendo os trs primeiros as trs matrizes correspondentes a amplitude (A), a frequencia (fs) e a amostragem (bits) e o quarto parametro um nome qualquer para salvar as matrizes em arquivo de som. Exemplos no Command Window: Nesse exemplo primeiramente iremos ler os dados do arquivo Bee a seguir, sera gerado 3 arquivos de som: 1 Com a amplitude aumentada em 3 vezes. Nome: primeiro. 2 Com a frequencia aumentada em 2 vezes. Nome: segundo. 3 Com a amostragem pela metade. Nome: terceiro.

Os arquivos foram gerados na pasta direcionada no Current Directory.

Funes para criao de Arquivos de Animao: -aviinfo: Retorna informaes de um arquivo de animao. Sintaxe: aviinfo(nome_do_arquivo) -getframe: Armazena a figura corrente em um quadro de animao. Sintaxe: mov=getframe -movie2avi: Cria um arquivo em formato .AVI a partir de uma matriz contendo os dados dos quadros de animao. Sintaxe: movie2avi(mov,nome_arquvivo.avi) A funo ter dois parametros de entrada, sendo o primeiro uma matriz contendo os quadros de animao (obtidos pela funo getframe) e segundo o nome com a exteno (.avi) que se deseja salvar o arquivo.

Exemplo: Para gerar esse arquivo de animao ser gerado um scrip com o nome de ex_anima da seguinte forma:

Na 1 linha do programa, foi criada uma estrutura de repetio de a variando de 1 a 100. Dentro da estrutura quando a vale 1, na 2 linha armazenado na varivel x na posio 1 o cosseno de 1, na 3 linha foi usada uma funo grafica que gerar o grafico do cosseno do ponto 1 ao ponto 1, na 4 linha em uma variavel mov na posio 1 guardado o quadro de animao referente ao cosseno do ponto 1 ao 1, na 5 linha a execuo volta para a 1 e incrementa a variavel a que passa a ser 2, na 2 linha x na posio 2 recebe cosseno de 2, na 3 linha gerado o grafico do cosseno do ponto 1 ao ponto 2, na 4 linha a variavel mov recebe na posio 2 o quadro de animao referente ao cosseno do ponto 1 ao 2 , e assim sucessivamente at a variavel a valer 100. Quando a execuo sair da estrutura de repetio na 6 linha est a funo que ir criar um arquivo com o nome de ex1 em .avi dos quadros de animao contidos na varivavel mov. Para executar o exemplo, no Command Window digitamos o nome do scrip:

Aps executar o exemplo, note que ser gerada a animao na figura 1 e na pasta indicada no Current Directory estar um arquivo do tipo .avi com o nome de ex1.

CAPITULO 5: Grficos e Aplicaes Grficos:


Funes Bsicas de Gerao de Grficos:

-plot: Gera grfico bidimensional com coordenadas x e y lineares. Sintaxe: plot (coord_x,coord_y,fmt) A funo tem como parmetros de entrada as coordenadas x e y, e a formatao fmt, porem esta opcional. A formatao consiste em mudar a cor da linha do grfico e mudar o tipo de marcador. Se quisermos a cor vermelha e o grfico tracejado, por exemplo, na formatao colocamos r--, ou seja, usa-se a primeira letra dos nomes das cores (no exemplo red) para definir a cor da linha e smbolos para indicar o tipo de marcador que so vrios: *, +, --, ., >, <, o, ^. Exemplos no Command Window:

Em todos os casos foi criada uma varivel x que recebeu os valores de pi a pi variando de 0.1 unidades e em uma varivel y foi guardado os valores de seno de x. No 1 caso foi plotada a imagem sem formatao, no 2 caso foi usada a formatao r--, ou seja, red e marcador tracejado, no 3 caso foi usada g*, ou seja, green e marcador estrelinha.

-loglog: Gera grfico bidimensional com coordenadas x e y na escala logartmica.

Sintaxe: loglog(coord_x,coord_y,fmt) Como parmetros de entrada a funo recebe as coordenadas x e y e a formatao opcional (que configurada da mesma forma que foi explicado no comando plot). -semilogx: Gera grfico bidimensional com a coordenada x em escala logartmica e a coordenada y em escala linear. Sintaxe: semilogx(coord_x,coord_y,fmt) Como parmetros de entrada a funo recebe as coordenadas x e y e a formatao opcional (que configurada como no comando plot). -semilogy: Gera grfico bidimensional com a coordenada y em escala logartmica e a coordenada x em escala linear. Sintaxe: semilogy(coord_x,coord_y,fmt) Como parmetros de entrada a funo recebe as coordenadas x e y e a formatao opcional (que configurada da mesma forma que foi abordada no comando plot) Exemplos no Command Window:

Em todos os exemplos a coordenada x igual coordenada y para melhor visualizarmos as diferenas nas escalas. No 1 caso tanto x quanto y so plotados com a escala logartmica e com a cor verde e marcador ponto, e como x e y so iguais o grfico uma reta. No 2 caso x esta em escala logartmica e y linear, e o desenho est com a formatao vermelho, e marcador triangulo. No 3 grfico y est plotado com escala logartmica e x linear, nesse caso no foi usada nenhuma formatao para o desenho.

-polar: Gera grfico com eixos de coordenadas polares. Sintaxe: polar(ngulo_em_radianos,modulo,fmt) Essa funo tem como parmetros de entrada o ngulo em radianos, valores radiais lineares (modulo), e a formatao opcional. Por exemplo, o numero complexo z 0 1i possui modulo igual a um, pois | z | 0 2 12 1 e ngulo igual a 90, afinal
arctg 1 arctg 0 2

. Existem algumas funes no Matlab que j

fazem esses clculos facilitando nosso trabalho, como a funo angle, que retorna o ngulo de um nmero complexo e a funo abs, que calcula o modulo de um numero complexo. Exemplo 1: Exemplo 2:

No 1 exemplo na varivel a foi armazenado o numero complexo 0+i, na varivel ngulo foi armazenado o ngulo em radianos do numero complexo a e na varivel modulo foi armazenado o modulo do numero complexo a. Logo aps foi usado o comando polar para plotar o numero complexo com o marcador + e com a cor vermelha. O 2 exemplo semelhante ao 1 porem o nmero complexo 6+5i e a formatao usada para o desenho foi a cor verde e marcador *.

-plotyy: Permite criar duas curvas no mesmo grfico com escalas diferentes para y.
x Suponha que se deseja plotar e e sen( x) para x, variando de pi a pi, no mesmo grfico, observe o exemplo abaixo (no Command Window):

No exemplo, foi criado um vetor com o nome de x variando de pi a pi, na varivel a foi gravado os valores de seno de x, na varivel b os valores de expoente de x, em seguida foi usado a funo plot com as 4 coordenadas(2 para cada grfico).

Observe que o grfico no ficou totalmente visvel, afinal um seno de x, varia de -1 a 1 no eixo y, e o grfico de um expoente, varia de 0 a +, ento a soluo nesse caso, para os dois grficos ficarem visveis seria ter duas escalas diferentes para y. Por isso usamos o plotyy, para visualizar-mos dois grficos com escalas diferentes para y. Desta forma:

As variveis so as mesmas criadas no exemplo anterior, porm observe que foram criadas duas escalas diferentes para y, a 1 em azul de -1 a 1(para o grfico do seno) e a 2 em verde de 0 a 40(para o grfico de expoente de x).

Atributos de Eixos -axis: Controla a escala dos eixos de um grfico. Sintaxe: axis([Xmin Xmax Ymin Ymax]) Quando gerado um grfico do seno, por exemplo, a funo plot gera o grfico com escala definida pelo domnio e imagem, porem pode-se controlar a escala com a funo axis. Observe o exemplo abaixo:

-grid: Funo para exibio de grade no grfico. Exemplo no Command Window:

-hold: Fixa o grfico corrente na figura. Quando plotar um grfico com a funo plot, em seguida se for usado o comando novamente, o anterior substitudo, mas se no quiser perder o primeiro grfico para plotar outro junto a ele, usa-se hold, observe o exemplo:

No exemplo ao lado, foi plotado em uma figura dois grficos. Se no fosse usado o comando hold, na figura s iria aparecer o grfico do cosseno, afinal o ultimo comando foi o plot(x,cs(x)). Note tambm que nesse caso poderia ser usado o plot com as coordenadas dos dois grficos da seguinte forma: plot(x,sin(x),x,cos(x))

-subplot: Permite gerar vrios eixos em uma mesma figura. Sintaxe: subplot(m,n,p) A funo exige trs parmetros de entrada sendo, m o numero de eixos na vertical, n o numero de eixos na horizontal e p ndice do eixo corrente. Observe o exemplo no Command Window abaixo:

Anotaes e Textos -title: Permite colocar ttulo no grfico corrente. Sintaxe: title(titulo) -xlabel: Nomeia o eixo x. Sintaxe: xlabel(eixo x) -ylabel: Nomeia o eixo y. Sintaxe: xlabel(eixo y) -zlabel: Nomeia o eixo z. Sintaxe: xlabel(eixo z) -gtext: Abre um cursor na figura corrente para se escolher o lugar exato onde o texto ir ficar. Sintaxe: gtext(texto) -legend: Coloca legenda nos grficos. O numero de grficos na figura ter que ser o mesmo do numero de textos. Sintaxe: legend(texto1,texto2,...)

Observe o exemplo sobre as funes acima:

Funes Grficas 2D Especiais -area: Gera grfico da rea. Exemplo:

-bar: Gera grfico de barra vertical. Exemplo:

-stem: Gera grfico de pontos com hastes. Exemplo

-pie: Gera grfico de pizza. Exemplo

-comet: Dados x e y, gera grfico com exibio de trajetria animada. Exemplo:

-ezplot: Gera grfico de coordenada linear a partir de equaes de funes. Sintaxe: ezplot(equao) -ezpolar: Gera grfico de coordenada polar a partir de equaes de funes. Sintaxe: ezpolar(equao) Exemplos sobre ezplot e ezpolar:

Funes Grficas 3D -plot3: Dados x, y e z cria curva no espao 3D. Sintaxe: plot3(x,y,z,fmt) Exemplo:

-meshgrid: Gera malha para criao de superfcies. Sintaxe: [mx,my]=meshgrid(x,y) Dados dois vetores x e y, contendo as coordenadas dos eixos X e Y, retorna duas matrizes, mx e my, contendo a malha de coordenadas necessria para gerao de superfcies. -mesh: Gera a malha a partir de coordenadas 3D. Sintaxe: mesh(mx,my,mz) Exemplo:

-surf: Gera a sduperficie a partir de coordenadas 3D. Sintaxe: surf(mx,my,mz) Exemplo:

-contour: Gera grficos de curvas de nvel. Sintaxe: contour(mx,my,mz) Exemplo:

-surfc: Gera superfcie com curva de nvel juntos. Exemplo:

Funes Grficas 3D Especiais -cylinder: Fornece as malhas de coordenadas mx, my e mz necessrias para criao de um cilindro com altura 1. Sintaxe: [mx,my,mz]=cylinder(Raio,N) A funo tem como parmetro de entrada um vetor ( Raio), contendo variao do tamanho do raio ao longo da altura e N o numero de faces do cilindro. Exemplo:

-sphere: Retorna as malhas de coordenadas mx, my e mz necessrias para criao de uma esfera de raio 1. Sintaxe: [mx,my,mz]=sphere(N) A funo aceita como parmetro de entrada o numero de face da esfera (N). Exemplo:

-bar3: Gera grfico de barra 3D vertical. -pie3: Gera grfico de pizza 3D. Exemplos:

Funes Grficas de Animao -getframe: Captura figura e retorna estrutura (contendo dados e mapa de cores) para ser utilizada na animao quadro a quadro. Sintaxe: mov=getframe -movie2avi: Armazena a animao armazenada em uma varivel em um arquivo em formato AVI. Sintaxe: movie2avi(mov,nom_arquivo) Exemplo: No editor de programas:

Aps criao do programa, no Command Window digita-se seu nome:

Criao de Interface com o Usurio:


Caixas de Dilogo (CD) Possibilitam a construo de programas com interface com usurio mais amigvel. -inputdlg: Caixa de dilogo para entrada de dados via texto. Exemplo:

Observe que como parmetros de entrada da funo inputdlg entrouse com infor que uma matriz de cell-array (cadeia de caracteres, usa-se chaves para delimit-las) e com titulo que o nome da caixa de dialogo.

No exemplo acima entramos com os parmetros de entrada bsicos da funo, porm ela aceita outros opcionais, veja o exemplo:

msg uma cadeia de caracteres (cell-array), titulo o nome da caixa de dialogo, num_de_linhas um vetor coluna contendo o numero de linhas para cada entrada de dados, e val_predef cadeia de caracteres (cell-array) contendo os valores predefinidos .

Observao: O parmetro de sada da funo inputdlg uma cadeia de caracteres (cell-array), ento para operar os valores

retornados pela funo necessrio usar a funo str2double que converte de caractere para numrico. -errordlg: Exibe caixa de dilogo de mensagem de erro. Exemplo:

-warndlg: Exibe caixa de dilogo de mensagem de aviso. Exemplo:

-helpdlg: Exibe caixa de dialogo de mensagem de ajuda. Exemplo:

-msgdlg: Exibe caixa de dialogo para uma mensagem qualquer mensagem. -listdlg: Caixa de dilogo para entrada de dados via lista de seleo. Sintaxe: [ind,teste]=listdlg(PromptString,nome,Liststring,lista) A funo tem como parmetro de entrada o nome da caixa de dialogo (varivel nome) e uma cadeia de caracteres (varivel lista) que conter os objetos da lista. Como parmetros de sada

ind, que o numero equivalente a opo escolhida e teste que sempre 1 enquanto for escolhida uma opo, este passa a ser 0, quando o usurio no escolher nenhum item ou seja clicar em cancel. Veja o exemplo a seguir:

-questdlg: Caixa de dilogo para entrada de dados com seleo de duas opes possveis.

GUIDE Graphic User Interface Design Environment Os recursos de interface grfica com o usurio incluem menus, menus contextuais, botes simples (pushbuttons), controles deslizantes (sliders), botes de rdio, botes de chave (togglebuttons), menus popup, e caixas de listagem. Uma interface com o usurio o ponto de contato ou mtodo de interao entre uma pessoa e um computador ou programa de computador. Ser ressaltado nesse capitulo informaes bsicas para se criar uma interface. Para acessar o campo de criao de uma interface clicar em File/New/GUI, ou simplesmente digite no Command Window a palavra guide. Aps esse processo escolher a opo Blank GUI (Default), aps clicar em OK abrir uma janela com um campo em branco do lado direito e vrias ferramentas do lado esquerdo:

As ferramentas disponveis so:

-[Push Button]: Boto de acionamento de comando. -[Toggle Button]: Boto de configurao de opo. -[Radio Button]: Boto de escolha de opo. -[Checkbox]: Caixa de opo (sim/no). -[Edit Text]: Caixa de edio de texto. -[Static Text]: Texto esttico. -[Slide]: Barra de Graduao. -[Frame]: Quadro. -[Listbox]: Caixa de lista de opes. -[Popup Menu]: menu popup de opes. -[Axes]: Eixo. Cada uma dessas ferramentas possui propriedades que podem ser configuradas pelo usurio. Algumas sero destacadas: -[Tag]: nome atribudo ao objeto pelo usurio. -[Callback]: nome da funo que acionada pelo objeto. -[String]: valor ou nome inicial. -[Position]: posio do objeto na janela. -[Style]: informa o tipo do objeto. As demais propriedades configuram basicamente a aparncia do objeto, como a cor de fundo, tamanho e fonte de texto. A ferramenta GUIDE interativa, com muitos detalhes de configurao de parmetros, desta forma iremos apresentar dois exemplos com as ferramentas bsicas para criao de caixas de dilogo no MATLAB.

EXEMPLO 1: Ser criada uma caixa de dialogo com trs botes (Push Button), sendo que cada um deles exibir um grfico diferente na ferramenta Axes. -Boto1: cos(x) para x variando de pi a pi. -Boto2: sen(x)+cos(x) para x variando de 1 a 10. -Boto3: grfico animado de sen(x) para x de -4pi a 4pi; 1 Passo: Crie trs programas implementados em trs m-files (b1.m, b2.m e b3.m) que sero callback dos Push Butons. Ento no editor de programas:

2 Passo: Chame o comando guide e construa a janela conforme o layout exibido em seguida: -[Static Text]: Ttulo. -[Axes]: rea do grfico.

-[Push Button]: 3botoes.

3 Passo: d um duplo-clique sobre o objeto [Static Text] para abrir o editor de propriedades e configure String com EXEMPLO 1, e de tambm um duplo clique sobre o [Push Button] e configure o String com o nome de Boto1 para o 1 Push Button, Boto2 para o 2 e assim por diante. 4 Passo: para direcionar os programas aos botes, de um duplo clique sobre os objetos [Push Button] e modifique o campo callback com os nomes dos respectivos programas.

5 Passo: crie um menu: -Abra o [Menu Editor], aps abrir uma janela clique no cone do canto superior esquerdo [New Menu]. -No campo label, coloque o nome Exemplo.

-Crie as opes do menu clicando no cone [New Menu Item] e configure as propriedades: 1 opo: -Label: G1 -Callback: b1 2 opo: -Label: G2 -Callback: b2 3 opo: -Label: G3 -Callback: b3

Observao: Para criar as opes do menu Exemplo, coloque este item em destaque (clique nele) e depois acione o cone [New Menu Item] 6 Passo: Armazene a janela via opo [Save As] do menu [File] com o nome de inter1. Ao ser salvo o MATLAB gera um programa automaticamente. Para executar a caixa de dialogo criada, no Command Window digite o nome com qual foi salva:

EXEMPLO 2: Vamos resolver um problema de um circuito eltrico onde queremos achar I1, I2, I3 e PT. De acordo com o sistema dado:

1 Passo: Entre no campo para criao de interface, construa a janela conforme o layout abaixo: -os textos na coluna esquerda devem ser criados como [Static Text]. O contedo do texto deve ser editado no campo [String]. -os textos da coluna direita devem ser criados com os atributos descritos abaixo:

-Utilize [Push Button] para criar o boto CALCULAR que ir chamar a callback cujo nome circuito_calculado.

2 Passo: armazene a janela via opo [Save As] do menu [File] com o nome de circ. O MATLAB gerar automaticamente um m-file referente interface criada. 3 Passo: At aqui no executamos nenhum procedimento muito diferente do que foi descrito no EXEMPLO1. Agora criaremos o programa callback circuito_calculado, que deve utilizar os parmetros de entrada fornecidos na caixa de dilogo para calcular os valores I1, I2, I3 e PT, que devem ser exibidos na caixa de dilogo. Utilizaremos as funes findobj para identificar os objetos UIcontrol (as ferramentas do GUI) e get para obter o contedo de suas propriedades. obj=findobj(figura_corrente,Propriedade,Valor) -findobj ir identificar com qual objeto estamos trabalhando, ou seja, o cdigo do objeto da figura que satisfaa a condio Propriedade=Valor. Por exemplo: obj=findobj(gcf,Tag,V1) obj recebe o cdigo do objeto da figura corrente (indicada pela funo gcf - get current figure) cujo Tag V1. Val=get(obj,Propriedade); -get ir retornar o valor que se encontra na propriedade daquele objeto (objeto cujo o cdigo foi identificado pela funo findobj e que foi salvo na varivel obj). Por Exemplo: V1=get(obj,String)

Porem get retorna uma cadeia de caracteres (cell-array). Para transform-la em numero real necessrio usar a funo de converso str2double. Para exibir o resultado na caixa de dilogo utilizaremos a funo findobj para identificar o objeto, no caso, o texto esttico I1 -set configura o valor da propriedade do objeto. A funo set configura a propriedade String do objeto. O valor fornecido deve ser uma cadeia de caracteres. A funo de converso num2str transforma o valor numrico I1 em cadeia de caracteres. set(obj,String,ValI1) Ento no editor de programas:

Aplicaes
Sero listadas algumas funes para diferentes campos de trabalho. Funes: Trigonomtricas e Exponenciais. - exp(x): expoente. - log(x),log10(x),log2(x): logaritmo natural(ln), base 10 e base 2. - pow2(x): potencia base dois ( 2 x ). - rem(x,y): resto da diviso de x por y. - sign(x): sinal de x. - fix(x): arredonda para o inteiro mais prximo de 0. - floor(x): arredonda para o inteiro mais prximo de - . - ceil(x): arredonda para o inteiro mais prximo de + . - round(x): arredonda para o inteiro mais prximo.

Teoria dos Nmeros - factor(x): retorna fatores primos que compem o numero fornecido. - isprime(x): verifica se o numero primo. - lcm(x,y): mnimo mltiplo comum de x e y. - perms(v): retorna todas as permutaes possveis dos nmeros dados. - factorial(x): retorna fatorial de x. Anlise de Dados Bsica - max(x): retorna o valor mximo do vetor x. - min(x): retorna o valor mnimo do vetor x. - mean(x): retorna a mdia do vetor x. - median(x): retorna a mediana do vetor x. - sort(m): classifica em ordem crescente (colunas). - sortrows(m): classifica em ordem crescente (linhas). - sum(x): soma os elementos do vetor x. - prod(x): multiplica os elementos do vetor x. Transformao de Coordenadas e Bases - [th,r]=cart2pol(x,y): converte coordenadas cartesianas polares. - [x,y]=pol2cart(th,r): converte coordenadas polares cartesianas. - [th,phi,r]=cart2sph(x,y,z): converte coord. cartesianas esfricas. - [x,y,z]=sph2cart(th,phi,r): converte coord. Esfricas cartesianas.

em em em em

Polinmios e Interpolao de Dados - roots(v): retorna razes do polinmio. - poly(v): Dado um vetor contendo as razes de polinmios, retorna outro contendo os coeficientes dele. - yn=polyval(p,xn): avalia valor do polinmio dado.

- p=polyfit(x,y,n): retorna coeficientes de polinmio de grau n que melhor aproxima(mtodo mnimos quadrados) a curva gerada por (x,y). Otimizao - fminbnd(equao,a,b): retorna a coordenada x do valor minimo de uma funo de uma varivel f(x) em um intervalo fixo. - fzero(equao,valor): retorna coordenada x, onde f(x)=0 a partir de um valor qualquer. Integrais Numricas - q=quad(eq,a,b): avaliao de integral numrica.(valor da rea) - a=dblquad(eq,xmi,xma,ymi,yma): avaliao de integral dupla. - a=triplequad(eq,xmi...): avaliao de integral tripla. Funes de Data/Hora - clock: retorna data e hora como vetor numrico. - etime(clock,t0): tempo gasto(diferena entre tempo). Funes de Cadeia de Caracteres - num2str(x): converte numero em cadeia de caractere. - str2double(x): converte cadeia de caractere em numero. -str2num(x): converte matriz de cadeia de caracteres em numero.

Você também pode gostar