You are on page 1of 16

INSTITUTO POLITCNICO DE TOMAR

Engenharia Electrotcnica

Matlab Tutorials

Principais Funes do Matlab

Funes Bsicas do Matlab


O Matlab consiste num programa interactivo de computao numrica e visualizao de dados. Este programa muito utilizado na rea de controlo, quer na anlise de dados quer a nvel de projecto, incluindo diversas toolboxes que extendem as funes bsicas do Matlab, as quais iro ser revistas de seguida, em diversificadas reas de aplicao.

Vectores
Colocar cada elemento do vector entre parntesis rectos (cada elemento deve estar separado por um espao). O vector deve ser atribudo a uma varivel, tal como apresentado de seguida:
a = [1 2 3 4 5 6 9 8 7] b = a + 2 b = 3 a = 1 2 3 4 5 6 9 8 7 4 5 6 7 8 11 10 9

Caso se pretenda criar um vector com elementos entre 0 e 20 separados igualmente por elementos de 2 (este mtodo frequentemente utilizado quando se pretende criar vectores de tempo), deve-se escrever o seguinte comando:
t = 0:2:20

O Matlab devolve:
t =

2 4 6 8 10 12 14 16 18 20

Manipulao de Vectores
A manipulao de vectores igualmente fcil. Suponha que pretende adicionar o valor 2 a cada um dos elementos do vector a, deve ento fazer o seguinte:
b = a + 2

O Matlab devolve:
b = 3 4 5 6 7 8 11 10 9

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

Supor agora que se pretende somar o vector a com o vector b, desde que estes tenham a mesma dimenso (tenham o mesmo nmero de elementos) a operao bastante simples, bastando fazer:
c = a + b

O Matlab devolve:
c =

6 8 10 12 14 20 18 16

Funes
O Matlab contm vrias funes matemticas, tais como: sin, cos, log, exp, sqrt e muitas outras. Algumas constantes, tais como pi, i ou j (utilizadas para a raiz quadrada de 1) so tambm incorporadas no Matlab.
sin(pi/4)

O Matlab devolve:
ans = 0.7071

Quando no se atribui nenhuma varivel a uma determinada funo ou valor, o Matlab atribui-lhe uma varivel por defeito ans.

Como criar as suas prprias funes no Matlab


Quando se introduz um comando, tais como, roots, plot, ou step, no Matlab, o que se est realmente a fazer a correr um m-file com determinadas entradas e sadas as quais so introduzidas com o intuito de realizarem uma tarefa em particular. Este tipo de ficheiros so semelhantes a uma sub-rotina, a qual tem variveis de entrada (parmetros que so passados para o m-file), sadas (valores que retornam do m-file) e um corpo de comandos o qual pode conter variveis locais. possvel escrever as nossas prprias funes atravs da utilizao do comando function. A nova funo tem de ter um nome com uma extenso '.m'. Esta funo deve ser guardada na mesma directoria do restante software. A primeira linha deste ficheiro deve conter a sintaxe desta funo, do seguinte modo:
function [output1,output2] = filename(input1,input2,input3)

A funo pode ter o nmero de entradas e sadas que se achar necessrio. Sugere-se que a seguir ao comando function, se inclua o seguinte comando:
error(nargchk(x,y,nargin));

O x e o y consistem respectivamente no menor e no maior nmero de entradas que podem ser aceites pela funo; caso se introduzam mais ou menos entradas que as definidas um erro lanado.

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

As funes podem ser complexas e requerida muita prtica com o Matlab para que estas possam ser definidas de um modo fivel e eficaz. De seguida apresenta-se um exemplo simples de uma funo denominada de add.m:
function [var3] = add(var1,var2) %add is a function that adds two numbers var3 = var1+var2;

Se guardar estas trs linhas num ficheiro denominado "add.m" na directoria do Matlab, pode depois utiliz-la atravs do comando:
y = add(3,8)

Obviamente que a maioria das funes so bastante mais complexas do que a que foi apresentada. Este exemplo pretende apenas mostrar a forma bsica da funo.

Grficos
muito simples criar grficos com o Matlab. Suponha que pretende criar um grfico de uma funo seno (funo do tempo). O procedimento o seguinte: Criar um vector de tempo - t; Definir um vector y, em que cada elemento consiste num valor da funo seno para cada valor de t. Note-se que tanto o vector y como o vector t tm a mesma dimenso.
t=0:0.25:7; y = sin(t); plot(t,y)

Nota: Deve-se colocar sempre um ponto e vrgula a seguir a cada comando para evitar que os valores de cada varivel estejam sempre a aparecer, cada vez que estas sejam calculadas. O Matlab devolve:

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

Esttica do Grfico
Adicionando um terceiro parmetro na funo plot possvel alterar quer a cor quer o padro da linha do grfico. Observe o seguinte exemplo:

x = 0:0.1:100; y = 3*x; plot(x,y,'r:')

O novo grfico tem o seguinte aspecto:

O terceiro parmetro consiste num dos trs caracteres que definem a cor e o padro. A lista de caracteres apresentada de seguida:
y m c r g b w k amarelo magenta oceano vermelho verde azul branco preto . o x + * : -. -ponto crculo x-mark mais slido asterisco ponteado tracejado com ponto tracejado

possvel colocar mais do que uma funo no mesmo grfico. Suponha que pretende colocar uma funo seno e uma funo co-seno no mesmo grfico, tendo estas cor e padro diferentes:
x = linspace(0,2*pi,50); y = sin(x); z = cos(x); plot(x,y,'r', x,z,'gx')

O grfico teria o seguinte aspecto:

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

O mesmo efeito pode ser obtido utilizando as funes hold on e hold off tal como apresentado de seguida:
x = linspace(0,2*pi,50); y = sin(x); plot(x,y,'r') z = cos(x); hold on plot(x,z,'gx') hold off

Nota: o comando x = linspace(0,2*pi,50), faz o mesmo que x = 0: 2*pi: 50.

Subplotting
A mesma figura pode ter mais do que um grfico. Para que tal seja possvel necessrio utilizar a funo subplot, tal como apresentado de seguida:
subplot(m,n,p)

Este comando divide a figura numa matriz de m linhas e n colunas, podendo deste modo criar m*n grficos em cada figura. Veja-se o seguinte exemplo:
x y z w = = = = linspace(0,2*pi,50); sin(x); cos(x); tan(x);

subplot(2,2,1) plot(x,y) subplot(2,2,2) plot(x,z) subplot(2,2,3) plot(x,w)

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

O Matlab devolve:

Embora tenha sido criada uma matriz 2*2 para quatro grficos, apenas trs foram utilizados. Era extremamente simples adicionar um quarto grfico atravs do comando subplot(2,2,4). Deste modo fcil perceber que o parmetro p indica a ordem em que o grfico ir ser apresentado.

Alterar os Eixos
O comando axis responsvel por alterar as dimenses dos eixos. Este comando deve ser colocado antes da funo plot.
axis([xmin, xmax, ymin, ymax])

Por exemplo, suponha que pretende realizar um grfico da funo y = exp(5t)-1:


t=0:0.01:5; y=exp(5*t)-1; plot(t,y)

O Matlab devolve:

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

Se antes do cdigo que apresentado anteriormente colocar o segionte comando:


axis([0, 1, 0, 50])

Ter como resultado:

Adicionar Texto aos Grficos


possvel colocar texto nos grficos atravs da utilizao de trs comandos: title, xlabel e y-label. Observe o seguinte exemplo:
title('step response of something') xlabel('time (sec)') ylabel('position, velocity, or something like that') gtext('unnecessary labeling')

O resultado o seguinte:

O comando gtext, utilizado para colocar outras legendas com o rato.

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

Outras Funes teis


clf

(Limpa o grfico actual); (Abre uma nova figura, de modo a que a figura prvia seja guardada);

figure close

(Fecha a janela da figura actual);

loglog

(Faz o mesmo que a funo plot, no entanto os eixos so escala logartmica); (Faz o mesmo que a funo plot, no entanto o eixo dos xx escala logartmica); (Faz o mesmo que a funo plot, no entanto o eixo dos yy escala logartmica); (Adiciona uma grelha ao grfico).

semilogx

semilogy

grid

Polinmios
Em Matlab um polinmio representado por um vector. Para criar um polinmio basta introduzir os coeficientes do polinmio num vector pela ordem descendente. Por exemplo, suponha que pretende introduzir o seguinte polinmio:

Para colocar este polinmio no Matlab, basta fazer:


x = [1 3 -15 -2 9] x = 1 3 -15 -2 9

Se alguns dos coeficientes dos polinmios forem zeros, estes tambm devem ser introduzidos na ordem correcta: Veja-se o seguinte exemplo:

Para colocar este polinmio no Matlab, basta fazer:


y = [1 0 0 0 1]

Para calcular o valor do polinmio para determinado valor da varivel s, deve-se usar a funo polyval.
z = polyval([1 0 0 0 1],2)

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

Ter como resultado:


z = 17

O comando roots serve para calcular as razes do polinmio. Observe os seguinte exemplo:

Para calcular as razes do polinmio, basta fazer:


roots([1 3 -15 -2 9]) ans = -5.5745 2.5836 -0.7951 0.7860

Suponha agora que pretende multiplicar dois polinmios. Para tal ter de realizar a funo convoluo (conv) do seguinte modo:
x = [1 2]; y = [1 4 8]; z = conv(x,y) z = 1 6 16 16

Para dividir dois polinmios utiliza-se a funo deconv. A funo devolve dois valores, nomeadamente o resultado e o resto da diviso. Voltando ao exemplo anterior, caso pretenda dividir o polinmio z por y, devo preceder do seguinte modo:
[xx, R] = deconv(z,y)

Ter como resultado:


xx = 1 R = 0 0 0 0 2

No caso de pretender somar ou subtrair polinmios podem ocorrer duas situaes distintas. Se os polinmios tiverem a mesma dimenso no h problema bastando fazer o mesmo que foi feito no caso dos vectores, caso tenham dimenses distintas ter de realizar algumas operaes para colocar primeiro os polinmios com a mesma dimenso.

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

Matrizes
Colocar uma matriz no Matlab praticamente igual a colocar um vector. A nica diferena que as linhas da matriz vm separadas por ponto e vrgula.
B = [1 2 3 4;5 6 7 8;9 10 11 12]

Ter como resultado:


B = 1 5 9 2 6 10 3 7 11 4 8 12

Outro modo de definir a matriz:


B = [ 1 2 3 4 5 6 7 8 9 10 11 12]

Ter como resultado:


B = 1 5 9 2 6 10 3 7 11 4 8 12

Caso pretenda encontrar a transposta de uma matriz, basta fazer:


C = B'

Ter como resultado:


C = 1 2 3 4 5 6 7 8 9 10 11 12

Nota: se a matriz C fosse complexa caso se utilizasse o comando anterior obter-se-a a complexa conjugada da transposta. Neste caso, se quiser obter somente a transposta deve utilizar o comando .'B. Caso a matriz no seja complexa os comandos anteriores fazem exactamente o mesmo. Se pretender multiplicar a matriz B pela matriz C, deve fazer do seguinte modo:
D = B * C

Ter como resultado:


D = 30 70 110 70 174 278 110 278 446

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

Se antes fizer:
D = C * B D = 107 122 137 152 122 140 158 176 137 158 179 200 152 176 200 224

Ter como resultado:

Se pretender multiplicar os elementos correspondentes de duas matrizes pode utilizxar o seguinte comando:
E = [1 2;3 4] F = [2 3;4 5] G = E .* F

Ter como resultado:


E = 1 3 F = 2 4 G = 2 12 6 20 3 5 2 4

Pode tambm levantar uma matriz a um determinado expoente (multiplic-la por ela prpria um determinado nmero de vezes), se utilizar o seguinte comando (considere a matriz E do exemplo anterior):
E^3

Ter como resultado:


ans = 37 81 54 118

Se quiser que cada elemento da matriz seja elevado, isoladamente, a um determinado expoente, deve fazer do seguinte modo:
E.^3

Ter como resultado:


ans = 1 27 8 64

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

Para calcular a inversa da matriz E deve proceder do seguinte modo:


X = inv(E)

Ter como resultado:


X = -2.0000 1.5000 1.0000 -0.5000

Para calcular os valores prprios da matriz E:


eig(E)

Ter como resultado:


ans = -0.3723 5.3723

Para determinar os coeficientes do polinmio caracterstico da matriz E:


p = poly(E)

Ter como resultado:


p = 1.0000 -5.0000 -2.0000

No esquecer que os valores prprios da matriz E, sero iguais s razes do polinmio p.


roots(p)

Ter como resultado:


ans = 5.3723 -0.3723

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

Lista de alguns dos comandos mais utilizados no Matlab


Comando abs acker axis bode c2dm clf conv ctrb deconv det dimpulse dlqr dlsim dstep eig eps feedback figure for format function grid gtext Valor absoluto Clcula a matriz K de modo a colocar os plos de A-BK, ver tambm a funo place Estabelece a escala do grfico, ver tambm as funes plot e figure Desenha o diagrama de Bode, ver tambm as funes logspace, margin, nyquist1 Converte o sistema contnuo para um sistema discreto Limpar a figura - Clear figure (usar a funo clg no Matlab 3.5) Convoluo (utilizada na multiplicao de polinmios), ver tambm a a funo deconv Determina a matriz de controlabilidade, ver tambm a funo obsv Deconvoluo e diviso polinomial, ver tambm a funo conv Calcular o determinante da matriz Resposta a impulso de um sistema discreto linear, ver tambm a funo dstep Projecto de um regulador linear quadrtico para sistemas discretos, ver tambm, a funo lqr Simulao de sistemas lineares discretos, ver tambm a funo lsim Resposta a degrau de um sistema linear discreto, ver tambm a funo stairs Calcula os valores prprios de uma matriz Tolerncia numrica do Matlab Realiza a realimentao de dois sistemas Cria uma nova figura ou redefine a figura actual, ver tambm as funes subplot, axis Cclo For Formatao numrica (dgitos mais significativos, expoentes) Cria uma funo Desenha uma grelha no grfico actual Adiciona um pedao de texto ao grfico actual, ver tambm a funo text Descrio

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

help hold if imag impulse input inv jgrid legend length linspace lnyquist1 log loglog logspace lqr lsim margin norm nyquist1 obsv ones place plot

HELP! Assegura o grfico actual, ver tambm a funo figure Execuo condicional Retorna a parte imaginria de um nmero complexo, ver tambm a funo real Resposta a impulso de um sistema linear contnuo, ver tambm as funes step, lsim, dlsim Permite que o utilizador introduza uma entrada Calcula o inverso de uma matriz Gera as linhas do factor de amortecimento (zeta) e do tempo de estabelecimento (sigma), ver tambm as funes sgrid, sigrid, zgrid Legenda do grfico Dimenso de um vector, ver tambm a funo size Retorna um vector linearmente espaado Produz um diagrama de Nyquist numa escala logartmica, ver tambm a funo nyquist1 Logaritmo natural, ver tambm log10: logaritmo comum Grfico com escala logartmica, ver tambm semilogx/semilogy Retorna um vector espaado a uma escala logartmica Regulador linear quadrtico para um sistema linear contnuo, ver tambm a funo dlqr Simula um sistema linear contnuo, ver tambm as funes step, impulse, dlsim. Retorna as margens de ganho e de fase e frquncias de canto, ver tambm as funes bode Calcula a norma de um vector Desenha o diagrama de Nyquist, ver tambm lnyquist1. Calcula a matriz de observabilidade, ver tambm ctrb Retorna um vector ou uma matriz de uns, ver tambm a funo zeros Calcula a matriz K de modo a colocar os plos de A-BK, ver tambm a funo acker Desenha um grfico, ver tambm figure, axis, subplot.

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

poly polyadd polyval print pzmap rank real rlocfind rlocus roots rscale set series sgrid sigrid size sqrt ss ss2tf ss2zp stairs step subplot

Retorna o polinmio caracterstico Adiciona dois polinmios Calcula o valor do polinmio, dando um determinado valor varivel deste Imprime o grfico actual (para uma impressora ou para um ficheiro ps) Mapeamento de plos e zeros de um sistema linear Calcula a caracterstica de uma matriz Retorna a parte real de um nmero complexo, ver tambm a funo imag Determina os valores de k e dos plos num determinado ponto Desenha o lugar das razes Determina as razes de um polinmio Determina o factor de escala de um sistema realimentado Set(gca,'Xtick',xticks,'Ytick',yticks) para controlar o nmero e espaamento de marcas dos eixos Conexo em srie de sistemas independentes lineares e temporais Gera as linhas do factor de amortecimento (onde ele constante) (zeta) e da frequncia natural no amortecida (Wn), ver tambm jgrid, sigrid, zgrid Gera as linhas onde o tempo de estabelecimento constante (sigma), ver tambm jgrid, sgrid, zgrid Retorna a dimenso de uma matriz ou de um vector, ver tambm length Calcula a raz quadrada Cria um modelo em espao de estados ou converte um sistema linear invariante no tempo para espao de estados, ver tambm a funo tf Converte um modelo em espao de estados para funo de transferncia, ver tambm a funo tf2ss Converte um modelo em espao de estados para uma representao em plos e zeros, ver tambm a funo zp2ss Define um grfico em escada de uma resposta discreta, ver tambm a funo dstep Desenha a resposta a degrau, ver tambm impulse, lsim, dlsim. Divide a janela dos grficos, possibilitando a apresentao de vrios grficos, ver tambm plot, figure

INSTITUTO POLITCNICO DE TOMAR


Engenharia Electrotcnica

text tf tf2ss tf2zp title wbw xlabel/ylabel zeros zgrid zp2ss zp2tf

Adiciona um pedao de texto no grfico actual, ver tambm title, xlabel, ylabel, gtext Cria uma funo de transferncia ou converte para funo de transferncia, ver tambm ss Converte uma funo de transferncia para uma representao em espao de estados, ver tambm a funo ss2tf Converte um funo de transferncia para uma representao de plos e zeros, ver tambm a funo zp2tf Adiciona um ttulo ao grfico actual Retorna a largura de banda, sendo necessrio introduzir o factor de amortecimento e tempos de subida e de amortecimento Adiciona uma legenda aos eixos dos xx e dos yy respectivamente, ver tambm title, text, gtext Retorna uma matriz ou um vector de zeros Gera as linhas onde o factor de amortecimento constante (zeta) e frequncia natural no amortecida (Wn), ver tambm as funes sgrid, jgrid, sigrid Converte uma representao em plos e zeros para um modelo em espao de estados, ver tambm a funo ss2zp Converte uma representao em plos e zeros para uma funo de transferncia, ver tambm tf2zp

You might also like