Você está na página 1de 27

Mini Curso Introduo ao MATLAB

Aline Villela Chaia Maria Ribeiro Daibert

GET Engenharia de Produo - UFJF

Sumrio:

Introduo ..........................................................................................................................3 Objetivos.............................................................................................................................3 Histrico..............................................................................................................................3 Layout .................................................................................................................................4 Help ....................................................................................................................................9 Dados ................................................................................................................................ 10 Funes ............................................................................................................................. 17 Grficos ............................................................................................................................. 20 Programao ..................................................................................................................... 24

Introduo
O MATLAB, abreviao para MATrix LABoratory, um software com linguagem simples e direta, que realiza clculos de engenharia, e por isso possui uma ampla biblioteca de funes matemticas pr-definidas. Essas funes permitem que problemas de programao sejam resolvidos de maneira muito mais simples do que com outras linguagens computacionais.

Objetivos
Esta apostila tem como objetivo introduzir o MATLAB como ferramenta de programao computacional, usando como base o clculo de matrizes. Alm disso, apresenta algumas de suas aplicaes nesta rea e exemplos para melhor fixao do contedo.

Histrico
A linguagem foi desenvolvida na dcada de 70 por Clever Moler, ento presidente do departamento de Cincias da Computao da Universidade do Novo Mxico. Pela simplicidade e facilidade de uso, foi aderida por muitas universidades e logo se destacou na comunidade matemtica. Em 1984, em parceria com Steve Bangert e o engenheiro Jack Little, a MathWorks (detentora dos direitos autorais) foi fundada e o MATLAB foi reescrito na linguagem C. Por ser um ambiente integrado de modelagem de sistemas e algoritmos, ideal para implementao de projetos complexos, a ferramenta se tornou um produto lder na rea de computao numrica e cientfica.

Layout
Pode-se dizer que o MATLAB possui cinco janelas principais. Duas nas quais o usurio trabalha: Command Window e Editor. E trs que mostram dados importantes: Command History Window, Workspace e Figure. A seguir, uma descrio detalhada de cada janela. Command Window a janela dos clculos e da programao. Nesta janela, so inseridos os dados, que so interpretados pelo programa, e ento os resultados so retornados. Caso o usurio queira, esta janela tambm mostra o desenvolvimento dos clculos realizados, mostrando os valores de cada varivel, aps terem sido executadas as aes referentes a elas.

Editor a janela onde so criados cdigos que podem ser salvos como arquivos do MATLAB. a janela mais utilizada, uma vez que nela podem ser digitados cdigos completos para s depois serem rodados na Command Window. Alm disso, com o modo Debug, que ser explicado mais adiante, pode-se rodar o cdigo linha por linha, para ver todos os passos realizados pelo programa.

Command History Window Esta janela mostra todos os comandos inseridos na Command Window recentemente, classificados por ordem cronolgica. Ao apertar a seta pra cima do teclado na Command Window, visualizamos os comandos armazenados na Command History Window.

Workspace O workspace mostra todas as variveis utilizadas recentemente e seus respectivos tipos e valores. Com ele, possvel verificar se alguma varivel teve seu valor modificado quando o cdigo foi rodado, e assim encontrar eventuais erros na programao.

Figure Window A Figure Window a janela que exibe grficos. Estes podem ser criados em duas ou trs dimenses. Mais adiante, ser explicado como plotar grficos em duas dimenses.

Help
O comando help consiste em uma ferramenta de ajuda sobre todas as funes, comandos e operadores existentes no MATLAB. Para acessar, basta digitar na Command Window: >>help funo/comando/operador A partir do comando dado, aparecem informaes sobre o termo pesquisado. Primeiramente, fornecida uma definio. Em seguida, so dados exemplos de uso e todas as possibilidades de aplicao, bem como informaes sobre tpicos relacionados pesquisa. A seguir, tem-se um exemplo do comando help close.

Dados
A linguagem guagem do MATLAB, chamada M-cdigo M cdigo simples e objetiva, o que torna a declarao de dados muito prtica. A unidade fundamental uma matriz (array), a qual se trata da organizao de elementos distribudos di em linhas e colunas. Um escalar uma matriz de dimenses 1x1 e um vetor uma matriz de uma nica dimenso (linha ou coluna). Os ndices dos elementos so sempre iniciados com 1.

Existem inmeras funes pr-definidas pr definidas armazenadas no software, prontas para serem usadas. Tambm existe a possibilidade do usurio criar sua prpria biblioteca de funes. Neste item, sero abordados os seguintes temas: : salvar um arquivo, executar um arquivo, criao de dados, operaes entre matrizes e elemento a elemento. elemento Salvando um arquivo possvel salvar um cdigo em um arquivo de texto com extenso .m, utilizando o Editor. Para isso, basta clicar na barra de menu em File>New>M-File. Veja o exemplo abaixo:

Feito isso, o arquivo ser salvo na pasta de destino desejada e as alteraes feitas tambm podero ser salvas.

Executar um arquivo Existem duas maneiras de executar um arquivo salvo, a primeira delas selecionando o que se deseja executar e em seguida clicar em F9 ou na barra de menu em Text>Evaluate Selection. A segunda opo pelo nome que foi dado ao arquivo: basta digit-lo na janela de comando e em seguida apertar Enter, e o arquivo ser executado.

Criando Dados Declarar uma varivel no MATLAB muito simples, basta digitar o nome desejado e o valor a ser atribudo a essa varivel. Caso se deseja que a varivel ainda no tenha um valor atribudo, basta declar-la como vazio. >>x=[]; No necessrio declarar o tipo de varivel, o prprio programa a identifica. Ao declarar uma matriz utiliza-se espao para separar elementos de uma mesma linha e ponto e vrgula (;) para colunas. >>nome_da_varivel=[dados]; Exemplo: >> a=10; >> c=[1 2 3]; No exemplo acima, ao final da linha de cdigo h o ponto e vrgula (;). Tal mecanismo utilizado caso no seja necessrio exibir seu processamento na linha abaixo. A seguir, um exemplo em que o desenvolvimento mostrado: >> m=[ 1 5 10; 2 10 30] m= 1 5 10

2 10 30 Para acessar um elemento de uma matriz, basta digitar o nome da varivel seguido dos ndices da linha e coluna desejada. Pode-se tambm acessar todos os elementos de determinada linha ou coluna, como nos exemplos a seguir: >> matriz1=[ 2 3 6 7; 8 6 4 0; 5 1 3 9] matriz1 = 2 8 5 3 6 1 6 4 3 7 0 9

>> matriz1(1,4) ans = 7

>> matriz1(3,:) ans = 5 1 3 9

O ltimo elemento de uma linha ou coluna pode ser acessado por um comando especial: >> matriz1(end,2) ans = 1

>> matriz1(end,end) ans = 9

>> matriz1(3,end) ans = 9

No primeiro caso, o elemento acessado foi o ltimo da segunda coluna. No segundo foi o ltimo da ltima linha. E no terceiro, foi o ltimo da terceira linha. Para acessar x elementos de uma matriz, utilizam-se dois pontos (:) para indicar entre que intervalo deve-se exibir os elementos. Caso seja necessrio exibir todos os elementos de uma linha ou coluna, utilizam-se apenas os dois pontos (:). Exemplo: >> matriz1(1,2:4) ans = 3 6 7

>> matriz1(:,3) ans =

6 4 3 H outras formas de inicializao de matrizes, duas delas so apresentadas abaixo: >>nome_da_varivel nome_da_varivel = primeiro:incremento:ltimo >>nome_da_variavel=linspace nome_da_variavel=linspace (primeiro,ltimo,nmero de elementos) Exemplos: >> a=1:2:10 a= 1 3 5 7 9

>> b=linspace(2,10,5) b= 2 4 6 8 10

Operaes com escalares Todas as operaes entre escalares so feitas de forma simples. So realizadas da esquerda para a direita, obedecendo ordem: potenciao, diviso/multiplicao, diviso/m adio/subtrao.

Operaes com matrizes Entre matrizes: Para realizar operaes bsicas entre matrizes necessrio estar atento para algumas regras: Soma e Subtrao: matrizes de mesma dimenso; Multiplicao: nmero de colunas da primeira igual ao nmero de linhas da segunda; Diviso: matrizes com mesmo nmero de linhas; Potncia: matrizes quadradas.

Exemplos: >> a=[1 2 3]; >> b=[ 2 4 6]; >> c=a/b c= 0.5000 >> c*a ans = 0.5000 1.0000 1.5000

>> a= [1 2; 3 4] a= 1 3 2 4

>> a^2 ans = 7 10 15 22 Existem alguns comandos especiais para operaes com matrizes. Veja a tabela abaixo:

Elemento a elemento: elemento As operaes so feitas elemento a elemento de matrizes quadradas. Para isto, basta colocar o sinal de ponto (.) antes do sinal da operao rao desejada. Exemplo: E

>>a = 1 3 2 4

>> b=[ 5 67; 100 3] b= 5 67 100 3

>> a.*b ans = 5 134 300 12 Operadores relacionais: Os operadores relacionais so utilizados quando se necessita conhecer algum tipo de relao entre elementos seja de uma matriz, vetor ou escalar. Os dados so retornados em forma de matriz, com 0 para falso e 1 para verdadeiro.

Exemplo: >> d= [12 56 78] d= 12 56 78

>> e=[ 2 90 22] e= 2 90 22

>> d>e ans = 1 0 1

Concatenao de matrizes: A concatenao de matrizes consiste em unir partes de diferentes matrizes em uma nova matriz. Pode-se agrupar

horizontalmente (mesmo nmero de linhas), verticalmente (mesmo nmero de colunas) ou somente alguns elementos. >> A A= 1 2 3

>> B B= 3 4 5

>> C=[A B] 1 2 3 3 4 5

>> C=[A;B] C= 1 3 2 4 3 5

>> D=[B(1,1);A(1,2)] D= 3 2

Funes
Como j foi mencionado anteriormente, existem inmeras funes pr-definidas pr no MATLAB. Nesta seo sero apresentadas algumas delas e suas principais aplicaes, alm de como devem ser manipuladas. Funes de inicializao de matrizes O software apresenta funes que possibilitam inicializar matrizes com zeros, ums, identidade, entre outras. Essas funes esto reunidas na tabela abaixo.

A manipulao dessas funes simples, basta digit-las digit las e adicionar as dimenses da matriz. Funes Matemticas As funes matemticas so de grande importncia e permitem ao usurio agilizar e simplificar seus clculos. Em primeiro lugar, deve-se deve se destacar destac que as funes devem ser declaradas como char, ou seja, deve-se se colocar o valor da funo entre apstrofos. Exemplo: >> f='2*x^2' f= 2*x^2

A seguir esto algumas tabelas contendo as principais funes de aproximao, exponenciais, trigonomtricas e complexas. Funes de Aproximao

Funes Exponenciais

Funes Trigonomtricas

Funes Complexas

As funes derivada (diff) e integral (int) merecem ateno especial por sua grande aplicao na matemtica. Como j foi dito, necessrio declarar a funo sobre a qual se deseja calcular a operao como char. Veja os exemplos abaixo: >> f=x^2+3 f= x^2+3 >> derivada=diff(f) derivada = 2*x

>> f = '3*x^2 - 15*x + 18' f= 3*x^2 - 15*x + 18

% Cria a funo como char

>> integral = int(f) integral = x^3-15/2*x^2+18*x

% faz a integral da funo

Funes Aleatrias As funes aleatrias so aquelas capazes de gerar uma determinada quantidade de nmeros aleatoriamente. possvel limitar o intervalo em que so gerados e tambm o tipo de nmero gerado. Tais funes esto descritas abaixo com sua nomenclatura: rand(i,j) : gera matriz de i linhas, j colunas, com elementos que variam de 0 a 1 randint(i,j,[mnimo mximo]) : gera matriz de i linhas, j colunas, com elementos inteiros que variam de mnimo a mximo

Para uma melhor compreenso, veja os exemplos que seguem: >> matriz=rand(2,2) matriz = 0.8147 0.1270 0.9058 0.9134 >> matriz2=randint(1,3,[0 10]) matriz2 = 5 8 1

Grficos
Os grficos no MATLAB podem ser criados em duas ou trs dimenses, utilizando-se de vrios comandos diferentes. Eles utilizam pontos discretos para o desenho. Ou seja, par de pontos nicos pelos quais a linha do grfico ir passar. Portanto, quanto mais pontos fornecidos ao programa, melhor ser a visualizao da curva desejada. A seguir, o passo a passo pra a criao de grficos em duas dimenses e algumas funes que podem ser utilizadas, a partir do comando plot. Como plotar o grfico Primeiramente, deve-se criar dois vetores que armazenem, respectivamente, os valores das variveis X e Y que sero os eixos do grfico. Ento, o comando a ser dado : >> plot(x,y,Opes de Estilo) O campo Opes de Estilo diz respeito cor da linha, do tipo de tracejado e da marcao dos pontos dos vetores. Ao digitar, help plot, pode-se visualizar todas as opes de estilo existentes no programa e seus respectivos comandos. Pode-se tambm omitir uma das variveis e/ou a opo de estilo, como no caso abaixo. >>plot(y) Nesta situao, ele plota o grfico na forma padro, que utilizando um vetor contendo 1, 2, 3, 4... para a varivel que est faltando, e a cor do grfico preto, com a linha contnua e sem marcao dos pontos.

Plotando uma funo Uma outra maneira para se plotar um grfico no MATLAB usando o comando fplot. Ele plota diretamente uma funo dada. Seu formato : >> fplot(funo,[intervalo de valores], opes de estilo); Exemplo: >> fplot('cos(x)',[0,pi],'green')

Mais de um grfico na mesma janela Em programas que existem mais de um comando de plotagem de grficos, a cada Figure Window aberta, ela substitui a Figure Window anterior. Caso o objetivo seja visualizar os grficos simultaneamente, ou simplesmente no perder o grfico feito anteriormente, existe alguns recursos na biblioteca do MATLAB. So eles: Figure, Hold on / Hold off e Subplot. Figure: esse comando abre uma nova Figure Window, onde o prximo grfico plotado ser mostrado.

>>figure Hold on / Hold off : o comando hold on fixa a ltima Figure Window gerada, e todos os plots a partir dele at o comando hold off so gerados na mesma janela. Ou seja, ele possibilita que vrias curvas sejam mostradas num mesmo grfico.

>>hold on >>plot(x,y) >>plot(w,z)

>>hold off No exemplo acima, os grficos com eixos x e y, e o com eixos w e z, so gerados na mesma janela.

Subplot: o comando subplot permite que vrios grficos sejam mostrados separadamente numa mesma Figure Window. Com ele, aparecero duas ou mais curvas, cada qual com seus eixos e escalas, lado a lado horizontalmente e/ou verticalmente, numa mesma janela.

>>plot(x,y) >>subplot(a,b,p) >>plot(w,z) No caso acima, o comando subplot divide a Figure Window em a por b grficos e plota a prxima curva no p-simo grfico.

Comandos auxiliares Existem alguns comandos para serem utilizados em Figure Windows que ajudam a melhorar a aparncia dos grficos e auxiliam na identificao dos dados. Dentre eles, pode-se destacar: title, xlabel, ylabel e text. Title: O comando title insere um ttulo ltima Figure Window aberta.

>>title(titulo desejado) Xlabel: O comando xlabel permite que o eixo das abscissas do grfico seja identificado.

>>xlabel(identificao abscissas) Ylabel: O comando ylabel permite que o eixo das ordenadas do grfico seja identidifcado.

>>ylabel(identificao ordenadas) Text: O comando text insere um texto digitado pelo usurio numa determinada posio.

>>text(x,y,texto desejado)

Um exemplo utilizando esses recursos : >> x=[ 4 8 12 16]; >> y=[ 1 2 3 4]; >> plot(x,y,'green') >> xlabel('x'); >> ylabel('y'); >> text(8,2,'(8,2)')

Programao
Para implementar cdigos completos e criar programas que sejam funcionais, necessria a utilizao de alguns recursos que o MATLAB fornece. So os operadores lgicos, os comandos de limpeza, a indentao, os processos iterativos, a criao de funes personalizadas, o tempo de simulao e o modo Debug. A seguir, cada um dos recursos mencionados sero explicados.

Operadores Lgicos So os operadores de comparao. Eles podem ser usados para relacionar duas ou mais variveis, ou ento para realizar testes. A tabela abaixo exibe todos os operadores usados no MATLAB.

Operador < <= > >= == ~= & | ~

Significado Menor que Menor ou igual a Maior que Maior ou igual a Igual a No igual Operador e Operador ou Operador no

Comandos de Limpeza Ao programar, para facilitar o entendimento do cdigo quando rodado na Command Window, existem os recursos de limpeza da tela e das variveis. So eles: clc, clear all e close all. Clc: Ao digitar o comando clc na Command Window, ele limpa todos os dados inseridos anteriormente, porm sem apag-los da memria.

>>clc Clear all: O comando clear all limpa todos os valores das variveis que foram armazenados anteriormente.

>>clear all Close all: O comando close all fecha todas as Figure Windows abertas.

>>close all

Indentao O recurso da indentao permite que o cdigo digitado no Editor seja organizado, de acordo com os espaamentos das margens de cada linha, a fim de torn-lo mais claro para o usurio. Ele tem como base a hierarquizao dos comandos utilizados. Para indentar um cdigo, basta selecion-lo, clicar com o boto direito do mouse e escolher a opo Smart Indent.

Processos Iterativos Os processos iterativos so aqueles que limitam o cdigo em partes, e necessitam de condies iniciais ou finais para que aquele trecho seja executado. Eles so divididos em quatro: If/If-else, While, For e Switch-case. If / If-else: O comando If, ou Se, executa o trecho do cdigo abaixo dele apenas se a condio inicial for satisfeita. Seu formato no MATLAB :

if(condio1) expresses1; elseif(condio2) expresses2; else expressesn; end

While: O comando While, ou, Enquanto, executado enquanto alguma condio inicial satisfeita. Ou seja, para que ele no se torne um loop infinito, em algum ponto durante o loop, a varivel que define a condio deve ser modificada para que a condio no seja mais satisfeita. Essa mudana na varivel de condio denominada flag. O formato do comando while no MATLAB :

while(condio) expresses; end

For: O comando For, ou, Para/Faa, tambm caracterizado como um loop. Porm ele determina previamente os valores iniciais e finais da varivel de condio. Ou seja, pr-definida a quantidade de vezes em que o trecho do comando for ser executado. Seu formato no MATLAB :

for varivel_de_iterao=valor_inicial : valor_final expresses; end

Switch-Case: O comando Switch-Case, ou, Escolha, permite que se tenha diferentes casos para uma determinada varivel. Dependendo do valor que esta varivel possui, ser executada uma das opes do switch-case. Seu formato no MATLAB :

switch varivel case a expresses; case b expresses; case c expresses; otherwise expresses; end

Criao de Funes O MATLAB possui uma biblioteca extensa de funes, porm o usurio tambm pode criar suas prprias funes. Geralmente, esse recurso utilizado quando uma parte do cdigo repetida vrias vezes. Por isso, criar uma funo com determinado trecho deste cdigo, o torna menor e mais fcil de ser visualizado. Cada funo criada deve possuir sua prpria janela do Editor. E esse arquivo deve sempre ser salvo na mesma pasta que contm o cdigo todo. O formato que esta funo deve ser criada : function sada = nome_da_funo(entrada) expresses; O nome_da_funo deve ser sempre escrito em letras minsculas e sem espaos. Alm disso, ao salvar o arquivo do Editor, este deve possuir o mesmo nome da funo criada, uma vez que ao chamar esta funo durante o cdigo, ele ira buscar na pasta pelo arquivo que possui aquele nome. Os dados de entrada da funo so os parmetros que sero passados do cdigo para a funo e que sero utilizados por ela. Caso exista mais de um dado de entrada, eles devem ser separados por vrgulas, dentro dos parnteses. E o dado de sada o valor que a funo retorna e que ser armazenado pela varivel que chamou a funo. Pode-se tambm criar uma funo que no retorna nenhum valor. Ela apenas executa o trecho de cdigo correspondente. Seu formato deve ser: function nome_da_funo(entrada) expresses;

Tempo de Simulao Um recurso bastante til do MATLAB o chamado Tic Toc. Ele calcula e mostra ao programador o tempo em que determinado trecho demorou para ser executado. Como de interesse do programador deixar o programa cada vez mais rpido, o Tic Toc permite essa anlise. Seu formato : tic trecho do cdigo desejado toc O resultado deste comando mostrado na Command Window.

Modo Debug O modo Debug, que pode ser utilizado no Editor, permite que o programador acompanhe a execuo de determinado trecho do seu cdigo, linha por linha. Desta forma, pode-se visualizar exatamente todos os passos que o programa segue, facilitando a correo de erros eventuais. Alm disso, ao posicionar a seta do mouse sobre cada varivel durante o modo Debug, pode-se ver seu valor e consequentemente, suas mudanas ao longo da execuo. Para rodar um programa no modo Debug, deve-se seguir alguns passos: Clicar no trao ao lado do nmero referente linha a partir da qual se deseja acompanhar. Aparecer uma bolinha vermelha. Clicar em Debug na barra de menus, e ento em Run. Aparecer uma setinha verde na linha em que o programa est parado. Apertar F10 para que o programa prossiga para a prxima linha. Repetir at quando desejar. Clicar em Debug e em Exit Debug Mode para sair do modo Debug.