Você está na página 1de 14

Tutorial de MatLab

Daniel Carneiro Rocha Universidade de Braslia

Sumrio
Nota de Abertura .......................................................................................................................... 3 Interface ........................................................................................................................................ 3 Conceitos Bsicos .......................................................................................................................... 4 Comando bsicos ...................................................................................................................... 4 Matrizes..................................................................................................................................... 5 Nmeros Complexos ................................................................................................................. 6 Observaes gerais ................................................................................................................... 6 Criando um Script .......................................................................................................................... 7 Executando um script e a diviso em clulas ............................................................................ 8 Criando Grficos ............................................................................................................................ 9 Mltiplos grficos .................................................................................................................... 10 Alterando as Propriedades dos Grficos ................................................................................. 10 Estruturas Condicionais e Loops ................................................................................................. 12 O Lao If................................................................................................................................... 12 O Lao for ................................................................................................................................ 13 O Lao While ........................................................................................................................... 13

Nota de Abertura
Esse tutorial est voltado para as simulaes de Converso de Energia e Converso Eletromecnica de Energia. Os dois tpicos iniciais, Interface e Conceitos Bsicos se destinam queles que esto tendo um primeiro contato com o MatLab e podem ser pulados sem prejuzo por pessoas que j utilizaram o MatLab antes. Sugiro, porm, que mesmo usurios que j tenham tido um contato com o MatLab leiam as Observaes gerais postadas no final da seo Conceitos Bsicos.

Interface

Figura 1. Interface

1. Current Folder Apresenta o diretrio atual e seu contedo. Para a execuo de um arquivo .m ou de uma funo, os mesmos devem-se encontrar no diretrio atual ou em um nvel superior. Caso no se deseje alterar o diretrio, pode-se alternativamente adicionar o diretrio que contm o programa a ser executado com o comando path. 2. Command Window Nessa janela pode-se digitar diretamente os comandos desejados e os resultados so exibidos diretamente na tela.

3. Workspace No workspace aparecem todas as variveis que esto sendo utilizadas. Nele podem ser verificados os tamanhos das variveis e seus valores. Um duplo clique em uma varivel exibe seu valor. Tambm pode-se apagar variveis diretamente daqui. 4. Command History Apresenta todos os comandos digitados desde a instalao do MatLab. Os comandos so divididos por seo (cada inicializao do MatLab) e so apresentados na ordem em que foram digitados. Pode-se arrastar um comando diretamente para o command window para sua execuo. A interface principal pode ser alterada de acordo com suas preferncias. Pode-se arrastar cada campo citado acima para diferentes posies na janela principal, alm de poder-se minimiz-los para barras laterais. Pode-se tambm alterar o layout atravs do menu Desktop/Desktop Layout.

Conceitos Bsicos
Comando bsicos
O command window muito til para a execuo de clculos rpidos ou que no sero repetidos. Nele se observa o smbolo >> que indica o incio de um comando. Tente digitar 5*7 e d um enter (aps cada comando sempre d enter). Observe que criada uma varivel ans com o valor 35. Sempre que se realiza um clculo sem especificar uma varivel, o MatLab atribui o resultado do clculo varivel ans. Voc pode realizar clculos normalmente utilizando a varivel ans. Tente digitar 2*ans+1. Veja que o valor da varivel ans mudou para 71, que o resultado da operao acima. Observao: O separador de inteiros e decimais no MatLab o ponto e no a vrgula. Clculos com a vrgula como separador iro ocasionar resultados errados! Para atribuir o resultado de um clculo a uma varivel especifica, digite a varivel seguida de = e a operao que se deseja realizar. Por exemplo, corrente=220/10. Observe que foi criada uma varivel com o nome corrente cujo valor 22. Nomes de variveis podem conter letras, nmeros e underline, mas apenas podem comear com letras e no podem conter espaos, acentos ou outros caracteres especiais. Para multiplicar variveis por escalares, sempre devemos utilizar o caractere (*). Por exemplo, tente utilizar o comando 2corrente e veja que ocorre um erro. Agora tente 2*corrente e veja que o resultado a multiplicao da varivel corrente por 2. At agora, todos os clculos que realizamos apresentam o resultado na tela, isso se chama eco. Para suprimir o eco, termine seu comando com o caractere ; (ponto-evirgula). O clculo ser realizado e seu valor ser atribudo a uma varivel, mas seu

resultado no aparecer na tela. Para exibir o valor de uma varivel especifica, apenas digite seu nome no MatLab. Tente digitar corrente e veja o resultado. Outras operaes que podem ser realizadas e seus operadores no MatLab so soma (+), subtrao (-), multiplicao (*), diviso (/), diviso direita (\) (a\b=b/a), potenciao (^). Tambm existe o comando de raiz quadrada, mas seu uso diferente, o comando sqrt(a), onde a o valor que se quer obter a raiz. Voc deve ter notado que sei Workspace apresenta algumas variveis criadas por voc. Um duplo clique em uma varivel exibe seu valor. Para apagar uma varivel especifica, digite clear a b c , onde a, b e c so as variveis que se deseja excluir. Para excluir todas as variveis, digite clear all. Para limpar a tela do command window digite clc. Tente esses comandos agora. Pode-se obter ajuda com um comando especifico com o comando help seguido de espao e o nome do comando desejado. Por exemplo, digite help sqrt e veja o que ocorre. Na ltima linha de cada ajuda aparece um link com o nome doc seguido do nome do comando buscado. Ao clicar sobre esse link abre-se um browser com a ajuda sobre o tema. No Command Window, ao pressionar a tecla para cima do teclado, o ltimo comando digitado mostrado. Pode-se pressionar vrias vezes a tecla para percorrer comandos mais antigos, no entanto s esto disponveis comandos que aparecem no Command History.

Matrizes
At agora trabalhamos apenas com escalares. O MatLab permite-nos trabalhar com matrizes de uma forma bem fcil. Para criar uma matriz, pode-se digitar os termos dentro de colchetes ([ ]), onde espaos ou virgulas separam as colunas e ponto-evirgula separam as linhas. Por exemplo, tente digitar matriz=[1 2 3;4 5 6;7 8 9]. Para selecionar um elemento especifico de uma matriz, digite varivel(linha,coluna), onde varivel o nome da varivel onde sua matriz est armazenada e linha e coluna o nmero da linha e da coluna do elemento desejvel. Tente digitar matriz(2,1) e note que o elemento contido na 1 coluna da linha 2 da varivel matriz aparece na tela. Observe que no woskspace o tamanho da varivel matriz 3x3, onde o primeiro nmero indica o nmero de linhas e o segundo o nmero de colunas da varivel. No caso de vetores (matrizes unidimensionais), existe outra maneira de cri-los. Pode-se digitar vetor=inicial:passo:final; onde vetor o nome da varivel, inicial o valor inicial da vetor, passo o valor do passo ou incremento entre dois valores consecutivos e final o valor final do vetor. Digite v1=5:5:15 e veja o resultado. Depois tente v2=0:5. Observe que o termo passo no necessrio, e quando omitido o MatLab considera passos de 1. Para achar a transposta de uma matriz, utiliza-se o caractere apstrofo aps o nome da varivel. Digite v2 e veja o que ocorre. Para realizar operaes com matrizes deve-se tomar cuidado. Caso se deseje realizar uma multiplicao ou diviso, ou potenciao termo a termo, deve-se utilizar o caractere . (ponto) antes do operador. Por exemplo, crie as matrizes
5

m1=[1:3; 7:-1:5; 0.2:0.2:0.6];

e m2=[1, 2, 3; 0:2:4; v1];. Observe que pode-se criar matrizes das mais diversas formas possveis. A matriz m2 foi criada definindo-se os elementos da 1 linha individualmente, criando-se um vetor na segunda linha e a terceira linha um vetor criado anteriormente. Agora, tente os seguintes comandos e observe os resultados:
m1*m2 m1.*m2

Observe que os resultados so diferentes. No primeiro caso realizada uma multiplicao convencional de matrizes. J no segundo caso realizada uma multiplicao termo a termo.

Nmeros Complexos
O MatLab tambm nos permite trabalhar com nmeros complexos. A unidade imaginria pode ser tanto representada por i como por j, por isso, evite utilizar essas letras como variveis. Apesar das duas poderem ser utilizadas como unidade imaginria, o MatLab sempre exibe o resultado na tela com i como unidade imaginria. Digite os seguintes comandos a=3+4i e b=5-2*j. Observe que podemos omitir ou no o operador (*) quando multiplicamos um nmero pela unidade imaginria. Caso deseje-se omitir, observe que o nmero deve estar antes da unidade imaginria. Alguns comandos teis quando se trabalha com nmeros complexos so real(a) Apresenta o valor da parte real de a imag(a) - Apresenta o valor da parte imaginria de a conj(a) Apresenta o conjugado de a abs(a) Apresenta o valor absoluto de a angle(a) Apresenta o argumento de a em radianos

Observaes gerais
1. O nmero PI no Matlab pode ser acessado com o comando pi 2. O comando para a funo seno sin(a) ao invs de sen(a) 3. Os comandos cos(a), sin(a), e tan(a) consideram a em radianos. Para a em graus utilize os comandos cosd(a), sind(a), tand(a) 4. Os comando acos(a), asin(a), atan(a), apresentam os arco-cosseno, -seno e -tangente de a com o resultado em radianos. Para um resultado em graus, utilize acosd(a), asind(a) e atand(a) 5. O comando log(a) calcula o logaritmo natural de a (base e). Para calcular o logaritmo na base 10, utilize o comando log10(a)

Criando um Script
At agora, todo o trabalho foi feito no Command Window. Ele se mostra bastante til para clculos rpidos, mas perde eficincia para fazer uma simulao ou cdigos que se utiliza muitas vezes, apenas alterando alguns parmetros. Para isso, criamos um script. Um script um cdigo que executado como se fosse digitado no Command Window, com a vantagem de poder ser salvo e facilmente alterar algum parmetro. Para criar um script, v no menu File/New/Script ou pressione o cone em forma de papel abaixo da barra de menus ou ainda pressione Crtl+N. Uma janela se abrir, essa a janela do editor. Pode-se acoplar a janela do editor na janela principal do MatLab, isso facilita a visualizao dos resultados. Para isso, clique no boto em forma de seta apontando para baixo, prxima do boto de fechar janela.

Figura 2. "Docar" o editor

Aps docar o editor, pode-se arrastar os mdulos para uma posio que melhor lhe agrade. Pessoalmente, prefiro minimizar todos com exceo do editor e do Command Window.

Figura 3. Minimizar Mdulos

Pode-se adicionar comentrios no script, trechos do cdigo que no sero executados e servem apenas para informar quem l o cdigo, facilitando o entendimento do cdigo por outras pessoas. Para inserir um comentrio, digite o caractere % (porcento) e todo o resto da linha se torna um comentrio e no ser executada. Observe que no editor os comentrios apresentam a cor verde. Pode-se escrever um comando por linha ou utilizar vrios comandos na mesma linha. Caso se deseje utilizar vrios comandos na mesma linha, deve-se terminar cada comando com o caractere ; (ponto-e-virgula). Lembre-se que clculos que no terminam com ponto-e-vrgula apresentam eco, enquanto que o ponto-e-vrgula suprime o eco.

Executando um script e a diviso em clulas


No editor, podem-se digitar todos os comandos aprendidos anteriormente. Para execut-los, salve seu arquivo com a extenso .m (extenso padro de scripts no MatLab). Em seguida, pode-se executar o script de trs formas distintas: digitando seu nome (sem a extenso .m) diretamente no Command Window (executa a verso salva do script), clicando no boto Save and run (salva o script e em seguida o

executa) ou clicando no boto Evaluate cell (executa a clula atual sem salvar o arquivo). Uma clula uma parte do cdigo que comea em uma linha iniciada por %% e vai at a ltima linha antes do prximo %%. Clulas so teis para se dividir o cdigo em

submdulos, podendo-se executar cada clula (submdulo) separadamente, com a finalidade de analisar apenas aquela parte do cdigo.

Criando Grficos
Crie um novo script. Trabalharemos nele para a criao de grficos. Para criar um grfico, tudo o que voc precisa so dois vetores. O comando para plotar o grfico plot(x,y) onde x a varivel independente (eixo x) e y a varivel dependente (eixo y). Abaixo temos um exemplo de cdigo, tente execut-lo.
% Criao de grficos % Crie dois vetores t=0:0.01/60:2/60; y=sin(2*pi*60*t); % Crie o grfico plot(t,y)

Alternativamente, pode-se criar um grfico com apenas um vetor, o outro vetor o MatLab considera como sendo os ndices de cada elemento do vetor. Ainda com o cdigo acima, retire o termo t e veja o que ocorre.
% Criao de grficos % Crie dois vetores t=0:0.01/60:2/60; y=sin(2*pi*60*t); % Crie o grfico plot(t,y) figure % Abre uma nova janela de figura plot(y) % Plota o grfico na nova janela de figura

Observe que a forma bsica do grfico se mantm, o que muda a escala do eixo x. Observe tambm que introduzimos um novo comando, figure. Esse comando abre uma nova janela de imagem. Pode-se utilizar esse comando com um argumento de forma a abrir uma janela especifica, como por exemplo figure(5). Caso no se utilizasse o comando figure, o primeiro grfico seria apagado e o segundo grfico seria plotado na janela do primeiro. Os prximos pontos desse captulo iro ensin-lo a alterar a aparncia do grfico, inserindo, ttulos, legenda nos eixos, mltiplos grficos etc.

Mltiplos grficos
Para criar vrios grficos na mesma janela, utiliza-se o comando hold on. Para desligar essa funo, utilize o comando hold off e os novos grficos passaro a substituir os antigos novamente. Lembre-se que o comando funciona apenas para a janela de figuras ativa, logo se deve utiliz-lo para cada janela onde se deseja manter os grficos e plotar novos. Tente executar o seguinte cdigo
% Criao de grficos % Cria vetores t=0:0.01/60:2/60; y=sin(2*pi*60*t); z=exp(-100*t); % Abre a janela de imagens 3 figure(3) % Plota os grficos plot(t,y) hold on plot(t,z) % Abre nova janela e plota os grficos figure(4) plot(t,y,t,z)

Observe que o comando na ltima linha equivalente ao duplo plot com hold on.

Alterando as Propriedades dos Grficos


possvel adicionar legenda aos eixos, ttulo, legenda s curvas, alterar a cor, tipo de linha, espessura da linha e adicionar marcadores aos grficos. Nessa seo abordaremos essas funcionalidades. Para adicionar um ttulo ao grfico ativo, utilize o comando title(Texto), onde Texto ser o ttulo do grfico e deve estar entre aspas simples. Pode-se adicionar legenda aos eixos atravs dos comandos xlabel(Texto eixo x) e ylabel(Texto eixo y). Novamente, o texto deve estar entre aspas simples. A cor de um grfico pode ser alterada de duas formas distintas. A primeira atravs da sintaxe plot(x,y,-bx). O termo entre aspas simples indica qual o tipo de linha, a cor e o tipo de marcador, respectivamente. As cores, tipos de linha e marcadores esto apresentados abaixo, devendo ser digitados entre aspas simples, conforme a sintaxe apresentada acima.

10

Tipo de Linha Cor Caractere Linha Caractere Cor Slida b Azul : Pontilhada g Verde Trao-. r Vermelho pontilhada -Tracejada c Ciano nenhum Sem linha m Magenta y Amarela k Preta w Branca nenhum Azul

Marcador Caractere Marcador . Ponto o Circulo x + * s d v ^ < > p h nenhum X Mais Estrela Quadrado Diamante Triangulo p/ baixo Trinagulo p/ cima Triangulo p/ esquerda Triangulo p/ direita Pentagrama Hexagrama Sem marcador

Assim, no exemplo acima teramos um grfico azul de linha slida e marcadores em forma de X. Outra forma de definir a cor de um grfico atravs da sintaxe plot(x,y,Color,[0 0 1]), onde Color deve ser digitado desta maneira e indica que o prximo termo uma definio de cor e o termo [0 0 1] indica a cor do grfico pelo sistema RGB, onde o primeiro nmero indica o nvel de vermelho, o segundo o de verde e o terceiro de azul, sendo que todos os nmeros devem estar entre 0 e 1 separados por espao e a combinao dos trs nveis pode produzir qualquer cor, possibilitando maior flexibilidade que o mtodo anterior. Tente executar o cdigo abaixo. Aproveite e teste o conceito de clulas.
%% Criao de grficos close all % Fecha todas as janelas de imagens %% Cria vetores t=0:0.01/60:2/60; y=sin(2*pi*60*t); z=exp(-100*t); %% Abre a janela de imagens 3 figure(3) % Plota os grficos plot(t,y,'Color', [0.5 0.5 0]) hold on plot(t,z,'Color', [0.8 0.2 0.25]) title('Grficos com hold on') % Cria um ttulo xlabel('Tempo [s]') % Cria uma legenda para o eixo x ylabel('Tenso [V]') % Cria uma legenda para o eixo y %% Abre nova janela figure

11

% Plota um grfico com marcadores circulares e outro com % linha pontilhada de cor vermelha plot(t,y,'o',t,z,':r') title('Grficos com comando plot nico') % Cria um ttulo xlabel('Posio [km]') % Cria uma legenda para o eixo x ylabel('Altura [m]') % Cria uma legenda para o eixo y

Voc pode alterar outras propriedades dos grficos como a espessura das linhas. Para mais comando, consulte a ajuda do comando plot.

Estruturas Condicionais e Loops


Aqueles que esto familiarizados com alguma linguagem de programao devem conhecer os comandos if, while e for. O MatLab tambm possui estes comandos.

O Lao If
O comando if possui a seguinte estrutura:
if condio 1 executa se condio 1 verdadeiro e vai para end elseif condio 2 executa se condio 1 falsa e 2 verdadeira e vai para end ... else executa se todas as condies so falsas end

Os trs pontos indicam que pode-se adicionar quantos elseif sejam desejados, cada um com uma condio e um comando, os quais so executados caso todas as condies acima so falsas e a condio do atual elseif verdadeira. Alguns comandos lgicos do MatLab so: a==b (a igual a b?), a~=b (a diferente de b?), a>b (a maior que b?), a<b (a menor que b?), a>=b (a maior ou igual a b?), a<=b (a menor ou igual a b?), && (E lgico), || (OU Lgico). Analise o exemplo abaixo e teste-o. Tente alterar o valor de n e veja o que ocorre.
%% Estrutura if n=0; % Define o valor de n % Incio do lao if if n>0 display('n positivo') elseif n<0 display('n negativo') else display('n=0') end

% % % %

Primeira condio Executa se a 1 condio verdadeira Segunda condio Executa se 1 cond. falsa e 2 verdadeira

% Executa se nenhuma cond. verdadeira % Indica o fim do lao if

12

O Lao for
A estrutura for possui a seguinte estrutura:
for variavel_controle=matriz_controle comando end

Durante a execuo do lao for, uma varivel de controle recebe o primeiro termo da matriz de controle e executa o comando. Aps executar o comando a varivel de controle recebe o segundo elemento da matriz de controle e executa o comando novamente. Esse processo repetido at que a varivel de controle tenha passado por todos os elementos da matriz de controle. Caso o lao for encontre o comando continue, ele passa para a prxima execuo do lao sem executar o que vem abaixo do comando continue. Caso encontre o comando break, a execuo do lao terminada. A matriz de controle pode ser uma matriz definida anteriormente e armazenada em uma varivel (por exemplo, for n=a), uma matriz definida manualmente (por exemplo, for n=[0 17 -32 0.5 18]) ou uma matriz com incremento automtico (por exemplo, for n=0:15:450). Abaixo temos um exemplo desse lao.
%% Estrutura for a=0; % Define o valor inicial de a

%Incio do lao for for t=1:32 v(t)=10*t+2; % Define o valor do elemento t da matriz v a=a+1; % Incrementa em 1 unidade o valor da varivel a end plot(v) % Plota o grfico de v

fprintf('%f \n',a) % Apresenta na tela o valor de a e salta uma linha

O Lao While
O comando while possui a seguinte estrutura:
while condio comando end

Durante sua execuo, a condio testada e se for verdadeira o comando executado. A execuo se repete at que a condio seja falsa. Os testes lgicos do comando if e os comandos continue e break tambm so vlidos para o lao while. Abaixo temos um exemplo desse lao.

13

%% Estrutura while b=10; % Define o valor inicial de b % Inicia o lao while while b>0 corrente(b)=b^2/2; % Define o elemento b da matriz corrente b=b-1; % Decrementa a varivel b em 1 unidade end % Fim da execuo do lao while plot(corrente) % Plota o grfico da varivel corrente

% Apresenta na tela o texto e o valor de b fprintf('o valor final de b foi %i \n',b)

14