Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduo ao MATLAB
ndice
1. Introduo ..........................................................................................................................................................1 2. Caractersticas Bsicas.......................................................................................................................................1 2.1 Operaes Simples.......................................................................................................................................1 2.2 Formatao de nmeros ...............................................................................................................................1 2.3 Uso de Variveis..........................................................................................................................................3 2.4 Sobre variveis.............................................................................................................................................4 2.5 Outras funes bsicas .................................................................................................................................4 3. Funes Cientficas ............................................................................................................................................5 3.1 Funes Matemticas Gerais........................................................................................................................5 3.2 Nmeros Complexos....................................................................................................................................6 4. Ajuda On-line ..................................................................................................................................................10 4.1 O comando HELP ......................................................................................................................................10 4.2 O comando LOOKFOR .............................................................................................................................11 5. Operaes de arranjos......................................................................................................................................12 5.1 Arranjos simples ........................................................................................................................................12 5.2 Endereamento de arranjos ........................................................................................................................12 5.3 Construo de arranjos...............................................................................................................................13 5.4 Operaes Arranjo-Escalares.....................................................................................................................14 5.5 Operaes Arranjo-Arranjo .......................................................................................................................14 5.6 Orientao dos Arranjos ............................................................................................................................15 5.7 Outras funes ...........................................................................................................................................16 6. Representaes Grficas Simples: ...................................................................................................................18 6.1 Comandos Plot e Plot3...............................................................................................................................18 6.2 Outros comandos .......................................................................................................................................22 7. Arquivos de comandos.....................................................................................................................................24 8. Texto................................................................................................................................................................25 9. Operaes Relacionais e Lgicas.....................................................................................................................26 9.1 Operadores Relacionais .............................................................................................................................26 9.2 Operadores Lgicos ...................................................................................................................................27 10. lgebra Linear e Matrizes..............................................................................................................................29 10.1 Funes Bsicas.......................................................................................................................................29 10.2 Outras Funes.........................................................................................................................................30 11. Manipulao de Matrizes...............................................................................................................................30 11.1 Outras Funes.........................................................................................................................................31 12. Estruturas de comandos .................................................................................................................................32 13. Funes para arquivos M-File........................................................................................................................34 13.1 Funes Bsicas.......................................................................................................................................34 14. Anlise de Dados ...........................................................................................................................................36 14.1 Funes Bsicas.......................................................................................................................................36 14.2 Outras funes .........................................................................................................................................38 15. Polinmios .....................................................................................................................................................39 15.1 Razes.......................................................................................................................................................39 15.2 Multiplicao ...........................................................................................................................................39 15.3 Adio......................................................................................................................................................40 15.4 Diviso .....................................................................................................................................................40 15.5 Derivada...................................................................................................................................................40 15.6 Grfico da funo.....................................................................................................................................40 16. Ajustamento de curva e Interpolao ...............................................................Erro! Indicador no definido. 16.1 Ajustamento de curvas .............................................................................................................................41 -1-
16.2 Interpolao Unidimensional ...................................................................................................................41 17. Anlise Numrica...........................................................................................................................................44 17.1 Plotagem ..................................................................................................................................................44 17.2 Minimizao e Maximizao ...................................................................................................................44 17.3 Determinao do Zero..............................................................................................................................45 17.4 Integrao ................................................................................................................................................45 17.5 Diferenciao ...........................................................................................................................................46 17.6 Equaes Diferenciais..............................................................................................................................47 18. Referncia a Sinais e Sistemas.......................................................................................................................49 18.1 Funo BODE..........................................................................................................................................49 18.2 Funo NYQUIST ...................................................................................................................................50 18.3 Funo RLOCUS .....................................................................................................................................52 19. Tabelas de Referncias ..................................................................................................................................54 19.1 Comandos Gerais .....................................................................................................................................54 19.2 Operadores e Caracteres Especiais ..........................................................................................................55 19.3 Construo de Linguagem e Depurao...................................................................................................55 19.4 Manipulao de Matrizes.........................................................................................................................56 19.4.1 Matriz Elementar ..............................................................................................................................56 19.4.2 Matrizes Especiais ............................................................................................................................57 19.5 Funes Matemticas...............................................................................................................................57 19.5.1 Funes de Matemtica Elementar ...................................................................................................57 19.5.2 Funes Especializadas da Matemtica ............................................................................................59 19.6 Funes Matriciais - lgebra Numrica Linear .......................................................................................59 19.7 Anlise de Dados e as Funes da Transformada de Fourier...................................................................60 19.8 Funes Polinomiais e Interpolares .........................................................................................................60 19.9 Funo Funo ......................................................................................................................................61 19.10 Funes Matriciais Esparsadas ..............................................................................................................61 19.11 Grficos Bidimensionais ........................................................................................................................62 19.12 Grficos Tridimensionais.......................................................................................................................62 19.13 Funes Grficas....................................................................................................................................63 19.14 Controle de Cores e Funes de Luminosidade .....................................................................................64 19.15 Funes Sonoras ....................................................................................................................................64 19.16 Funes de Texto ...................................................................................................................................65 19.17 Funes de Arquivos I/O de Baixo Nvel ..............................................................................................65 20. Tabela de Referncia a Matemtica Simblica. .............................................................................................66 21. Referncia a Sistemas e Sinais.......................................................................................................................67
-2-
Junho/2002
1. Introduo
Nesta terceira edio do Curso de Introduo ao MATLAB do Programa Especial de Treinamento do curso de Engenharia Eltrica, foram feitas algumas correes, incluses e mudanas referentes verso 5 do programa. O curso ser, portanto, baseado nesta apostila, mas a exemplo de sua primeira edio, sero acrescentados alguns itens ou comentrios que venham a se tornar oportunos durante as aulas expositivas, de forma que as aulas no estaro presas ao contedo deste manual de referncia. Como exemplo disto, ser dada uma nfase na parte de programao um pouco maior que aquela dada nesta apostila, alm de exemplos de situaes que possam vir a surgir no decorrer do curso. No final desta apostila vocs ainda encontraro uma biblioteca de funes que o MatLab possui.
2. Caractersticas Bsicas
O MATLAB , de maneira geral, um interpretador de comandos que trabalha essencialmente com um nico tipo de objeto: uma matriz retangular numrica podendo ter elementos complexos. Em algumas situaes atribuda uma denominao especial s matrizes |x|, chamadas de escalares, e a matrizes com somente uma linha ou coluna, que so chamadas de vetores. Desta caracterstica veio o seu nome: Laboratrio de Matrizes (MATrix LABoratory).
a+b ab ab ab ab
Smbolo + * / ou \ ^
Nas expresses podem-se usar parnteses, a fim de digitar a expresso certa. Exemplo: Expresso MATLAB 3^2-5-6/3*2 3^2-5-6/(3*2) 4*3^2+1 (4*3)^2+1 Resultado 0 3 37 145
O resultado de qualquer expresso de atribuio do MATLAB mostrado na tela, tanto se for atribudo a uma varivel especfica, ou varivel ans, se nenhuma varivel fornecida. O formato numrico a ser exibido pode ser controlado usando-se o comando format. Este comando afeta somente a maneira pela qual as matrizes so mostradas, no como so calculadas ou salvas (o MATLAB faz toda a computao com preciso dupla).
-1-
Curso de Introduo ao MATLAB - Guia Prtico Por exemplo: x = [-1 0 1] Sempre resulta em Digite x [enter] x = -1 0 1
Junho/2002
Se todos os elementos de uma matriz so inteiros, a matriz mostrada sem qualquer ponto decimal.
Se pelo menos um dos elementos no for inteiro, h vrias maneiras da sada ser formatada. O formato padro, chamado formato short, mostra cinco dgitos decimais significantes. Os outros formatos mostram mais dgitos significantes ou usam a notao cientfica. Como exemplo, vamos supor x = [4/3 1.2345e-6] Os formatos, e a sada resultante para este vetor, so: format short 1.3333 0.0000 format short e 1.3333E+000 1.2345E-006 format long 1.33333333333333 format long e 1.333333333333333e+000 format hex 3ff5555555555555 format + ++ format rat 4/3 1/810045 3eb4b6231abfd271 1.234500000000000e-006 0.00000123450000
Nos formatos short e long, se o maior elemento de uma matriz for maior que 1000 ou menor que 0.001, um fator de escala comum aplicado a toda a matriz quando esta mostrada. Por exemplo: x = 1.e20*x multiplica x por 1020 e mostra o resultado x = 1.0e+020 * 1.3333 0.0000
O formato + uma maneira compacta de se mostrar matrizes muito grandes. Os smbolos +, - e espao so mostrados para elementos positivos, negativos e nulos, respectivamente. Um ltimo comando, format compact, exclui muitas das quebras de linha que aparecem entre as matrizes, permitindo que mais informao seja impressa na tela. Os formatos mais utilizados esto colocados na tabela a seguir. -2-
Curso de Introduo ao MATLAB - Guia Prtico Comando do MATLAB format long format short e format long e Format hex format bank format + Format rat format short Nmero 35.83333333333334 3.5833e+01 3.583333333333334e+01 4041eaaaaaaaaaab 35.83 + 215/6 35.8333
Junho/2002 Componentes 16 dgitos 5 dgitos + expoente 16 dgitos + expoente hexadecimal 2 dgitos decimais positivo, negativo ou zero aproximao em frao padro
-3-
Junho/2002
DICA: As teclas de funo, , , e servem para modificar algum erro de digitao ou para repetir alguns comandos j escritos.
i = j = 1
um nmero pequeno real positivo um nmero grande real positivo
Voc poder incluir comentrios s variveis, usando para isso o sinal (%). Ex.: macas=4 macas = 4 % Nmero de maas
O MATLAB simplesmente ignora a parte escrita depois do sinal (%). Mltiplos comandos podero ser feitos numa linha s, separados por vrgulas (,) ou ponto-e-vrgula (;). Ex.: macas=4 , bananas=6 ; peras=8 macas = 4 peras = 8 O (;) no mostra os resultados da operao, enquanto que (,) os mostra. -Para interromper a execuo de um comando, pressione simultaneamente Ctrl+C. -Para sair do MATLAB digite quit. -4-
Junho/2002
-Quando a expresso for muito longa, escreva trs pontos (...), d um espao, pressione Enter e continue na prxima linha.
3. Funes Cientficas
Como nas calculadoras cientficas, o MATLAB oferece funes importantes para a Matemtica, Engenharia e outras cincias. O MATLAB tambm trabalha com nmeros complexos.
-5-
Junho/2002
Veja no Captulo 19, comandos e funes do MATLAB. Na tabela abaixo, esto algumas das mais elementares funes matemticas: Funo do MATLAB abs(x) Aos(x) acosh(x) angle(x) asin(x) Asinh(x) atan(x) atan2(x,y) Atanh(x) ceil(x) conj(x) cos(x) Cosh(x) exp(x) fix(x) Floor(x) Imag(x) log(x) log10(x) real(x) rem(x,y) round(x) sign(x) sin(x) sinh(x) sqrt(x) tan(x) tanh(x) Funo Matemtica valor absoluto ou magnitude de um nmero complexo funo inversa do coseno funo inversa do coseno hiperblico argumento de um nmero complexo funo inversa do seno funo inversa do seno hiperblico funo inversa da tangente funo inversa da tangente do quarto quadrante funo inversa da tangente hiperblica arredondamento para o mais prximo de + conjugado do nmero complexo funo coseno funo coseno hiperblico exponencial: e arredondamento para o mais prximo de 0 arredondamento para o mais prximo de parte imaginria de um nmero complexo logaritmo natural logaritmo decimal parte real de um nmero complexo resto da diviso x/y arredondamento para o mais prximo inteiro retorna o sinal de um nmero. Ex.: sign(1.2)=1, sign(-23.4)=-1e sign(0)=0 funo seno funo seno hiperblico raiz quadrada funo tangente funo tangente hiperblica
x
ilustrar
os
nmeros
complexos,
consideremos
equao
de
segundo
grau
Se a = 1, b = 5 e c = 6, a soluo usando MATLAB ser: a=1 ; b=5 ; c=6 ; x1=(-b+sqrt(b^2-4*a*c))/(2*a) x1 = -2 x2=(-b-sqrt(b^2-4*a*c))/(2*a) x2 = -3 a*x1^2+b*x1+c % substituindo x1 em x para verificar o resultado ans = 0
-6-
Curso de Introduo ao MATLAB - Guia Prtico Junho/2002 a*x2^2+b*x2+c % substituindo x2 em x para verificar o resultado ans = 0 As ltimas duas linhas de comando serviram para confirmar o resultado. Agora, imaginemos com a = 1, b =4, c = 13, a soluo ser:
x1 = 2 + 3 1 x2 = 2 3 1
O 1 no um nmero real, portanto o resultado da soluo ser um nmero complexo, com a parte real igual a 2 e a imaginria igual a 3 ou -3. A soluo no MATLAB ser: a=1 ; b=4 ; c=13 ; x1=(-b+sqrt(b^2-4*a*c))/(2*a) x1 = -2.0000 + 3.0000i x2=(-b-sqrt(b^2-4*a*c))/(2*a) x2 = -2.0000 - 3.0000i a*x1^2+b*x1+c % substituindo x1 em x para verificar o resultado ans = 0 a*x2^2+b*x2+c % substituindo x2 em x para verificar o resultado ans = 0 x1 e x2 so nmeros complexos da forma a+bi, sendo a a parte real, b a parte imaginria e
i = 1 . Na engenharia, o j mais usado, sendo esse aceito pelo MATLAB. A seguir, algumas operaes com nmeros complexos:
c1=1-2i c1 = 1.0000 - 2.0000i c2=3*(2-sqrt(-1)*3) c2 = 6.0000 - 9.0000i c3=sqrt(-2) c3 = 0 + 1.4142i c4=6+sin(.5)*i c4 = 6.0000 + 0.4794i c5=6+sin(.5)*j c5 = 6.0000 + 0.4794i
-7-
Curso de Introduo ao MATLAB - Guia Prtico Nos ltimos 2 exemplos, o MATLAB considerou que c6=(c1+c2)/c3 c6 = -7.7782 - 4.49497i
Junho/2002
i = j = 1 . Outras operaes:
= 1!
checagem=real(checagem) % mostra a parte real. checagem = -1 H pelo menos duas maneiras convenientes de se entrar matrizes complexas no MATLAB, que esto ilustradas pelas expresses: A = [1 2; 3 4] + i*[5 6; 7 8] e A = [1+5i 2+6i; 3+7i 4+8i] e que iro produzir o mesmo resultado. O nmero i (ou j) pode ser entrado das duas formas que vimos, ou seja, com o smbolo de multiplicao ou sem. No entanto, algumas regras devem ser observadas. Quando no for usado o smbolo *: o nmero deve ser colocado antes da parte complexa, sem espaos (da mesma forma para nmeros reais, um espao colocado antes da potncia como em 1.23 e-4 resulta em um erro). No podemos, ainda, fazer o seguinte: A = [1 2; 3 4] + [5 6; 7 8]i Cuidado com as variveis! Uma funo interna pode ser usada como nome de varivel: caso em que a funo interna original se torna indisponvel para o workspace corrente (ou funo local em um arquivo .m), at que a varivel seja limpa. Se voc usar i e j como variveis, voc no poder multiplicar a parte imaginria pela funo i ou j, mas ainda poder criar nmeros complexos utilizando a forma sem *. No entanto, se for necessria a utilizao da forma com *, podemos facilmente criar uma nova unidade complexa e us-la desta forma: ii = sqrt(-1) z = 3 + 4*ii Agora, nesses exemplos finais, consideremos a forma polar e retangular:
M = M e j = a + bi
onde
( )
O MATLAB faz a converso da forma polar em retangular, ou vice-versa usando as funes REAL, IMAG, ABS e ANGLE:
-8-
Curso de Introduo ao MATLAB - Guia Prtico c1 c1 = 1.000 - 2.0000i mag_c1=abs(c1) mag_c1 = 2.2361 angle_c1=angle(c1) angle_c1 = -1.1071 deg_c1=angle_c1*180/pi deg_c1 = -63.4349 real_c1=real(c1) real_c1 = 1 imag_c1=imag(c1) imag_c1 = -2
Junho/2002
Dica: Note que ABS fornece o valor absoluto num nmero real e a magnitude de um nmero complexo; e ANGLE fornece o ngulo em radianos!
-9-
Junho/2002
4. Ajuda On-line
Como o MATLAB baseado em comandos, h a possibilidade do esquecimento de algum comando ou de sua funo. Existem algumas possibilidades de consultar a ajuda: o comando help do MATLAB e o comando lookfor. Na verso 5.0 possvel abrir uma janela com os tpicos de help do MATLAB digitando helpwin.
Ainda nesta verso existe um aplicativo que possibilita ao usurio uma maneira interativa de lidar com o programa que o MATLAB Demo Window:
- 10 -
Junho/2002
Escrevendo o comando help assim, sozinho, aparece uma lista de tpicos de ajuda. Por exemplo: help HELP topics: matlab:general matlab:ops matlab:lang matlab:elmat matlab:speemat matlab:elfun matlab:specfun matlab:matfun matlab:datafun matlab:polyfun matlab:funfun matlab:sparfun matlab:plotxy matlab:plotxyz matlab:graphics matlab:color matlab:strfun matlab:iofun General purpose commands. Operators and special characters. Language constructs and debugging. Elementary matrices and matrix manipulation. Specialized matrices. Elementary math functions. Specialized math functions. Matrix functions - numerical linear algebra. Data analysis and Fourier transform functions. Polynomial and interpolation functions. Function function - nonlinear numerical methods. Sparce matrix functions. Two dimensional graphics. Three dimensional graphics. General purpose graphics functions. Color control and lighting model functions. Character string functions. Low-level file I/O functions.
- 11 -
Junho/2002
5. Operaes de arranjos
Muitas operaes matemticas se baseiam em arranjos. Nos prximos tpicos, falaremos sobre essa ferramenta da matemtica no MATLAB.
0.8090 0.0000
0.9511
0.9511
Importante!!! Quando o arranjo contiver um nmero complexo, deve escrev-lo sem espaos, pois o MATLAB, como qualquer outra linguagem de computao, interpretar como elementos deferentes dentro do arranjo. Ex: z=[1 -2i 3 4 5+6i] ans = 1 -2i 3 4
5+6i
- 12 -
Junho/2002
Veja que neste ltimo, o stimo elemento no apareceu, pois no estava no intervalo dado a ele. y([8 2 9 1]) % O oitavo, segundo, nono e primeiro elementos ans = 0.8090 0.3090 0.5878 0
0.9425 3.1416
1.2566
1.5708
1.8849
0.9425 3.1416
1.2566
1.5708
1.8849
No primeiro caso, a notao (0:0.1:1) criou um arranjo que comea em 0 e vai at 1 em intervalos de 0,1. No segundo caso, a funo linspace foi usada para criar X. Sua sintaxe : linspace(primeiro_elemento,ultimo_elemento,numero_de_elementos) Existe tambm a funo logspace, semelhante a e esta ltima, porm com expoentes. Ex.: logspace(0,2,11) ans = Columns 1 through 7 1.0000 1.5849 2.5119 3.9811 Columns 8 through 11 25.1189 39.8107 53.0957 100.0000
6.3096
10.0000
15.8489
Ele criou um arranjo que comea em 10 at 10 , contendo 11 valores. Sua sintaxe : logspace(primeiro_expoente,ultimo_expoente,numero_de_expoentes) H outras formas de criar um arranjo. Nos prximos exemplos, citaremos alguns deles: a=1:5,b=1:2:9 a = 1 2 3 4 b = 1 3 5 7 c=[b a] c = 1 3
5 9
d=[a(1:2:5) 1 0 1] d = 1 3 5 1 0
- 13 -
Junho/2002
2 3
3 5
4 7
5 9
11
14
Para a multiplicao e diviso de arranjos, requer a incluso de um ponto. Ex.: a.*b ans = 1 6 15 28 45 a./b ans = 1.0000 0.6667 0.6000 b.\a ans = 1.0000
0.5714
0.5556
0.6667
0.6000
0.5714
0.5556
a*b ??? Error using ==> * Inner matrix dimensions must agree. A diviso destes dois arranjos, feitos sem o ponto, ser considerada uma operao de matrizes. Ex:
Curso de Introduo ao MATLAB - Guia Prtico a\b ans = 0 0 0 0 0.2000 0 0 0 0 0.6000 0 0 0 0 1.0000 0 0 0 0 1.4000 0 0 0 0 1.8000
Junho/2002
Pode-se fazer tambm potncias entre arranjos, arranjos e escalares, mas deve-se usar o ponto. Ser feita elemento-a-elemento. Ex.: a,b a = 1 b = 1
2 3
3 5
4 7
5 9
16
25
16
32
125
2401
59049
1.0000
7.0000
81.0000
a=1:5 a = 1 2 b=a'
- 15 -
Junho/2002
Agora, para os nmeros complexos, o operador transpose faz a transposio com o seu conjugado. Ex.: d=a+i*a d = Columns 1 through 4 1.0000+1.0000i 2.0000+2.0000i Column 5 5.0000+5.0000i e=d' e = 1.0000 2.0000 3.0000 4.0000 5.0000
3.0000+3.0000i
4.0000+4.0000i
Para resolver esta situao, utilizaremos o ponto (.'). Ex: f=d.' f = 1.0000 2.0000 3.0000 4.0000 5.0000
+ + + + +
a = [a 1
a2
a n ] , b = [b 1
b2
b n ] e c = {escalar}
- 16 -
Curso de Introduo ao MATLAB - Guia Prtico Adio com escalar Multiplicao com escalar Adio de arranjos Multiplicao de arranjos Diviso de arranjos
Junho/2002
a + c = [a 1 + c a 2 + c a * c = [a 1 * c a 2 * c
Operaes de Arranjos
a n + c] a n * c]
a + b = [a 1 + b 1 a.*b = [a 1 * b 1 a./ b = [a 1 / b 1
a.\ b = [a 1 \ b 1
a 2 + b2 a 2 * b2 a 2 / b2
a2 \ b2
an + bn ] a n * bn ]
an \ bn ]
an / bn ]
a. ^ c = [a 1 ^ c a 2 ^ c
Potncia em arranjos
a n ^ c]
c. ^ a = [c ^ a 1 a. ^ b = [a 1 ^ b 1
c ^ a2 a 2 ^ b2
c ^an ] an ^ bn ]
- 17 -
Junho/2002
( )
2 :
x=linspace(0,2*pi,30); O seno dos pontos de x: y=sin(x); O comando plot desenha a funo: plot(x,y)
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 5 6 7
Agora desenharemos a funo seno e a funo coseno no mesmo grfico: z=cos(x); plot(x,y,x,z)
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 5 6 7
- 18 -
Junho/2002
Vamos agora desenhar a funo seno, e indicar os pontos que definiram a curva usando o smbolo +. plot(x,y,x,y,'+')
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 5 6 7
-0.5
0.5
No prximo exemplo ilustraremos a identidade funo usando linhas pontilhadas: plot(x,y,x,2*y.*z,'--') grid xlabel('Varivel Independente X') ylabel('Varivel Dependente') title('2sin(x)cos(x)=sin(2x)') % % % %
Linhas de grade do grfico Nome do eixo dos X Nome do eixo dos y Ttulo do grfico
- 19 -
Junho/2002
A seguir, uma tabela com as cores e formas da funo plot: Smbolo y m c g b w k Cores Amarelo margenta cyan verde azul branco preto Smbolo . o x + * : -. -Linha ponto crculo marca-x cruz estrela linha de pontos trao e ponto trao e trao
Com a funo text voc pode inserir no grfico algum texto. Ex.: y=sin(x); z=cos(x); plot(x,y,x,z) grid - 20 -
Curso de Introduo ao MATLAB - Guia Prtico xlabel('Varivel Independente X') ylabel('Varivel Dependente') title('Curvas seno e coseno') text(2.5,0.7,'sin(x)')
Junho/2002
J o comando gtext faz o seu cursor virar em forma de cruz, para que voc coloque o argumento da funo no grfico. Ex: gtext('cos(x)')
V a r i v e l D e p e n d e n t e Curvas seno e coseno 1 0.8 sin(x) 0.6 0.4 cos(x) 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 5 Varivel Independente X 6 7
O comando axis manipula o grfico, como o eixo de coordenadas e a escala. A tabela abaixo h uma descrio do comando: Comando Axis([xmin xmax ymin ymax]) axis auto axis ('auto') Axis(axis) Descrio Indica o mximo e o mnimo valores usados para os eixos. Se escreve na forma de vetor. Retorna a escala normal, com xmin=min(x), xmax=max(x), etc. Faz com que a escala seja feita nos correntes limites, s que a funo hold ser ligada, e os subsequentes plots usaro o limite dessa primeira. Usa as coordenadas cartesianas, fazendo com que o eixo horizontal sejam da esquerda para a direita, e o eixo vertical seja de baixo para cima. Faz com que o corrente plot seja feito de modo que a figura seja um quadrado. Faz com que as escalas sejam iguais para os eixos. Desliga quando axis for square e/ou equal. Tira os eixos da figura. Tambm os labels, mas deixa o ttulo e os feitos pelos comandos text e gtext Retorna os eixos, juntamente com os labels e o grid.
axis xy axis ('xy') axis axis axis axis axis axis axis axis axis axis square ('square') equal ('equal') normal ('normal') off ('off') on ('on')
Note: Se voc quiser usar, no comando axis, mais de um argumento, usa-se os argumentos separados por vrgulas, dentro dos parnteses. Ex: axis('square','equal')
- 21 -
Junho/2002
Usa-se o comando bar e o comando stair para utilizar o grfico atravs de colunas. Ex.: x=-2.9:0.2:2.9; y=exp(-x.*x); bar(x,y) title('Curva feita pela funo BAR')
Curva feita pela funo BAR 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -5 0 5
- 22 -
Junho/2002
- 23 -
Junho/2002
7. Arquivos de comandos
Voc pode colocar uma srie de comandos a serem executados no MATLAB criando um arquivo. Este conter a extenso (m). O termo M-file ser usado para arquivos de comandos. Para criar um arquivo, escolha New no menu File e selecione M-file. Abrir uma janela do editor de texto. Depois de salv-lo em seu disco, com o nome de teste.m, por exemplo, o MATLAB s executar os comandos de seu arquivo se voc cham-lo na linha de comando. Ex.: teste O MATLAB procurar no diretrio corrente, emitindo um sinal se no ach-lo. A seguir, alguns comandos que voc necessitar para a manipulao desses arquivos: Comando What Dir Ls type test delete test cd path chdir path Cd Chdir Pwd Descrio Retorna a lista de todos os M-files no diretrio corrente. Lista todos os arquivos do corrente diretrio. Semelhante ao dir Mostra o contedo do arquivo test.m Apaga o arquivo test.m Entra no diretrio definido em path Semelhante ao cd path Mostra o nome do diretrio corrente Semelhante a cd Semelhante a cd
- 24 -
Junho/2002
8. Texto
O MATLAB pode trabalhar com texto. Para determinar uma varivel que contenha texto, deve digit-lo entre apstrofes ('). Ex: t='Voc conhece o MATLAB?' Pode tambm pegar trechos das variveis: u=t(6:12) u = conhece Pegar de ordem inversa: u=t(12:-1:6) u = ecehnoc Escrever em diferentes linhas: v=[A um bochincho - certa feita, Eu fui chegando - de curioso.'] v = A um bochincho - certa feita, Eu fui chegando - de curioso. Voc tambm tem acesso aos valores ASCII das letras, atravs da funo abs: s='ABCDEF' s = ABCDEF m=abs(s) m = 65 m=s+0 m = 65
66
67
68
69
70
71
66
67
68
69
70
71
Para voltar aos caracteres normais, usa-se a funo setstr: setstr(m) ans = ABCDEF Vamos somar cinco e depois converter para caracteres: n=m+5 n = 70 71 72 73 74 75 76
setstr(n) ans = FGHIJKL Finalmente, vamos converter em minsculas os caracteres adicionando a diferena de ambos: n=s+'a'-'A' n = 97 98 99 100 101 102 103 setstr(n) ans = abcdef
- 25 -
Junho/2002
Para demonstrar as operaes relacionais, vamos utilizar 2 arranjos. Note que elemento-aelemento. Ex: A=1:9,B=9-A A = 1 2 B = 8 7
3 6
4 5
5 4
6 3
7 2
8 1
9 0
tf=A>4 %Em quais posies os valores de A so maiores que 4? tf = 0 0 0 0 1 1 1 1 1 tf=A==B %Em quais as posies os valores de A so iguais as de B? tf = 0 0 0 0 0 0 0 0 0 tf=B-(A>2) % Subtrair A de B apenas os valores maiores que 2. tf = 8 7 5 4 3 2 1 0 -1 B=B+(B==0)*eps B = Columns 1 through 7 8.0000 7.0000 6.0000 Columns 8 through 9 1.0000 0.0000
5.0000
4.0000
3.0000
2.0000
Para B=0, soma-se o valor de eps, aproximadamente 2,2e-16 (ou para funes onde tem um ponto de descontinuidade da curva. Ex.: x=(-3:3)/3 x = -1.0000 -0.6667
-0.3333
0.3333
0.6667
1.0000
NaN
0.9816
0.9276
0.8475 - 26 -
Junho/2002
A funo sin(x)/x indefinida para o ponto x=0, pois sin(0)/0=0/0. O MATLAB retornar NaN (no nmero). Agora usando o eps: x=x+(x==0)*eps; sin(x)./x ans = 0.8475 0.9276
0.9816
1.0000
0.9816
0.9276
0.8475
No captulo passado, voc viu um exemplo de operadores relacionais. A=1:9,B=9-A; tf=A>4 %maiores que 4 tf = 0 0 0 0
tf=(A>2)$(A<6) % Maiores que 2 e menores que 6. tf = 0 0 1 1 1 0 0 0 Um exemplo para criar uma funo descontnua:
x=linspace(0,10,100); % criar os pontos. y=sin(x); % aplicar a funo seno. z=(y>=0).*y; % Os valores negativos de y iguais a zero. z=z+0.5*(y<0); % Os valores negativos de y iguais a 1/2. z=(x<=8).*z; % Valores de x acima de 8 iguais a zero. plot(x,z) xlabel('X'),ylabel('Z=f(x)') title('O sinal Descontinuo')
- 27 -
Junho/2002
O MATLAB tem outras funes relacionais e lgicas, algumas mencionadas no quadro abaixo: Funo xor(x,y) any(x) all(x) isnan(x) isinf(x) finite(x) Descrio Operador exclusivo OR. Retorna 1 se ou x ou y forem diferentes de zero. Retorna zero se x e y forem iguais a zero ou diferentes de zero. Retorna um se qualquer elemento de um vetor x for diferente de zero. Retorna um se algum dos elementos da diagonal da matriz x for diferente de zero. Retorna um se todos os elementos de um vetor x forem no-nulos. Retorna um se todos os elementos da diagonal da matriz x forem diferentes de zero. Retorna um se x contiver NaNs (No-nmeros). Retorna um se x contiver Infs (Infinito). Retorna um se x contiver valores finitos.
A seguir, o quadro de preferncias do MATLAB, com os elementos na ordem de prioridade, ou seja, cresce de importncia de cima para baixo: Tabela de preferncia de Operadores .^ ' .' / \ .* ./ .\ ~ +(unary) -(unary) > < >= <= == ~= | &
^ * + :
- 28 -
Junho/2002
x = A1 b , ou seja:
- 29 -
Curso de Introduo ao MATLAB - Guia Prtico A funo inv faz a matriz inversa x=A\B x = 0.2500 0.2200 0.9900
1
Junho/2002
Quando as equaes so homogneas, isto , iguais a zero, usa-se a notao x=pinv(A)*b. A soluo baseia-se no pseudo-inverso, que calcula as possibilidades de outras solues alm da nula.
Quando um elemento est fora das dimenses da matriz, cria-se colunas iguais a zero. Ex.: A(2,6)=1 A = 1 2 4 5 7 8
3 6 9
0 0 0
0 0 0
0 1 0
Fazer outra matriz a partir de uma: A=[1 2 3;4 5 6;7 8 9]; B=A(3:-1:1,1:3) % ou B=A(3:-1:1,:) B = 7 8 9 4 5 6 1 2 3
- 30 -
Curso de Introduo ao MATLAB - Guia Prtico Junho/2002 C=[A B(:,[1 3])] % A igual a A + a primeira e terceira coluna de B. C = 1 2 3 7 9 4 5 6 4 6 7 8 9 1 3 B=A(1:2,2:3) B = 2 3 5 6 B=A(:) B = 1 4 7 2 5 8 3 6 9 A(:,2)=[] % remover segunda coluna. A = 1 3 4 6 7 9
- 31 -
Junho/2002
cost cost = 200 if expressao a=10;b=a-1; A estrutura Ifcomandos se expressao verdad. else-end dividida if a>b else a=b; em duas partes. comandos se expressao falso else A primeira parte end a=b+1; ser executada se end a expresso for verdadeira ou a,b no nua. A a = 9 segunda parte se a expresso for b = falsa ou nula. 9 if expressao A estrutura geral a=10;b=a-1;c=a+1; comandos se expressao verdad. if a>b do If-else-end. elseif expressao1 a=b; Executa os comandos se expressao1 verdad. elseif a<c comandos elseif expressao2 a=b+1; associados as comandos se expressao2 verdad. else expresses, se . c=a; elas so . end verdadeiras. . - 32 -
A simples estrutura if-end executa os comandos enquanto a expresso for verdadeira ou no nula.
Curso de Introduo ao MATLAB - Guia Prtico Estruturas de comandos else comandos se expressao falso end Descrio
Junho/2002 Exemplos a,b,c a = 10 b = 9 c = 11 EPS=1; for num=1:1000 EPS=EPS/2; if (1+EPS)<=1 EPS=EPS*2 break end end EPS = 2.2204e-16 num num = 53
break
- 33 -
Junho/2002
[m,n] = size(x); y = x(:,n:-1:1); A primeira parte do seu arquivo vai servir para o help. Na segunda parte, como a funo ser executada. Existe uma varivel, chamada nargin, que serve para indicar os parmetros que no so feitos pelos usurios. Confuso? A funo linspace um bom exemplo para o uso do nargin: function y = linspace(d1, d2, n) %LINSPACE Linearly spaced vector. % LINSPACE(x1, x2) generates a row vector of 100 % linearly equally spaced points between x1 and % x2. LINSPACE(x1, x2, N) generates N points - 34 -
Curso de Introduo ao MATLAB - Guia Prtico % between x1 and x2. % % See also LOGSPACE and :. % Copyright (c) 1989 by the MathWorks, Inc.
Junho/2002
if nargin == 2 n = 100; end y = [d1+(0:n-2)*(d2-d1)/(n-1) d2]; Se no existe valor para n, por exemplo, x=linspace(0,pi), linspace executar seus comandos com n igual a 100. Dica: O MATLAB verso 5 possui um editor/debugger que pode ser chamado a partir do interpretador de comandos atravs do comando edit.
- 35 -
Junho/2002
8 9 5 8 6 9 9 10 7 7 10 8 7 8 8 9 7 7 8 8 8 9 12 10 6 7 5 7 10 11 12
18 22 19 23 22 19 15 20 18 18 19 17 23 19 18 20 17 22 19 21 20 17 18 20 22 21 22 18 23 24 22
A varivel temps contm as temperaturas mais altas do dia. Cada coluna representa uma cidade. Para visualizar os dados, vamos desenh-los: d=1:31; % nmero de dias num ms. plot(d,temps) xlabel('Dias do ms'),ylabel('Celcius') title('As altas temperaturas de trs cidades')
- 36 -
Junho/2002
A funo mean d a mdia das temperaturas das cidades, nesse caso. Ex: avg_temp=mean(temps) avg_temp = 11.9677 8.2258 19.8710 Note que ela fez por colunas, e no o total. Se voc estiver interessado no total, aplique a funo de novo. Ex: avg_avg=mean(avg_temp) avg_avg = 13.3548 Para saber o mximo valor das temperaturas, usa-se a funo max. Ex: max_temp=max(temps) max_temp = 19 12 24 Para saber a posio dos valores mximos, fcil. Basta acrescentar uma varivel resposta. Ex: [max_temp,x]=max(temps) max_temp = 19 12 24 x = 9 23 30 O mesmo e aplica para os valores mnimos, s que a funo min. Ex.: min_temp=min(temps) min_temp = 8 5 15 [min_temp,n]=min(temps) min_temp = 8 5 15 - 37 -
Curso de Introduo ao MATLAB - Guia Prtico n = 8 3 7 Agora, para saber o desvio padro, usa-se a funo std. Ex: s_dev=std(temps) s_dev = 2.5098 1.7646
Junho/2002
2.2322
A funo diff nos d a variao dia-a-dia das temperaturas. Ex.: daily_change=diff(temps) daily_change = 3 1 4 -3 -4 -3 2 3 4 -2 -2 -1 -1 3 -3 4 0 -4 -7 1 5 11 -3 -2 -7 0 0 2 3 1 -3 -2 -2 -2 -1 6 -1 1 -4 7 0 -1 -7 1 2 2 -2 -3 2 0 5 -3 1 -3 3 0 2 0 0 -1 -2 1 -3 3 3 1 -4 -2 2 1 -4 2 4 1 -1 -2 -2 1 1 2 -4 2 3 5 -2 1 1 -1 1 -2
- 38 -
Junho/2002
15. Polinmios
15.1 Razes
Para se saber as razes de um polinmio, isto , achar a soluo quando o polinmio for igual a zero, preciso colocar os coeficientes do polinmio em forma de vetor. Por exemplo, o polinmio x 4 12 x 3 + 25x + 116 , para o MATLAB, assim: p=[1 -12 0 25 116] p = 1 -12 0
25
116
2
Note que o coeficiente zero do termo x foi includo. Sem ele, o MATLAB entenderia como um polinmio de 3 grau, e no de 4 grau, como o nosso caso. Agora, para saber as razes, basta usar a funo roots. Ex.: r=roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i Agora, vamos fazer o inverso. Ns temos as razes e queremos saber o polinmio que a gerou. Para isso usamos a funo poly. Ex.: pp=poly(r) pp = 1.0e+002 * Columns 1 through 4 0.0100 Column 5 1.1600 + 0.0000i pp=real(pp) % Suprimir a parte imaginria pp = 1.0000 -12.0000 0.0000 25.0000 116.0000 Como o MATLAB trabalhou com nmeros complexos e mtodos numricos, normal que o resultado da parte imaginria seja fruto do erro desses mtodos. Basta simplificar, suprimindo a parte imaginria, para se ter os coeficientes para a funo real. Mas ATENO, na verso 5, com a preciso aumentada, este problema diminuiu e, no exemplo anterior, no h parte imaginria na reconstruo do polinmio. -0.1200 -0.0000 0.2500
15.2 Multiplicao
Para a multiplicao de polinmios, o MATLAB utiliza a funo conv (Convoluo de dois arranjos). Considere o produto de dois polinmios: a( x) = x 3 + 2 x 2 + 3x + 4 e b( x) = x 3 + 4 x 2 + 9 x + 16 : a=[1 2 3 4]; b=[1 4 9 16]; c=conv(a,b) c= 1 6 20 50 75 84 64 O resultado c( x) = x + 6x polinmios, repete o uso de conv.
6 5
- 39 -
Junho/2002
15.3 Adio
Para somar dois ou mais polinmios, pode-se fazer uma simples adio de arranjos, ou seja, a soma de a( x) e b( x) : d=a+b d = 2
12
20
O resultado
d( x) = 2 x 3 + 6x 2 + 12 x + 20 .
15.4 Diviso
No MATLAB, a diviso de polinmios feita atravs da funo deconv. Ex.: [q,r]=deconv(c,b) % c/b q = 1 2 3 4 r = 0 0 0 0
15.5 Derivada
Para a derivao de um polinmio, o MATLAB tem a funo polyder. Ex.: g=[1 6 20 48 69 72 44]; % x^6+6x^5+20x^4+48x^3+69x^2+72x+44 h=polyder(g) h = 6 30 80 144 138 72
- 40 -
Junho/2002
-0.0317
Junho/2002
temperaturas durante um dia, num perodo de doze horas. Como saber a temperatura numa hora qualquer? Vamos plotar esses dados: horas=1:12; temps=[5 8 9 15 25 29 31 30 22 25 27 24]; plot(horas,temps,horas,temps,'+') title('Temperaturas') xlabel('Hora'),ylabel('Graus celcius')
Temperaturas 35 G r a u s C e l c i u s 30
25
20 15
10 5 0
6 Hora
10
12
Para estimar a temperatura numa determinada hora, usamos a funo interp1. Ex: t=interp1(horas,temps,9.3) % Estimar a hora 9,3 t = 22.9000 t=interp1(horas,temps,4.7) % Estimar a hora 4,7 t = 22 t=interp1(horas,temps,[3.2 6.5 7.1 11.7]) t = 10.2000 30.0000 30.9000 24.9000 Para se ter uma preciso ainda maior, deve-se usar o argumento spline. Ex: t=interp1(horas,temps,9.3,'spline') t = 21.8577 t=interp1(horas,temps,4.7,'spline') t = 22.3143 t=interp1(horas,temps,[3.2 6.5 7.1 11.7],'spline') t = 9.6734 30.0427 31.1755 - 42 -
Junho/2002
A Interpolao tipo spline diferente da linear, pois emprega o conceito diferencial, da os resultados serem deferentes. O tipo spline mais indicado quando se quer utilizar para grficos. Ex: h=1:0.1:12; t=interp1(horas,temps,h,'spline'); plot(horas,temps,'--',horas,temps,'+',h,t) title('Temperaturas') xlabel('Hora'),ylabel('Graus Celcius')
Temperaturas 35 G r a u s C e l c i u s
30
25 20 15
10 5
6 Hora
10
12
- 43 -
Junho/2002
Executando este M-file, teremos: ex_fmin xmin = 3.9270 emin = 1.4523e-06 ymin = -0.0279 - 44 -
Curso de Introduo ao MATLAB - Guia Prtico xmax = 0.7854 emax = -1.3781e-05 ymax = 0.6448 Percebe-se, pelo grfico, que esses valores condizem com a realidade.
Junho/2002
y=
(x 3)
+ 0.01
(x 9)2 + 0.04
6 que, pelo
80
60
40
20
-20 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3
Para o MATLAB determinar o zero dessa funo, escolhemos a funo do MATLAB, chamada fzero. A ilustrao abaixo descreve o uso dessa funo: xzero=fzero(f,2.6) % Ver o zero perto de 2.6 xzero = 2.6033
17.4 Integrao
Determinaremos a rea da funo
y=
(x 3)
+ 0.01
(x 9)2 + 0.04
6 no intervalo e -
1 a 2. Existem duas formas de se fazer isso: A aproximao trapezoidal, representado pela funo trapz, em quadrados, representados pelas funes quad e quad8. quad8 mais rigoroso do que o quad. Ex.: x=-1:.17:2; y=1./((x-3).^2+.01)+1./((x-9).^2+.04)-6; area=trapz(x,y) area = 25.9174 x=-1:.07:2; y=1./((x-3).^2+.01)+1./((x-9).^2+.04)-6; area=trapz(x,y) area = 26.6243 Naturalmente que seriam resultados diferentes. No primeiro caso os intervalos eram maiores que no segundo, portanto mais sujeito a erros.
- 45 -
Curso de Introduo ao MATLAB - Guia Prtico area=quad('y',-1,2) % rea entre -1 e 2 area = 26.3450 area=quad8('y',-1,2) area = 26.3450
Junho/2002
17.5 Diferenciao
Vamos utilizar o exemplo da curva de ajustamento para a utilizao do ajustamento de curva. p x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1]; y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; n=2; p=polyfit(x,y,n) = -9.8108 20.1293 -0.0317 xi=linspace(0,1,100); z=polyval(p,xi); plot(x,y,'o',x,y,xi,z,':') xlabel('x'),ylabel('y'),title('Ajustagem para uma curva quadrtica')
Ajustagem para uma curva quadrtica 12 10 8 6 y 4 2 0 -2 0
0.2
0.4 x
0.6
0.8
Para ns ficarmos sabendo da equao da derivada, utiliza-se a funo polyder. Ex.: pd=polyder(p) pd = -19.6217 20.1293 A derivada de
. Nosso prximo passo plotar o grfico: z=polyval(pd,xi); plot(xi,z) xlabel('X'),ylabel('dy/dx') title('Derivada do Ajustamento da curva polinomial')
- 46 -
Junho/2002
20
15 dy /dx 10
0 0
0.2
0.4 X
0.6
0.8
Agora, se voc quiser saber a derivada ponto a ponto, usa-se um artifcio com a funo diff. Ex.: dy=diff(y)./diff(x); xd=x(1:length(x)-1); plot(xd,dy) title('Aproximao da derivada usando a funo DIFF') ylabel('dy/dx'),xlabel('X')
portanto,
- 47 -
Junho/2002
Para resolver esse sistema, as funes ode23 e ode45 so usadas. Voc ter que escrever a funo nesta M-file: function yprime = vdpol(t,y); %Vdpol(t,y) returns the state derivatives of the %Van der Pol equation: % % x''-mu*(1-x^2)*x'+x = 0 (' = d/dx, '' = d^2/dx^2) % % let y(1) = x and y(2) = x' % % then y(1)' = y(20 % y(2)' = mu*(1-y(1)^2)*y(2) -y(1) mu=2; % choose 0< mu < 10 yprime=[y(2) mu*(1 - y(1)^2)*y(2)-y(1)]; % yprime is a column Para o sistema que rege a equao diferencial, a soluo : [t,y]=ode23('vdpol',0,30,[1;0]); y1=y(:,1); % Primeira coluna y(1) versus pontos de tempo de t y2=y(:,2); % Segunda coluna y(2) plot(t,y1,t,y2,'--') xlabel('Tempo, segundos'),ylabel('Y(1) e Y(2)') title('Soluo Van der Pol para mu=2')
Soluo Van der Pol para mu=2 4 3 2 1 Y(1) e 0 Y(2) -1 -2 -3 -4 0 5 10 15 20 Tempo, segundos 25 30
A sintaxe do ode23 e ode45 a mesma. Ex.: [t,x]=ode23('xprime',t0,tf,x0) onde xprime a funo, t0 tempo inicial, tf tempo final e x0 condio inicial.
- 48 -
Junho/2002
Descrio
= Ax + Bu x y = Cx + Du
A srie de freqncias automaticamente determinada. Bode(a,b,c,d,iu) produz bode plots para a entrada simples iu para todas as sadas do sistema para a srie de freqncias determinadas automaticamente. O escalar iu indexado as entradas de um sistema e especificada qual entrada ser usada na resposta Bode. Bode(num,den) desenha o bode plots de uma funo de transferncia
G (s) = num(s) den(s) onde num e den contm os coeficientes dos polinmios das
potncias descendentes de s. Bode(a,b,c,d,iu,w) ou bode(num,den,w) usa um suprimento de freqncias no vetor w. O vetor w especifica as freqncias em radianos/sec em que a resposta bode ser calculada. A funo logspace cria vetores gerais de freqncias para dados espaados logaritmicamente iguais em freqncias. Se houver argumentos de sada: [mag,phase,w]=bode(a,b,c,d,iu) [mag,phase,w]=bode(a,b,c,d,iu,w) [mag,phase,w]=bode(num,den) [mag,phase,w]=bode(num,den,w) retorna as respostas freqenciais de um sistema nas matrizes mag, phase e w. No ser desenhado na tela. As matrizes mag e phase contm as respostas de magnitude e fase de um sistema com valores freqncias w. mag e phase contm nas colunas as sadas para cada elemento no w:
G ( s) = C( sI A ) B + D
1
mag( ) = G ( j ) phase( ) = G ( j )
A fase retorna em graus. A magnitude pode ser convertida em decibels por magdb = 20 * log 10( mag) . Plote as respostas (magnitude e fase)da funo de transferncia cuja expresso : - 49 -
Exemplo
Junho/2002
G (s) =
num=[1 1];den=[1 1 2]; bode(num,den) title('Bode plot')
10 G a i n dB P h a s e 0 -10 -20 -1 10 0 -30 -60 -90
s+1 s +s+2
2
Bode plot
10
10
Frequency (rad/sec)
d -120 e -150 -1 10 g
101
Procure Referncias
logspace, dbode, nyquist [1] Laub, A. J., Efficient Multivariable Frequency Responce Computations, IEEE Transactions on Automatic Control, Vol. AC-26, No. 2, April 1981, pp. 407-408.
Descrio
G cl (s) =
G (s) 1 + G (s)
estvel se o Nyquist plot cercar o ponto 1 + j0 exatamente no tempo P na direo antihorria, onde P um nmero de plos instveis open-loop. nyquist(a,b,c,d) produz a srie de Nyquist plots, um para cada sada e entrada combinada de um sistema contnuo estado-espao:
= Ax + Bu x y = Cx + Du
A srie de freqncias automaticamente determinada. Nyquist(a,b,c,d,iu) produz Nyquist plots para a entrada simples iu para todas as sadas do sistema para a srie de freqncias determinadas automaticamente. O escalar iu indexado as entradas de um sistema e especificada qual entrada ser usada na resposta Nyquist.
- 50 -
Junho/2002
o nyquist plots de uma funo de transferncia Nyquist(num,den) desenha G (s) = num(s) den(s) onde num e den contm os coeficientes dos polinmios das potncias descendentes de s. Nyquist(a,b,c,d,iu,w) ou Nyquist(num,den,w) usa um suprimento de freqncias no vetor w. O vetor w especifica as freqncias em radianos/sec em que a resposta Nyquist ser calculada. A funo logspace cria vetores gerais de freqncias para dados espaados logaritmicamente iguais em freqncias. Se houver argumentos de sada: [re,im,w]=nyquist(a,b,c,d,iu) [re,im,w]=nyquist(a,b,c,d,iu,w) [re,im,w]=nyquist(num,den) [re,im,w]=nyquist(num,den,w) retorna as respostas frequenciais de um sistema nas matrizes re, im e w. No ser desenhado na tela. As matrizes re e im contm as partes real e imaginria da resposta de freqncias de um sistema com valores freqncias w. re e im contm nas colunas as sadas para cada elemento no w: Plote a resposta Nyquist do sistema:
Exemplo
H (s) =
num=[2 5 1];den=[1 2 3]; nyquist(num,den) title('Nyquist Plot')
Nyquist Plot 2 1.5 I m a g 1 0.5
2s2 + 5s + 1 s 2 + 2s + 1
Procure Referncias
dnyquist, bode, logspace [1] Laub, A. J., Efficient Multivariable Frequency Responce Computations, IEEE Transactions on Automatic Control, Vol. AC-26, No. 2, April 1981, pp. 407-408.
- 51 -
Junho/2002
Descrio
h(s) =
Quando no possui argumentos de sada, a funo rlocus plota o resultado na tela. rlocus serve para sistemas contnuos ou discretos no tempo. rlocus(num,den)plota a localizao das razes para
g(s) = 1 + k
num(s) den(s)
e o vetor ganho k automaticamente determinada. Vetores num e den especifica os coeficientes dos numeradores e denominadores em funo de potncias de s ou z:
Exemplo
H (s) =
num=[2 5 1]; den=[1 2 3]; rlocus(num,den); title('Root Locus')
2s2 + 5s + 1 s2 + 2s + 3
- 52 -
Junho/2002
Procure
place, lqr
- 53 -
Junho/2002
- 54 -
Junho/2002
Potncia vetorial. Produto de tensor Kronecker. Corte ou diviso esquerda. Corte ou diviso direita. Diviso vetorial. Dois pontos. Parnteses. Colchetes. Ponto Decimal. Diretrio raiz. Continuao. Vrgula. Ponto-e-vrgula. Comentrio, observao. Ponto de exclamao. Transposio. Transposio Vetorial. Indicao. Igualdade. Operadores relacionais. E lgico. OU lgico. NO lgico. EXCLUSIVO OU lgico.
Funes Lgicas
all any exist find finite isempty ishold isieee isinf isletter isnan isreal issparse isstr Verdadeiro se todos elementos do vetor forem verdadeiros. Verdadeiro se algum elemento do vetor for verdadeiro. Verifica se existe variveis ou funes. Encontra ndices dos elementos no nulos. Verdadeiro para elementos finitos. Verdadeiro para matrizes vazias. Verdadeiro se hold estiver ligado. Verdadeiro para IEEE pontos flutuantes aritmticos. Verdadeiro para elementos infinitos. Verdadeiro para caracteres alfabticos. Verdadeiro para um no nmero. Verdadeiro se todos elementos da matriz forem reais. Verdadeiro para matrizes esparsas. Verdadeiro para texto.
- 55 -
Junho/2002
Controle de Fluxo
break else elseif end error for if return while Execuo terminal de um Loop. Usado com if. Usado com if. Termina com o campo de ao de comandos for, while e if. Mostra mensagem e aborta funes. Repete declaraes num especificado nmero de vezes. Executa declaraes condicionais. Retorna para funes invocadas. Repete declaraes num indefinido nmero de vezes.
Entrada Interativa
input keyboard menu pause Prompt para entrada de usurio. Declara o teclado como se fosse um arquivo texto. Menu geral de escolhas para entrada do usurio. Espera pela resposta do usurio.
Depurao
dbclear dbcont dbdown dbquit dbstack dbstatus dbstep dbstop dbtype dbup Remove ponto de parada. Execuo resumida. Muda o contexto local da estao de trabalho. Sai do modo debug. Lista quem chamou quem. Lista todos pontos de parada. Executa uma ou mais linhas. Coloca um ponto de parada. Lista arquivo *.M com nmero de linhas. Muda o contexto local da estao de trabalho.
Data e Hora
clock cputime date etime tic, toc Relgio. Tempo decorrido em unidades de CPU. Calendrio. Funo do tempo decorrido. Funes de tempo decorrido.
- 56 -
Junho/2002
gcd imag lcm log log10 real rem round sec sech
Inteiro prximo a . Grande divisor comum. Parte imaginria de um nmero complexo. Menor mltiplo comum. Logaritmo natural. Logaritmo comum. Parte real de um nmero complexo. Resto da diviso. Inteiro mais prximo. Secante. Secante hiperblica.
- 57 -
Junho/2002
- 58 -
Junho/2002
Equaes Lineares
chol inv lscov lu nnls pinv qr \ and / Fatorizao CHOLESKY. Matriz inversa. ltimos quadrados na presena de covariance. Fatores de eliminaes Gausianas. Matrizes quadradas no negativas. Pseudo-inversa. Decomposio ortogonal-triangular Soluo de equao linear
Funes Matriciais
exp. funm logm sqrtm Matriz exponencial. Avaliao geral da funo matricial. Matriz logartmica. Matriz de razes quadradas.
- 59 -
Junho/2002
Diferenas Finitas
del2 diff gradient Ponto cinco discreto Laplaciano. Funo diferencial e derivada aproximada. Gradiente aproximado.
Correlao
corrcoef cov Coeficientes correlacionados. Matriz covariante.
Filtro e Convoluo
conv conv2 deconv filter filter2 Convoluo e multiplicao polinomial. Convoluo Bidimensional. Deconvoluo e diviso polinomial. Filtro digital unidimensional. Filtro digital bidimensional.
Transformada de Fourier
abs angle cplxpair fft fft2 fftshift ifft ifft2 nextpow2 unwrap Magnitude. ngulo de fase. Organiza nmeros para dentro de um par conjugado complexo. Discreta transformada de Fourier. Discreta transformada de Fourier bidimensional. Muda a freqncia zero para centro do espectro. Inversa discreta da transformada de Fourier. Inverso bidimensional da discreta transformada de Fourier. Prxima fora maior de 2. Remove o ngulo de fase saltando atravs de limites de 360
Funes Vetoriais
cross dot Produto de vetores. Produto de ponto vetorial.
Interpolao de Dados
griddata interp1 interp2 Rede de dados. Interpolao unidimensional. Interpolao bidimensional.
- 60 -
Junho/2002
Reordenando Algoritmos
colmmd colperm dmperm randperm symmmd symrcm Mnima extenso da coluna. Ordena colunas baseadas em contador no nulo. Decomposio Dulmage-Mendelsohn. Permutao aleatria de vetores. Mnima extenso simtrica. Ordenando a reversa de Cuthill-McKee.
Miscelnea
spaugment spparms symbfact Sistema ampliado da ltima forma quadrtica. Estabelece parmetros para rotinas de matrizes esparsadas. Anlise de fatorizao simblica.
- 61 -
Junho/2002
Anotaes Grficas
grid gtext legend text title xlabel ylabel Rede de linhas. Lugar do texto com o mouse. Adiciona legenda para plotar. Anotao de texto. Ttulo do grfico. Classificao do eixo X. Classificao do eixo Y.
Miscelnea
zoom Zoom de aproximao (in) e afastamento (out).
Aparncia Grfica
axis caxis Escala e aparncia de eixo. Pseudocores de eixo escalar.
- 62 -
Junho/2002
Anotao Grfica
grid legend text title xlabel ylabel zlabel Rede de linhas. Adiciona legenda no plot. Anotao. Ttulo do grfico. Classificao do eixo X. Classificao do eixo Y. Classificao do eixo Z para plots 3-D.
Objetos 3-D
cylinder sphere Cilindro comum. Esfera comum.
Caixas de Dilogos
uigetfile Recupera nome do arquivo para abrir uma caixa de dilogo.
- 63 -
Junho/2002
Impresso e Armazenagem
orient print printopt Mostra orientaes do papel. Imprime grficos ou salva-os em arquivos. Configurao local da impressora.
Filmes e Animaes
getframe movie moviein Mostra estrutura do filme. Roda as estruturas do filme gravado. Inicializa a memria da estrutura do filme.
Miscelneas
ginput ishold rbbox waitforbuttonpress Entrada do grfico pelo mouse. Retorna ao estado conservado. Caixa de borracha para regio selecionada. Espera pelo pressionamento de uma tecla sobre a figura.
Mapeamento de Cores
bone contrast cool copper flag gray hsv hot jet pink prism white Escala cinza com uma matiz azul. Acentuao de contraste em escala cinza. Sombra de cyan e magenta. Matiz linear usando tonalidades cooper. Alternando vermelho, branco, azul e preto. Escala de cinza linear. Valor de saturao de tonalidade. Preto-vermelho-amarelo-branco. Variao do HSV. (sem wrap) Pasteuriza sombras de rosa. Prisma de cores. Tudo em branco monocromtico.
Luminosidade
diffuse specular surfl surfnorm Reflexo difuso. Reflexo refletido. Superfcies 3-D sombreadas com luminosidade. Superfcies normais.
- 64 -
Junho/2002
Comparao Frasal
isletter lower strcmp upper Verdadeiro para caracter alfabtico. Converte texto para uma caixa menor. Compara textos. Converte texto para uma caixa maior.
I/O Desformatada
fread fwrite L dado binrio de arquivo. Escreve dado binrio para arquivo.
I/O Formatada
fgetl fgets fprintf fscanf L linha de arquivo, descarta novas linhas de caracteres. L linha de arquivo, permanece novas linhas de caracteres. Escreve dado formatado para arquivo. L dado formatado para arquivo.
Posio em Arquivos
feof ferror frewind fseek ftell Teste para fim de linha. Pergunta a situao do erro de arquivo I/O. Refaz arquivo. Mostra o indicador da posio do arquivo. Determina o indicador da posio do arquivo.
Converso de Texto
sprintf sscanf Escreve dados formatados para letras. L letras sob um controle formatado.
- 65 -
Junho/2002
lgebra Linear
charpoly colspace determ eigensys inverse jordan linsolve nullspace singvals svdvpa transpose Polinmio caracterstico simblico. Bsico para espao em colunas. Determinante da matriz simblica. Autovalores e autovetores simblicos. Matriz inversa Simblica. Forma cannica Jordan. Soluo para equaes lineares simultneas. Base para nullspace. Valores matriciais simblicos e vetores singulares. Valor singular de preciso varivel. Matriz transposta simblica.
Simplificaes
allvalues collect expand factor simple simplify symsum Achar todos os valores para a expresso RootOF. Acumular. Expandir. Fator. Buscar para a forma shortest. Simplificar. Srie de soma simblica.
- 66 -
Junho/2002
Converso de Modelos
c2d c2dm ss2tf ss2zp tf2ss tf2zp zp2tf zp2ss Converso de contnua para discreta. Converso de contnua para discreta usando mtodo. Converso de estado-espao para funo de transferncia Converso de estado-espao para zero-plos. Converso de funo de transferncia para estado-espao. Converso de funo de transferncia para zero-plos. Converso de zero-plos para funo de transferncia. Converso de zero-plos para estado-espao.
Realizao de Modelos
canon Converso de sistemas para forma cannica.
Propriedades de Modelos
ctrb damp ddamp dsort esort obsv tzero Matriz Controlabilidade. Fatores damping e freqncias naturais. Fatores discretos damping e freqncias naturais. Classe de autovalores discretos por magnitude. Classe de autovalores contnuos por parte real. Matriz Observabilidade Transmisso zero.
Resposta em Tempo
dimpulse dlsim dstep impulse lsim step Resposta a funo impulso discreto unitrio. Simulao discreta para entradas arbitrrias. Resposta a funo degrau discreto. Resposta a funo impulso. Simulao contnua para entradas arbitrrias. Resposta a funo degrau.
Resposta em Freqncias
bode freqs freqz nyquist Plota bode. Transformada de Laplace. Transformada de z. Plota nyquist.
Localizao de Razes
rlocus Localiza lugares das razes.
- 67 -
Junho/2002
Gerao de ondas
sinc Funo sinc ou sin ( x ) x
Anlise/Implementao de Filtros
freqs freqz grpdelay zplane Resposta de freqncias em transformadas de Laplace. Resposta de freqncias em transformadas de z. Grupo atrasado. Plota zero-plo discreto.
Janelas
boxcar hamming hanning kaiser triang Janela retangular. Janela hamming. Janela hanning. Janela kaiser. Janela triangular.
Operaes Especializadas
specgram Espectograma.
Translao de Freqncias
lp2bp lp2bs lp2hp lp2lp Transformao lowpass para bandpass. Transformao lowpass para bandstop. Transformao lowpass para highpass. Transformao lowpass para lowpass.
- 68 -
Junho/2002
Outros
detrend polystab strips Remover direo linear. Polinmio estabilizador. Plota strip.
- 69 -