intro matlab, Notas de estudo de Mecatrônica
renato_freitas
renato_freitas

intro matlab, Notas de estudo de Mecatrônica

32 páginas
50Números de download
1000+Número de visitas
Descrição
Introdução ao Matlab. Matlab para Controle 2.
70 pontos
Pontos de download necessários para baixar
este documento
Baixar o documento
Pré-visualização3 páginas / 32
Esta é apenas uma pré-visualização
3 mostrados em 32 páginas
Esta é apenas uma pré-visualização
3 mostrados em 32 páginas
Esta é apenas uma pré-visualização
3 mostrados em 32 páginas
Esta é apenas uma pré-visualização
3 mostrados em 32 páginas

MATLAB para o Laboratório de Automação II

Ricardo Cury Ibrahim

(versão preliminar)

�  

 



1 Introdução M-3

2 Conceitos Gerais M-4 2.1 Operações matemáticas simples . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2.2 Armazenando dados em variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . .   2.3 Formato dos números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "! 2.4 Utilizando funções matemáticas elementares . . . . . . . . . . . . . . . . . . . . . . "! 2.5 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $#

2.5.1 Operações matemáticas com listas . . . . . . . . . . . . . . . . . . . . . . .  % 2.6 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '&(&

2.6.1 Operações matemáticas com matrizes . . . . . . . . . . . . . . . . . . . . . )&* 2.7 Loops e tomadas de decisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '&*

2.7.1 Loops usando for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )&+ 2.7.2 Loops usando while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )&+ 2.7.3 Tomadas de decisão usando if-else . . . . . . . . . . . . . . . . . . . . . . . )&*!

2.8 Plotando gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '&+! 2.9 Importando/exportando dados de/para um arquivo . . . . . . . . . . . . . . . . . . . ,)&+% 2.10 Utilizando polinômios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  -(-

3 MATLAB Aplicado a Controle e Processamento de Sinais M-25 3.1 Processamento de sinais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $-. 3.2 Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  -(#

3.2.1 Método do lugar das raı́zes . . . . . . . . . . . . . . . . . . . . . . . . . . .  /.0

4 Criando Funções e Arquivos Script M-30 4.1 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "/(0 4.2 Arquivos script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "/1&

,$-

�  



 





Esta apostila tem a intenção de ser um guia rápido para a utilização do MATLAB em atividades das disciplinas PMC503 e PMC526, ou seja, alguns tópicos de controle e alguns poucos tópicos de processamento de sinais. Ela não pretende simplesmente listar os diversos comandos do MATLAB e dar alguns exemplos. O objetivo principal é inserir alguns elementos básicos a partir dos quais se possa progredir de maneira autônoma, fazendo com que o aluno se torne elemento ativo no processo de aprendizagem. No caso do MATLAB, deve-se estudar praticando num micro com o software instalado.

Lembre-se sempre que um problema complexo é, na verdade, um conjunto de vários problemas simples. O esforço empregado na boa assimilação de conceitos básicos sempre é recompensado. Apesar disso, é fato que uma pessoa só pode ter bom aproveitamento no estudo de um determinado assunto se possuir motivação para tanto.

No caso desta disciplina, Laboratório de Automação II, é importante considerar as inúmeras aplicações dos conceitos a serem estudados na vida profissional futura de um estudante de engenharia. Todo equipamento moderno tem algum sistema de controle. Portanto, um engenheiro sempre se defronta com os conceitos de controle, seja para um projeto ou mesmo para simples uso de um equipamento. Tome como exemplo esse grande mercado potencial que é o de casas com equipamentos “inteligentes”, que será, provavelmente, a grande sensação junto com a Internet. Esses equipamentos compreendem desde eletrodomésticos até sistemas de alarme, de iluminação, de condicionadores de ar, etc.

Imagine que apenas uma pessoa esteja numa sala, usando um computador, e ligue o ar condicionado para se aquecer ou refrescar. Um bom sistema de controle, acoplado a sensores, poderia determinar a posição desta pessoa e planejar o funcionamento do equipamento de forma a que apenas nas proximidades da pessoa o ar tivesse a temperatura desejada. Ou, ao contrário, para uma sala com várias pessoas se movimentando, o sistema deve se encarregar de manter a temperatura uniforme por toda a sala.

Além disso, tradicionalmente, automóveis, aviões, navios, robôs, foguetes, satélites, equipamentos médicos, processos industriais diversos são grandes mercados para sistemas de controle. A lista de aplicações é longa.

Como se não bastasse, áreas que tradicionalmente não tinham nenhuma relação com sistemas de controle agora se beneficiam com o seu uso. Diversas instituições financeiras aplicam técnicas de controle para análise de investimentos. A área de humanidades faz uso frequente de conceitos sofisticados de controle para elaboração de softwares de tradução de textos para outros idiomas.

Por outro lado, o MATLAB se tornou, provavelmente, a ferramenta mais popular no mundo inteiro para quem trabalha com controle. Existem inúmeros livros publicados sobre o uso do MATLAB. Além disso, as novas versões de livros didáticos clássicos na área de controle já incluem exercı́cios para serem resolvidos com o MATLAB.

Existem versões do MATLAB para os mais diversos tipos de sistemas operacionais. Praticamente todos os comandos descritos nesta apostila para serem executados internamente ao ambiente MATLAB devem valer para qualquer plataforma. Entretanto, comandos para ler e salvar arquivos devem ser diferentes. Esta apostila descreverá comandos válidos para o sistema operacional Microsoft Windows, que é o mais utilizado atualmente.

Por fim, gostaria de lembrar que sempre é muito importante consultar livros textos no assunto para referências mais detalhadas.

, /

� �















 







 

 







     





Esta seção apresenta conceitos básicos do MATLAB para aplicação geral. A assimilação desses conceitos é fundamental para a boa utilização do software, constituindo um ferramental básico de uso frequente.

É interessante observar que MATLAB é uma abreviação da junção das palavras inglesas Matrix e Laboratory. Note, então, que o MATLAB existe basicamente para manipular matrizes.

Observação importante: o tipo de fonte exemplificado abaixo será usado sempre que for necessário indicar um comando a ser usado no ambiente MATLAB. Entende-se por ambiente MATLAB a janela para se digitar comandos, que é aberta ao se iniciar o programa. Ao iniciar o programa MATLAB por meio de seu ı́cone de atalho ou clicando a sequência INICIAR  PROGRAMAS  MATLAB  MATLAB, abre-se uma janela para entrada de comandos. Todos os comandos para execução de alguma atividade devem ser digitados em frente ao prompt  .

  "!#"!

 !$%&

 ')(+*,%

O primeiro comando a ser apresentado é também um dos mais importantes, pelo menos dentro daquela perspectiva de que o aluno deve ser o mais autosuficiente possı́vel. É o comando "! . Basta digitar  "! seguido do nome de algum comando que se deseja obter informações e apertar a tecla -. / - 0

. Experimente com

  "!#!+12%

Uma forma mais conveniente de usar o  "! do MATLAB é abrindo uma janela própria de 3 "! . Do menu, escolha Help e selecione Help Window. Na nova janela aberta pode-se encontrar diversos tópicos de ajuda organizados por um determinado tema. Tente abrir a tabela de "! para operações elementares com matrizes (  "43$% ). Obviamente, uma outra forma de se obter ajuda nesse tema é dar o seguinte comando na janela de comandos:

  "!5 "43$%

Por outro lado, se estiver disponı́vel a opção Help Desk(HTML) no menu Help, será aberto um sistema bem mais complexo de ajuda no formato html no seu browser.

Utilizando o comando  2! sem argumentos fará com que sejam listados todos os tópicos gerais de ajuda, incluindo o Simulink e o Toolbox.

Outra forma bastante prática de se aprimorar no MATLAB é executar alguns programas demos já incluı́dos no pacote. Use o comando  2!#6 74819 para obter uma listagem dos demos com função geral. Ou use o comando  "!:9*;46 24819 para uma listagem dos demos do Simulink. Experimente também  "!=<&1"> %?1  , e descubra quais os demos do Control Toolbox.

Para rodar um demo basta digitar o seu nome após o prompt, na janela de comando, e seguir as instruções próprias

@BADC EFHGJI3KHL

MONP

GRQSTKVUGJS WKVU3X

M

KYQZQXDS[F]\^GRQ

Operações matemáticas simples podem ser realizadas diretamente na janela de comandos com o uso dos seguintes caracteres: soma (+), subtração (-), multiplicação (*), divisão ( _ ou ` ), potência (ˆ). Exemplo:

,"

� � �











 





 





 



 



$7> 9

É importante saber qual a ordem de precedência dos operadores mencionados acima. Para tanto, teste você mesmo com vários exemplos para descobrir a ordem. Um dos testes para saber qual a precedência entre  e



poderia ser calcular  

 . Note que o uso de parênteses pode alterar a precedência de acordo com a necessidade.

A listagem completa dos operadores pode ser obtida consultando o help de “operators and special characters”, ou dando o comando  2!51"! 9 .

A esta altura você já deve ter reparado que muitas vezes o help de algum tópico é muito longo e a informação rola pela tela sem parar. Existe uma maneira de se apresentar a informação de forma que ao se preencher uma tela o help pare e espere por um novo sinal para apresentar a tela seguinte. Basta usar o comando 481?  . Tente:

  4817?  1">

  "!:1"! 9

Para retornar ao modo default, de rolagem sem parar, é só usar o comando

  4817?  1

É claro que sempre se pode usar o mouse para rolar 

@BA @  I+STK GK

P

]K

P

Q GJS YKYI+X WK OGJXDQ

Armazenar dados em variáveis é uma maneira muito útil de tratar com operações mais complexas. A associação de um determinado valor a uma variável é bem simples:

 '$!

"$#%

$&

"'#%

que associa o valor - #( à variável ( . Podemos ter também:

  )* $!+

"$%

),

#-"$ +%

Se você esquecer e quiser relembrar o valor armazenado numa determinada variável, basta digitar a variável em seguida ao prompt:

 '$

$&

"'#%

,$

� �







 

     



 





 







  J

 



 

Para saber todas as variáveis já usadas, basta usar o comando &+1 . Experimente definir diversas variáveis com diferentes valores e use o comando &+1 . Desta forma,  +1 é uma palavra reservada e não deve ser empregada para armazenar suas variáveis.

Algumas regras devem ser seguidas para definição de variáveis.

 o nome da variável deve sempre começar por uma letra

 o nome da variável pode conter letras e números, mas não se deve usar os sı́mbolos especiais (    

%+<

"

)

 o MATLAB é sensı́vel ao uso de letras maiúsculas e minúsculas. $  1? +#

, $ 17? +#

e  0

+#

são três variáveis diferentes.

 a variável pode conter até 19 caracteres. Mas note que esse valor pode variar com as novas versões do MATLAB.

Algumas variáveis já são predefinidas e não podem mais ser utilizadas. É o caso, por exemplo, de  que é a razão do perı́metro de uma circunferência pelo seu diâmetro, de  ou  que representam  

& . Para deixar de usar uma determinada variável numa seção do MATLAB, basta usar o comando

<&& $)? seguido do nome da variável que se deseja excluir da memória. No MATLAB é possı́vel salvar em arquivo todas as variáveis definidas num determinado trabalho

para uso posterior. Para tanto, basta clicar no menu File e selecionar Save Workspace as. . . para salvar sua seção de trabalho atual. As variáveis podem ser recuperadas usando a opção Load no menu File.

@BA  !

P

I+STKVU

P



P

Q 'W

"

STGRI

P

Q

O MATLAB pode utilizar números em diversos formatos. Uma listagem completa pode ser obtida usando o comando "! 317?43$% .

O formato default é o 17?4+$%:9,+17?&% , em que números reais são mostrados com 4 algarismos após o ponto decimal.

Para mudar o formato em uso basta dar o comando 17?43$)% seguido do nome do formato desejado. Para mudar do formato default para o formato real longo, usa-se o comando:

  17?4+$%  1">#

Como exercı́cio, experimente com os diversos formatos disponı́veis.

@BA%$ & UX \DX  K

P('

"

 L

MONP

GRQSTKVUG S WKVUX

M

KYQ GJ\^G STG UKYI3GRQ

O MATLAB contém diversas funções matemáticas elementares (trigonométricas, para números complexos, logarı́tmicas, e numéricas) que são muito úteis em vários tipos de aplicações. Consulte o help para funções matemáticas elementares (uma maneira é usar o comando "! *) > ) para uma listagem completa.

Para o nosso curso, algumas funções podem ser destacadas. Pratique com elas + Experimente com as seguintes funções:

$) 9-,D(/.-0 <&12>213,D(/.40 ? $ 4,D(5.-0 *;43$*#6, (/.-0 $7>#3)3,D(/.40 &()!7,D(/.40  18#6,D(5.-0  18# 9:,D(/.-0

98; ?&% ,D(/.40 ?24<,D(

>=

.-0 ?1)> 6 ,D(/.40 <)*)4,D(5.-0  1 1?6,D(/.-0 9*,>7,D(/.-0 $9 *>7,D(/.40 %+<

"

, !

� � ;









Entre um número complexo qualquer, como no exemplo abaixo, e experimente com as diversas funções pertinentes ( $)89-, (/. , $7> #)3,D(5. , <&1">13,D(/. , ?  $  ,D(/. , *;4+$*#6,D(/. )

 >8<* ! 



*

>8< 

 

"

9999 

-"

9999*

Descubra se os argumentos das funções trigonométricas como 9*><,D(/. , <&19-,D(5. , %$7>7,D(/. devem ser em radiano ou em grau.

@BA  X^QUKYQ

Uma lista ou um vetor é uma coleção de dados de um mesmo tipo e unidimensional, ou seja, a cada elemento se pode associar um ı́ndice único. A lista é um dos elementos mais úteis no MATLAB.

A maneira mais simples de se criar uma lista no MATLAB é escrevendo seus elementos um a um separados por vı́rgula ou por espaço dentro de colchetes.

     

:

)()!<, *.



! *



*

 



"

9999

"'#



  "

   9  

"

9999*

ou então,

     

)(&!7, *. ! *'*

 



"

9999

"'#



  "

   9  

"

9999*

Note que esta é uma lista (ou vetor) horizontal. Para criar uma lista vertical (coluna), basta separar seus elementos por ponto e vı́rgula.

     

0 )()!<, *.-0 ! *-0*

 



"

9999

"'#





-"

  

9& 

"

9999*

Ou então, use o sinal de apóstrofo para representar a transposta do vetor linha em seguida ao sinal de ponto:

     

)(&!7, *. ! *'*

"*

 



"

9999

,$#

� � ;









"'#





-"

  

9& 

"

9999*

É importante observar que se não fosse usado o sinal de ponto antes do apóstrofo o resultado seria o conjugado da transposta, no caso de listas com números complexos. Verifique você mesmo +

Utilizaremos, em seguida, um exemplo muito comum nos livros sobre MATLAB. Imagine que se queira plotar uma determinada função, co-seno por exemplo. Escolhe-se um determinado intervalo de interesse. Diversos elementos compreendidos no intervalo constituem uma lista, no eixo horizontal do gráfico a ser plotado. Então, para cada elemento, calcula-se o valor correspondente da função desejada. Essa operação formará uma outra lista (com mesmo número de elementos) de valores a serem plotados segundo o eixo vertical.

Digamos que se queira plotar a função co-seno para valores compreendidos no intervalo de �

_(- rad (aproximadamente 

&  .#.0



) a 20 rad. Uma maneira de se criar uma lista com, por exemplo, 50 elementos é usando a função  *>89"!$<3, ( 



(

6

>. :

 Z(  *,>89,!$<)3, 7! *

:

9

 %

92.-0

 

Note o sinal de ponto e vı́rgula no final da linha de comando. Ele foi usado para evitar que os 50 elementos fossem mostrados na tela. Tente usar o mesmo comando sem o sinal de ponto e vı́rgula e veja o que acontece.

Em seguida, veja como é prático o uso de listas em MATLAB: para calcular o valor da função co-seno para cada elemento da lista basta usar o comando

 

=

<&1 9-,D(/.-0

Desta maneira, foi criada uma nova lista  também com 50 elementos. A cada elemento de uma lista corresponde um ı́ndice. O ı́ndice do primeiro elemento sempre é &

(e não zero). O primeiro elemento da lista  ( �

_(- ) pode ser mostrado com o comando:

 Z(6, *.

$7> 9



"$%+#

9

Analogamente, o quinto elemento da lista  é:

 

=

,

%

.

$7> 9

9

"

9

Também é possı́vel utilizar a notação de matrizes para se referir a uma lista. O quinto elemento de uma lista horizontal  seria 7, 

 %

. ; enquanto que o quinto elemento de uma lista vertical seria  ,

%:

*. . Uma outra maneira de se criar uma lista, em que se tem o primeiro e o último elemento e o

intervalo constante de variação entre elementos subsequentes, será mostrada em seguida. Vamos criar uma lista - de números reais entre & e 0 com espaçamento



0* & . Isto é feito da seguinte forma:

,



� � ;









  

� 9

"

�>9





1 )&4 >89  %&?1)#)

#



"

9999 9

"$

999 9

"

999 9

"'#

999 9

"

999 9

"$%

999 9

"

999



1 )&4 >89 Z%&?1)#) +

9

"$

999 9

"$

999 9

"

999 9

 

   



 !#"$





%

 & $ '(

A grosso modo, as operações podem ser divididas em operações com escalares (um valor numérico simples) e operações entre listas.

Uma lista pode ser multiplicada, dividida, adicionada ou subtraı́da por/de um escalar de uma maneira bem simples. Tomemos a lista - definida anteriormente.

  9) 



$7> 9



1 )&4 >89  %&?1)#)

#

"

9999

"

9999

#-"

9999 

"

9999

%"

9999 

"

9999

 "

9999



1 )&4 >89 Z%&?1)#) +

"

9999 

"

9999 9 

"

9999

 

Por outro lado, as operações matemáticas entre listas são realizadas elemento a elemento. Por exemplo,

*+*





9,� 9

"

� 







1 )&4 >89  %&?1)#)

#

9 9

"

999 9

"

999 9

"'

999 9

"

999 9

"$%

999 9

"

999



1 )&4 >89 Z%&?1)#) +

9

"$#

999 9

"

999 9

"

999 

"

9999

*+*



*



$7> 9



1 )&4 >89  %&?1)#)

#



"

9999 9

"

999 9

"

999 9

"

999 9

"

999 9 9

"

999



1 )&4 >89 Z%&?1)#) +

9

"

 999 9

"

999 9

"

999 

"

9999

, %

� � ;









*+*



"

 



$&?)> *># � * 8*"6  )

=

)?31

"

$7> 9



1 )&4 >89  %&?1)#)

#



> 

"

9999 

"

9999

"'++



" %

999 

"

9999 9

"

  

#



1 )&4 >89 Z%&?1)#) +

9

"



 9

"$ +%

99 9

"

+++ 9

*+*



"





$&?)> *># � * 8*"6  )

=

)?31

"

$7> 9



1 )&4 >89  %&?1)#)

#

9 9

"

++ 9

" +%

99 9

"



 9

"

  

#



"

9999 

"$%

999



1 )&4 >89 Z%&?1)#) +

"$+++



"

9999

"

9999



> 

*+*



"

)8



$7> 9



1 )&4 >89  %&?1)#)

#

9 9

"

9

99 9

"

 99 9

"$

 99 9

"

99 9

"$ +%

99 9

"$

99



1 )&4 >89 Z%&?1)#) +

9

"

99 9

"

 99 9

"

9

99 9

Repare, entretanto, nas seguintes operações:

*+*



) 



  

-

??17? )89*>#, +  )



>>)?Z43$%?+*2( 68*;437>89 *)1">89 4) 9"% $ # ?  

"

*+*



) 

-"*

$7> 9



"



%

99

Note a maneira de se executar um multiplicação ou uma divisão entre listas. Deve-se usar o sinal de ponto (

"

) antes do sı́mbolo da operação de multiplicação ou divisão. Operações entre listas só podem ser executadas se as listas forem de mesma dimensão (mesmo

número de elementos). Repare a diferença entre a divisão direita (  ) e a divisão esquerda (



). Note também os resultados e os avisos de divisão por zero.

'&+0

� � 







 

@BA  KVUI+X  GRQ

A maneira mais simples de se criar uma matriz em MATLAB é inserindo seus elementos um a um, como uma lista, mas separando cada linha da matriz por ponto e vı́rgula:

*+*

17?4+$%&)3$7>

*+* 

 





! *-0

 %6

9

"

# 

9

"$

9)*-0 99

99

99





-"

99 

"

99

-"



 "

99 9

"

#

9

"$

9

99

"

99

99

"

99

99

"

99

Repare que o formato dos números (ver seção 2.3) foi modificado para bank. O que aconteceria se a mesma matriz fosse definida com o formato default do MATLAB (short)?

Um elemento de uma matriz bidimensional pode ser referenciado através de seus dois ı́ndices:

*+* 

 ,

6 

.

$7> 9

9

"$

9

As listas (vetores) vistas anteriormente podem ser consideradas um caso particular de matriz unidimensional.

Em geral, as matrizes bidimensionais em MATLAB podem ser consideradas como sendo formadas por linhas (ou colunas) de listas. Por exemplo, sejam dadas duas listas definidas abaixo:

*+*

17?4+$%

*+*

+*&9*  *>89"!$<3,



9



92.

+* 9*







%



#

9

*+*

+*&9

 *>89"!$<3, 9

"









92.

+* 9



1 )&4 >89  %&?1)#)

#

9

"

999 9

"$

999 9

"$

999 9

"

999 9

" %

999 9

"

999 9

"'#

999



1 )&4 >89 Z%&?1)#) 9

9

"

999 9

"$

999 

"

9999

Pode-se facilmente criar matrizes com estas listas:

*+* 

$%  +*&9  0 +*&9



$)% 



1 )&4 >89  %&?1)#)

#

'&(&

� � 







 



"

9999

"

9999

-"

9999 

"

9999

%"

9999 

"

9999

# "

9999

9

"

999 9

"$

999 9

"$

999 9

"

999 9

" %

999 9

"

999 9

"'#

999



1 )&4 >89 Z%&?1)#) 9

"

9999

"

9999 9

"

9999

9

"

999 9

"$

999 

"

9999

*+* 

$%

+*&9 

"*

+*&9

"*



$)%



"

9999 9

"

999

"

9999 9

"$

999

-"

9999 9

"'

999



"

9999 9

"

999

%"

9999 9

"$%

999



"

9999 9

"

999

#-"

9999 9

"'#

999

"

9999 9

"

999

"

9999 9

"$

999

9

"

9999 

"

9999

É possı́vel referenciar todos os elementos de uma linha ou coluna utilizando-se o sinal de dois pontos ( � ),

*+* 

$%  ,

:

� .

$7> 9



1 )&4 >89  %&?1)#)

#

9

"

999 9

"$

999 9

"$

999 9

"

999 9

" %

999 9

"

999 9

"'#

999



1 )&4 >89 Z%&?1)#) 9

9

"

999 9

"$

999 

"

9999

*+* 

$%

,

%:

� .

$7> 9

%"

9999 9

"$%

999

*+* 

$%  ,�

 #

.

$7> 9

#-"

9999

9

"$#

999

*+* 

$%

,�



*.

'& -

� � 







 

$7> 9







%



#

9

Extendendo ainda mais o conceito de criação de matrizes, uma matriz também pode ser formada de outra matriz,

*+* 

$%







$%  0 +*&9 



$)%





1 )&4 >89  %&?1)#)

#



"

9999

"

9999

-"

9999 

"

9999

%"

9999 

"

9999

# "

9999

9

"

999 9

"$

999 9

"$

999 9

"

999 9

" %

999 9

"

999 9

"'#

999



"

9999

"

9999

-"

9999 

"

9999

%"

9999 

"

9999

# "

9999



1 )&4 >89 Z%&?1)#) 9

"

9999

"

9999 9

"

9999

9

"

999 9

"$

999 

"

9999

"

9999

"

9999 9

"

9999

A dimensão de uma matriz pode ser obtida com a função 9* 

:,



. .

*+*

9*



:,



$%

.

$7> 9

9

ou seja, a matriz Mat2 tem dimensão &+0  - . A matriz identidade pode ser criada com a função 

=



*+*



6 7> %





=

3,



.



67>%



 9 9

'&+/

� �  























9  9

9 9 

   



 (  "($





%

   $ 

As operações com matrizes são bem convenientes com o MATLAB. Uma lista de todas as operações pode ser obtida com o comando  2! 43$)%*) > . Veja alguns exemplos:

*+*

6 % ,



*.

$7> 9



-"$ + !

!99

%

 

"'

999 !99!+*

*+*

*> ,



*.

$7> 9

9

"

99  9

"

99  * 9

"

9



9

#

 9

"

99 

%

* 9

"

999

 9

"

99 *

9

"

9



 9

"

999

* 9

"

99 9  9

"

999)* 9

"

999



 9

"

999)*

9

"

9

+  9

"

99



)* 9

"

9  9

"

99

)* 9

"

99

%+

 9

"

999 3*

*+* 

$% %)



$%

$7> 9



%"

9999



"$%

999



"$%

999

-"

%

99

*+* 

$% 

"

)



$%

  

-

??17? )89*>#, + 

"

)



$)%?+*"( 6+*;43>89*)1"> 9 4)89"% $*# ? 

"

*+* 

$% 

"

)



$%

"*

$7> 9



1 )&4 >89  %&?1)#)

#



"

9999 

"

9999

"

9999  

"

9999

+%"

9999





"

9999 

"

9999

9

"

999 9

"

9 99 9

"

9

99 9

"

 99 9

" +%

99 9

"'

99 9

"



99



1 )&4 >89 Z%&?1)#) 9

 

"

9999 

"

9999 99

"

9999

9

"

 99 9

"

99 

"

9999

@BA 

P P

FQ G#U

P

STK]KYQ ]G ]G

M

XDQ

N

K

P

O que veremos nesta seção pode ser bastante útil em diversas situações. Loops podem ser usados para criar listas, executar diversas operações de forma repetitiva, etc. Tomadas de decisão podem ser

'&*

� �  























utilizadas na criação de suas próprias funções, conforme será visto mais adiante. A utilização dessas ferramentas no MATLAB é bastante semelhante ao uso em linguagens de programação populares.

�   



  

 



O 17? pode ser usado quando se quer repetir certas operações um número bem definido de vezes, atribuindo os valores de uma lista a uma variável. Isto pode ser entendido mais facilmente através de um exemplo.

Para se criar uma lista que tenha ordem de formação mais complexa do que o visto na seção 2.5, podemos usar o comando 317?

*+*

(

0

*+*

=

%

0

*+*

17?  �



317?  �





 , 



 . 9*><,D(/.-0

(

=

&( 0

=

=

 70

> 6

7>6

*+* 







9

"

9

!

9

"



%!#

9 9

" %!

 

9

"$

 9

"

99

9

" %+



9

" %!#

9

"$

 

%

9

" + +

Note que as operações compreendidas entre um par for end são executadas em cada iteração. Descubra o por quê do uso do sinal de ponto e vı́rgula no final das expressões. O que aconteceria se não fosse usado o ponto e vı́rgula?

�   



  

 

$ &

O comando & *)) é usado de forma análoga ao comando 17? . A diferença fundamental é que com o uso do & *)& os comandos são repetidos até que se satisfaça uma determinada condição. Veja no exemplo a seguir.

*+*

 

%

0

*+*

>*  0

*+*

& *)&  29

"$%

6,^>. > )   0

'& 

� � 







  

 



>* )>* 0

  *     

0

7>6

*+*





%"

9999

%"

9999

-"$#%

99

"$%

999

� 



    



$ 







 ' 



$

& 

É usado de forma análoga a outras linguagens de programação. Não há muito o que explicar já que deve ser do conhecimento de todos. Repare que deve terminar com o comando 7>6 . Exemplo:

*+*

17?Z4 �



317?Z> �



*  4 + >



, 4



>.  0

  9*  4 7>



, 4



>.

0

  9



, 4



>. 960

7>6

7> 6

7>6

*+* 





9 

9 9 

Note que se houver apenas duas possibilidades a verificar deve-se usar if-else-end, enquanto que se houver três ou mais possibilidades a verificar deve-se usar if-elseif-...-elseif-else-end.

@BA  \

P

UK

P

I WK

M P

Q

O MATLAB é bastante versátil para criação de gráficos em diversos estilos (bidimensional, tridimensional, barras, polar, etc.).

Vamos plotar a função co-seno com as listas  e  criadas na seção 2.5. Para gráficos simples bidimensionais deve-se usar a função !+ 12% .

'&+!

� � 







  

 



 !+ 12%7,D(

 =

.

 

Logo em seguida a esse comando, deve ser aberta uma nova janela gráfica com o gráfico da função desejada. Para se obter o gráfico com grades para facilitar a leitura, use a função # ?+*"6 1"> . Note que o MATLAB ajusta os eixos automaticamente.

−5 0 5 10 15 20 −1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Como salvar o gráfico num formato que possa ser inserido por um editor de textos? Na janela do gráfico, é só clicar no menu File  Export. . . e escolher o formato desejado. Ou, se preferir trabalhar na janela de comandos, use a função ! ?8*>% adequadamente. Dê um  "! ! ?+*> % .

Para adicionar tı́tulos aos eixos e ao gráfico, siga o modelo abaixo:

 Z()$)3 4,

-

*"(1'(

.

 

=

)$)3 4,

-

*"(1

=

.

  %8*,%3&3,

�

?$ +*&<&15<&19-,D(5.

.

Para plotar mais de uma curva ao mesmo tempo:

 !+ 12%7,D(

 = 

(



9*><,D(/..

'& #

� � 







  

 



−5 0 5 10 15 20 −1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Eixo x

E ix

o y

Gráfico cos(x) e sen(x)

cos(x) sen(x)

Outras opções da função !+ 12% , tais como cor ou tipo da linha do gráfico, sı́mbolos dos pontos plotados, podem ser vistas no  "! correspondente. Procure também alguma informação sobre legendas (  "!:) # 7> 6 ).

Em seguida, veremos um exercı́cio muito importante. Modifique o número de elementos da lista  para um valor bem menor que 50 e, depois, para um valor bem maior que 50. Note bem o que acontece com a curva <&1 9-,D(/. plotada.

 Z(  *,>89,!$<)3, 7! *

:

9



92.-0

 

=

<&1 9-,D(/.-0

 !+ 12%7,D(

 =

.40 # ?+*"651">

−5 0 5 10 15 20 −1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

 Z(  *,>89,!$<)3, 7! *

:

9



999/.-0

 

=

<&1 9-,D(/.-0

 !+ 12%7,D(

 =

.40 # ?+*"651">

'&



� � 

 





  

D





 























 



−5 0 5 10 15 20 −1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Note como a curva com poucos pontos ficou bem distorcida. Isso é bastante importante em aquisição de sinais: o número de dados amostrados deve ser suficiente para revelar a informação correta do sinal. Este tópico deverá ser visto em detalhe no decorrer das atividades do laboratório.

@BA S[F

P

IUK

P

G F

P

IUK

P

]K

P

Q ]G

FKYI3K

"

S KYI

"

X'

P

Entre as diversas atividades do curso, estaremos aquisitando dados experimentais através de uma placa de aquisição conectada ao computador e controlada por funções programadas usando o software LABVIEW  . Desta forma, será gerado um arquivo em formato ASCII com a tabela dos dados numéricos aquisitados.

Após esse processo, você deverá realizar diversas análises com os dados utilizando o MATLAB. Existem diversas maneiras de se importar os dados de um arquivo usando o MATLAB.

Analogamente, você pode querer salvar (exportar) um conjunto de dados obtidos no MATLAB para uso posterior.

Existem várias maneiras de importar ou exportar dados no Matlab. Já vimos anteriormente o uso das funções

9$ 

e  1)$)6

para salvar e carregar todas as variáveis de uma seção de trabalho. Verifique agora  2! 9$* e 3 "!  1)$)6 . Com uma pequena variação, é possı́vel selecionar as variáveis a salvar ou carregar. Para salvar somente os dados  e  em arquivos com formato binário que só o Matlab entende:

*+*

(  *,>89,!$<)3, 7! *

:

9



992.40

*+*

=

9*,>7,D(/.-0

*+*

9$  6 $)6319*

"

4+$% (

=

Para recuperar esses dados, basta usar o comando  1&$)6

:

*+*

<&) $&?

*+*

 1)$)6 6 $)6319*

"

4+$% (

=

Para salvar ou recuperar dados em formato texto (ascii), o procedimento é um pouco mais complicado. Se você já verificou "! 9)$  , então entenderá o procedimento seguinte:

'&+%

� � 

 





  

D





 























 



*+*

9$  6 $)6319*

"

% (&% (

=

 $9 < * * %$)89

Abra os arquivos ‘dados1.mat’ e ‘dados1.txt’ com um editor de textos qualquer e observe a diferença.

A recuperação dos dados é feita da seguinte forma com a função  1)$&6 :

*+*

<&) $&?

*+*

 1)$)6 6 $)6319*

"

% (&%  $9 < * *

*+*

&+1

1 ) ? $)?+*7$)8)9'$)? ,�

6 $&619*

*+*

( &6 $&619* ,



� .-0

*+*

=

&6 $&619* ,

:

� .-0

Repare que os dados são inicialmente guardados na variável com o mesmo nome do arquivo mas sem a extensão (dados1).

Existe uma outra maneira de se exportar/importar dados em que se pode ter um controle melhor do formato do número a ser salvo/importado em/de um arquivo. Veja em seguida.

A primeira operação a ser realizada é usar o comando 1"!> para criar um arquivo e/ou para disponibilizar um arquivo já criado para um dos seguintes modos: para escrever ou para ler ou para incluir dados. Aproveite e dê um  "! 12!7> .

Por outro lado, a última operação com um arquivo deverá ser seu fechamento com o comando 3<  19 .

O comando 1"!37> , se usado corretamente, deverá retornar um número inteiro maior ou igual a 3, número esse que representará a identificação do arquivo aberto.

Tomemos como tarefa armazenar os elementos de duas listas  e  de mesma ordem num arquivo a ser denominado, por exemplo, “dado1.d”. Obviamente, deveremos primeiro criar as listas e o arquivo:

*+*

<&) $&?

*+*

(  *,>89,!$<)3, 7! *

:

9



992.40

*+*

=

9*,>7,D(/.-0

*+*

1"!>7,

6 $&61 

"

6





.

$7> 9



O arquivo denominado “dado1.d” foi criado no diretório atual (verifique a criação do arquivo), e foi atribuido o valor 3 como identificação deste arquivo. Com isso, sempre que se desejar fazer referência ao arquivo basta referenciá-lo com o valor 3. Se for criado mais um arquivo antes do fechamento do ‘3’, ele receberá a identificação ‘4’, e assim por diante.

Em seguida, deveremos exportar os dados para o arquivo ‘3’. Existem diversos comandos para se executar essa tarefa, todos muito semelhantes aos comandos da linguagem C. Uma listagem completa das funções de entrada/saı́da do MATLAB pode ser obtida com 3 "!T*)1*)> . Neste texto vou mencionar apenas a função )! ?+*> % , que penso ser a mais adequada para nossas necessidades. Vejamos como utilizá-la:

 -.0

� � 

 





  

D





 























 



*+*

17? >* � )7>#&% 7,D(/.

&! ?+*>% 6,

6 >







>



(6,^>.

 =

,^>..-0

7>6

*+*

3<& 1 93,



.

$7> 9

9

É muito semelhante à linguagem C.

 significa formato de número real (ponto flutuante), enquanto que



> significa nova linha. Outros formatos e comandos possı́veis podem ser encontrados no  "! correspondente. Informe-se também sobre a função &7>#&%& .

Outra maneira seria utilizar uma matriz � formada das listas  e  :

*+*



 (70

=

0

*+*

)! ?+*,>%6,

 







>

 

.-0

*+*

3<& 1 93,



.

$7> 9

9

Veja que foi criada uma matriz � com as lista  e  e essa matriz foi armazenada no arquivo. Observe também, no exemplo seguinte, o controle do formato de saı́da dos números reais

(elementos das listas):

*+*

*"6 7> %8*  $&?; ) * +1 !1"!37>7,

6$)61

-"

6



$

.40

*+*

)! ?+*,>%6, *26 7>%8*  $)?;*) * 31

 %-"





%



%

"





>

 

.-0

*+*

3<& 1 93, *"67>%8*  $)?; ) * 31.-0

Para importar dados de um arquivo em formato ascii, basta usar a função +9 <$7>  . Por exemplo, para importar os dados do último arquivo “dado2.d” para plotar, pode-se proceder da seguinte forma:

*+*

<&) $&?

*+*

*"6 !31"!7>7,

6 $)61

"

6



?

.-0

*+* 

!39<$7> 6, *"6











*>  /.40

*+*

3<& 1 93, *"65.-0

*+* 



0

*+*

(



, �



*.-0

*+*

=



, �



.-0

*+*

!+ 12%7,D(

 =

.40 #?+*"651">

Note que apesar de o arquivo “dado2.d” conter 100 linhas e 2 colunas, não é possı́vel armazenar esses dados nessa forma numa matriz



de ordem &+0(0  - . A melhor opção é proceder como no exemplo

 - &

� �� 







 

 











acima e armazenar numa matriz 

-  &+0(0 . Isso é devido à ordem de leitura dos dados pela função 39<$7>  .

O último parâmetro (terceiro) usado na função 39<$7>  ( 

*>  ) contém duass variáveis que indicam o número de elementos a serem lidos no arquivo em questão. Apenas a variável da direita pode receber o valor *,>  , que significa ‘infinito’ e foi utilizado para que a importação de dados fosse até o fim do arquivo.

Se não for utilizado esse terceiro parâmetro, a matriz 

será um vetor coluna contendo todos os dados do arquivo. Teste você mesmo.

@BADC &ZU3XD\ X$ K

P

F

P

\DX 

P

S[X

P

Q

Nesta seção veremos como trabalhar com funções polinomiais. A manipulação de polinômios é feita, basicamente, com seus coeficientes formando uma lista (vetor) horizontal. Por outro lado, as raı́zes de um polinômio formam uma lista vertical.

Vejamos um exemplo simples, o polinômio  

   ! , o qual tem como raı́zes os valores - e / . Sua representação pode ser feita com a lista !  . Repare a ordem de disposição dos coeficientes:

*+*

!    

%



! 

 

%



Suas raı́zes podem ser encontradas com a função ?31 12%+9 :

*+*

?  &?31 12%+9-,^! *.

? 



Descubra o que faz a função !+1  =

. Qual seria o resultado de !+1 =

, 

0



/. ? Em seguida, veremos como determinar o valor de uma função polinomial para um determinado

valor da variável de entrada. Para o mesmo polinômio  & definido acima, qual seria o resultado se  .%* - ? Basta usar a função !81 

=

$ .

*+*

  !81 

=

$4, ! 

%+ "$

.

 

-"$

  !99



Mais interessante do que isso, a variável  pode ser uma lista ou matriz. Veja como plotar a função  & para valores entre



-.0 e -.0 :

*+*

(  *>89,!$<3, 

9



9

 

992.-0

*+*

=

 !81 

=

$4, ! 



( *.-0

*+*

!+ 12%7,D( 

 =





#

.-0 # ?+*26 1">

*+*

()$)3 4,

(

.

*+*

=

)$)3 4,

(





%

(  

.

 -(-

� �� 







 

 











−20 −15 −10 −5 0 5 10 15 20 −100

0

100

200

300

400

500

600

x

x2 −

5x +

6

Diversas operações podem ser efetuadas entre dois polinômios: soma, subtração, multiplicação, divisão. Para soma e subtração deve-se considerar as listas dos coeficientes dos polinômios e efetuar a operação conforme visto na seção 2.5.1. Para multiplicação deve-se usar a função <&1"> , enquanto que para divisão a função 6 <&1"> .

Em todas as operações mencionadas acima, as listas devem ter número de elementos compatı́vel com a ordem do polinômio. Deve-se completar com zeros até que essa condição seja satisfeita. Além disso, no caso de soma e subtração, as listas devem ser de mesma ordem.

Por exemplo, para efetuar a multiplicação do polinômio  &   

   ! usado acima com o polinômio  - 



 # 



 & :

*+*

!

  9

#

9 9 

!

 9

#

9 9 

*+*

!



< 1"> , ! 



!

.

!



 

%







%



 

%



Mas, para executar a soma dos dois polinômios devem ser utilizadas listas de mesma dimensão:

*+*

!    9 9 9  

%



*&9"%$Z!  48176+* +*&<$)6$

!  

9 9 9  

%



*+*

!  !   !

! 

 9

#

 

% #

Por fim, veremos como determinar os resı́duos, polos e termos diretos de uma fração de dois polinômios no método da expansão em frações parciais.

 -./

� �� 







 

 











Dada uma fração de dois polinômios �

e   

, podemos decompô-la numa soma de frações parciais,

�



 

 





&











&

 



-











-

   

 







 

Para isso, usa-se a função ? 9 *"6*) , que retorna como resposta três listas: resı́duos, polos e termos livres. Por exemplo, para a fração de polinômios

� 



 





 



  %



 #



 &



 -



terı́amos a seguinte operação no MATLAB:

*+*

>)&4  

% #

>) 4



% #

*+*

6 7>* )!+1 

=

,   0 

/.

6 >,





*+*

 ?



!



  &?9*"6*)33, >)&4



6 7>.

?



!,









Ou seja, �



 



 - 



&



 -



-



 &

Note que neste caso o numerador é um polinômio de ordem maior que o denominador, resultando, portanto, num termo livre não nulo.

A função ? 9*26*) do MATLAB também serve para executar a operação inversa, ou seja, dadas as listas verticais dos resı́duos e dos polos e a lista horizontal dos termos livres, ela determina as listas horizontais dos polinômios do numerador e do denominador:

*+*

 >



6  &? 9 *"6*)3, ?



!



.

>,



% #

6





 - 

� � 



  



J

 









    



  





   



  



 ,





  





O MATLAB é uma ferramenta poderosa em controle e processamento de sinais, com várias funções especı́ficas. Entretanto, a maioria dessas funções só está disponı́vel com a compra de pacotes adicionais, chamados de “Toolbox”. Portanto, deve-se instalar o Control System Toolbox e o Signal Processing Toolbox.

Cada um desses pacotes contém um número muito grande de funções, incluindo tópicos bem avançados. Nesta apostila trataremos apenas das funções a serem utilizadas em nosso curso. Para uma abordagem mais detalhada, o estudante deve consultar a documentação de ajuda que vem com a própria distribuição ou os inúmeros livros publicados.

Deve-se levar em conta que houve várias modificações entre as versões antigas do MATLAB e as mais recentes. Diversas funções e uma ótima interface gráfica para o usuário foram acrescentadas. Em particular, a interface gráfica agiliza bastante o trabalho no projeto de elementos de controle.

 ADC  I

P M

GRQQ K S G U

P

]G QX K XDQ

Nesta seção, descreveremos algumas poucas funções para tratamento de sinais aquisitados. Basicamente, utilizaremos a transformada simples de Fourier para analisar o espectro de um sinal (conteúdo de frequência) amostrado.

No exemplo seguinte, com fins didáticos, faremos o caminho inverso: criaremos um sinal já sabendo de antemão as suas componentes em frequência. Seja um sinal no intervalo de tempo de & a &+0 dado pela equação:

 -











 







#







 

&*0



Esse sinal pode ser plotado como na figura abaixo. Pratique: como foi plotado o sinal em MATLAB? Defina um vetor de tempo variando de 0 a &+0 e contendo  & - elementos e determine  . Note que escolhemos um valor (512) que é potência de 2 como número de elementos porque o algoritmo interno do MATLAB para a função +&% (a ser utilizada mais tarde) é mais rápido nesse caso.

0 1 2 3 4 5 6 7 8 9 10 −10

−5

0

5

10

15

Para encontrar seu espectro de frequências (o qual já se pode determinar da equação acima), utiliza-se a transformada rápida de Fourier, dada pela função +&% ,

 -(

� � 



  



J

 









*+*

==

!&% ,

=

.40

Ao sinal, corresponde um tempo (perı́odo) de amostragem � 

dado pelo intervalo entre dois instantes de tempo sucessivos em que é feita a medida do sinal. No nosso caso, �



pode ser determinado de duas maneiras, pelo menos:

*+*

/

9 )%7,

. %7, *.

/

9

9

"

9



ou, então, considerando que tomamos 512 elementos no intervalo de tempo entre 0 e 10:

*+*

/

9 :,9 92.4,

%



*.

/

9

9

"

9



Ao perı́odo de amostragem � 

corresponde a frequência de amostragem  

:

*+*

9

),! * 

/

9

9





"

9

#

9

Lembrando dos conceitos do Teorema da Amostragem, a frequência de amostragem deve ser maior que o dobro da maior frequência do sinal sendo amostrado. Caso contrário, ocorre “aliasing”. Portanto, só devemos considerar o espectro de frequência até 



_(- . Só iremos plotar o espectro até a frequência máxima 

dada por:

*+*

>*

9

>,

 9

"$%+%



Com isso, note, também, que limitamos os pontos à metade. Definiremos o intervalo de frequência para o gráfico como:

*+*

  *,>89,!$<)3, 9



>



)7> #&%&7,^%. 

.40

Por fim, devemos lembrar que a transformada de Fourier resulta em valores complexos. Só nos interessa o módulo desses valores. Então:

*+*

==

!* $)89-,

==

, � &7>#&%&<,^%5. 

..-0

*+*

!+ 12%7, 

 ==

!



)

.

 -.!

� �

 



0 20 40 60 80 100 120 140 160 180 0

200

400

600

800

1000

1200

1400

Para analisarmos mais detalhadamente a região do espectro até 15 rad/s (equivalente a dar um zoom), utilizaremos a função

+*> 6

,

*+*

 !+*,> 6 ,  + 

%

.-0

*+*

!+ 12%7,  , 5.

 ==

!7, 5.



)

.-0 # ?+*"6 1">

*+*

()$)3 4,

�

?  ; )



>8<*7$



? $)6  9

.

0 5 10 15 0

200

400

600

800

1000

1200

1400

Frequência, rad/s

As novas versões do MATLAB contêm uma interface gráfica especial para análise de sinais, que pode ser aberta com o comando   . Experimente com a nova janela aberta.

 

Com o pacote Control System Toolbox é possı́vel resolver facilmente diversos problemas de controle. Nesta apostila só iremos tratar dos conceitos a serem usados no curso, e veremos somente sistemas de uma entrada e uma saı́da (SISO), lineares e invariantes no tempo (LTI). Uma listagem completa das funções desse pacote pode ser obtida com o comando   !"$# .

%'&)(+*

� �

 



No MATLAB, a representação de um sistema pode ser feita de três modos: com função de transferência; função zero-polo-ganho; espaço de estados. Só utilizaremos as duas primeiras representações.

Dado um sistema LTI, com condições iniciais nulas, representado por uma equação diferencial no domı́nio do tempo,

(� 



 ( 

 





&   (



   (



 � 



 

 





&  



  







sua função de transferência   

é obtida tomando a Transformada de Laplace:



 





(  +("!

$#



(%+(!

&  

'  

�





(







  

)









(�





 (*







   (

+





 (



Mostraremos duas maneiras de definir uma função de transferência nas versões mais recentes do MATLAB, fazendo uso da função % . Na primeira maneira, deve-se explicitar uma variável (



por exemplo) e, então, entra-se com a função:

*+*

9 )% ,

9

.

/

?$7>89  &?  ) >8<"%8*&1"> �

9

*+*

9 4,9





) 9 992.

/

?$7>89  &?  ) >8<"%8*&1"> �

9

               

9



 

9   99

Outra maneira é entrar em forma de dois polinômios, um para o numerador e outro para o denominador da função de transferência:

*+*

>)&4  9 0

*+*

6 7>*   

99 0

*+*

)% , >)&4



6 7>.-0

Ou então,

*+*

)% ,  9



 ,

99 5.-0

Para representar um sistema LTI com forma zero-polo-ganho, usa-se a função 

! . Para representar um sistema

&  

'  

, 



�+









 













-

 





















procede-se da seguinte maneira:

*+*



!  , 





 "+"+" 

4



 !  !

"+"+"

! >

/.

.-0

 -



� �

 



Por outro lado, uma vez definido um sistema, pode-se obter seus dados utilizando % 6 $)%$ ou 

! 6 $%$ . A função % 6$%$ retorna os vetores dos coeficientes dos polinômios formadores da função de transferência (

� 

e  #

). Enquato que 

!6 $)%$ retorna os vetores dos zeros e dos polos e o valor do ganho .

*+*

 >)&4



6 7> )% 6 $)%$3,

�6



.

>) 4

9 9 9

6 >,

 

99

Uma vez representada a função do sistema, pode-se determinar sua reposta no tempo a vários tipos de entrada utilizando a função correspondente. Verifique você mesmo para que servem as funções: 9"%7! , *;4!)89 , *> *,%8*$  , 9 *;4 , # >89*# , 92%7! *)> .

A resposta em frequência de um sistema pode ser obtida com as funções )+176  e 43$)?#+*> . Para explicitar as frequências mı́nima ( 





) e máxima (  

( ), dar o comando na seguinte forma: )+16 3,>#



)4 *>



)43$)(2. . As novas versões do MATLAB têm uma interface gráfica para controle. Para utilizá-la, primeiro

representa-se o sistema como visto acima. Então, dá-se o comando 2%8* 8*  . Deve-se abrir uma janela pedindo para selecionar um sistema a analisar. Após a seleção, abre-se uma nova janela em que se pode escolher interativamente as respostas obtidas para vários tipos de sinais de entrada. Esta é uma maneira bastante prática de trabalhar.

Além das funções contı́nuas vistas até agora, o MATLAB trabalha muito bem com funções discretas. Uma vez definido um sistema contı́nuo, ele pode ser discretizado usando-se a função <

6 , a qual pode realizar a discretização por vários métodos. Em versões antigas do MATLAB, usar a função <

64 ao invés. Para utilizar a função <

6 , deve-se entrar como parâmetros a função do sistema, o perı́odo de amostragem, e o método de discretização desejado. Dê um  2! <

6 . Por exemplo, para discretizar a função contı́nua  , definida acima, pelo método zero order hold,

*+*

� 

<

6 ,

�6

/

9

 

1"

.-0

Analogamente, emprega-se a função 6

< para converter um sistema de discreto para contı́nuo. Note que é possı́vel criar diretamente uma função discreta usando % ou



! bastando inserir mais um parâmetro que represente o perı́odo de amostragem �



. Veja nos exemplos abaixo:

*+*

� 

 &%6, >) 4



6 7>



/

9.-0

*+*

� 



! ,

7

!







/

9.-0

Uma outra maneira possı́vel para inserir uma função discreta é explicitar a variável ( � por exemplo) e o perı́odo de amostragem e definir a função na variável,

*+*



)% ,

 

/

9.-0

*+*

� 

 6,





.4,



 9

"

 )



 9

"$

.-0

Ainda com relação a funções discretas, descubra o que faz a função +*)2% .

 -.%

� � �   





   " 











&       "



 !

A função de transferência de malha fechada de um sistema é dada por: &  

'  

 



 

& 

  



 

onde H(s) representa um compensador e G(s) a planta. A equação caracterı́stica correspondente é:

& 

  



 

0

que pode ser representada em função do ganho ,

como:

& 

,

� 



#

0

Para obter o gráfico do lugar das raı́zes usa-se a função ? 1 < )89-, >)&4 

6 >. . Existe uma interface gráfica especial contida neste Toolbox para controle. Ela pode ser aberta

com o comando ?32%31 1  .



 















 

  







  



 



É conveniente criar suas próprias funções em situações em que se necessite executar certas operações repetidamente. E, também, a criação de arquivos script pode ser muito útil para evitar ter que digitar grande quantidade de funções na tela de comando. Portanto, a criação de funções e de arquivos script são recursos que devem ser utilizados para agilizar o trabalho.

A grande diferença é que ao invocar uma função ela trabalhará em background sem interferir nos comandos ou nas variáveis da janela de comando, enquanto que invocar um script é o mesmo que digitar linha por linha seu conteúdo na janela de comando.

As funções e arquivos script podem ser criadas em qualquer editor de texto, desde que ao salvar se use o formato text, ou no editor próprio do MATLAB. Para abrir o editor do MATLAB, clique no menu File e escolha a opção New  M-file. O arquivo de função ou script deve receber a extensão ‘.m’ e deve ser salvo no diretório atual de trabalho ou num diretório que faça parte do caminho (path) do MATLAB.

$ ADC !

"

 L

MONP

GRQ

A criação e a utilização de funções em MATLAB é muito similar ao procedimento usado em linguagens de programação. Imagine que você necessite criar uma onda quadrada. Abra o editor de texto e digite a função como abaixo e salve em formato texto com o nome ‘quadrada.m’:

*)>8<"%8*)12>  %

 =

 ; )$&6 ? $)6 $:, &!

 

% 9



%



>.



 

0

 

)? $ )&43$&17?)43$Z6#1">6 $ ;*)$)6 ? $&6 $

"



9&1� %

 =

; )$)6? $)6 $3,>&!

 7

% 9



%



>.

9 $ 17? 9 6  9$ 



6 $Z6$ *)><$ 1 9$ 1�

"/(0

� � �  











%  *&9"%$ < 1,4 $  17? 96 %74!+1

=

 *&9"%$ < 1,4 $  17? 96 %>89$ 1 <&17?? 9,!+12> 6 7>%9

9 !$&?



$243% ?19Z6 '7>%? $&6 $'6 $  ) ><$ 1 9$1�

 ! %>89$ 1 6  ! *&<&1

!&? 



1761Z6 $ 1"> 6$

%29 *> 9"%$7>% *,> *&<*7$

% 5*> 9"%$7>%&8*>$ 

> > ) 43)?1 6  !+1">%31 96$ *)><$ 1#1"> 6$ ; )3$)6 ? $)6$ 691 $&619

>#6   9)? 43$*&17? 1 ):*# )$  $

2%$ %* :,^% )% 92. 4,^> *.-0

% ,*. )% 960

! !



0

43*)1!)?



1761

1? 

� >

% , 5. )% ,  *.  2%$ %<0

*  ? 24<,<)*)4,,D% , 5. )% 92. "!!.



., + 9

=

, 5.  &!<0

 9

=

, 5. &!<0

7> 6

7>6

Note que a função tem duas saı́das (  e  ) e quatro parâmetros de entrada (Vp, P, t0, tf, n). Todas as linha que começam com o sı́mbolo % são utilizadas para "! . Assim, se você estiver

na janela de comandos e digitar  "! ; )$)6? $)6 $ as mensagens de ajuda contidas nas linhas % aparecerão.

Note que se uma função tem apenas uma saı́da então ela pode ser definida na primeira linha do arquivo ‘.m’ correspondente como, por exemplo: *)>8<"%8*)12>

$%317?+*$ 4, >. . Ou seja, sem os colchetes.

$ A @  I

"

X'

P

Q Q

M

I+X F U

Se você desejar usar a função ‘quadrada’ definida anteriormente para plotar vários tipos de onda quadrada, então será conveniente criar um arquivo script para tornar o processo menos trabalhoso. Abra o editor de textos e crie o arquivo com nome ‘script1.m’ como abaixo:

9<2?+*!% !$&? $!8 12%$)?51">6 $9 ; )$)6 ?$)6 $9Z6+*)?39$9

*>!)% ,



1,43 < 1 6 $ *"%)? $ <$ 1!$)? $Z!+ 17%$)?51"> 6 $9 ; )3$)6 ? $)6$9



>&!)?&%

-.&/ -0

!3$)? $

"/1&

� � �  











<&12>%8*>)3$)?

.

(  3*> !) % ,

-

> %? 51 $  17?#61 !)?



1761Z6 $&17?4+$Z6  1"> 6$ �

.

(

3*> !) % ,

-

> %? 51 $  17?#61 *>892%$7>%5*> *&<*7$ �

.

(



3*> !) % ,

-

> %? 51 $  17?#61 *>892%$7>% +*,>$ �

.

(+ 3*> !) % ,

-

> %? 51 $  17?#6 $Z%7> 9$ 1Z6  ! *&<&1�

.

(

%

3*> !) % ,

-

> %? 51 > )&43)?31 6!+12>%319 6 9)1 $)61�

.



=



 =

; )$)6? $)6 $3, (+



( 



(

:

(

6

(

%

.-0

!+12% ,

=



 =

.-0># ?+*"6:12><0

0

+*> !)%7,

9)1 $ 4816+* +*&<)$)? $9 9 <$ )$9

�

1)

.

 

9

.

* 

0

+

�: 

0



9

9 <$)$! 3*>!)% ,

-

>%?   (4 *>#()43$)(

=

4 *>

=

43$&( #74:<&1<,%9 �



>

.

$)(+*&94, 9 <$)$2.-0

7>6

0

+*> !)%7,

9)1 $#?16 $)? 1 9 <7?+*!% >+1 $2437>%

�

1)

.

 

9

.

* 

0

+

�: 

0



9

?*) >:9 <2?+*,!% 

7>6

Diversas funções utilizadas no arquivo acima merecem algumas considerações. A função *,> !)% é utilizada para imprimir uma mensagem na tela e pode ou não esperar pela entrada de algum dado (exemplo, (  3*>!)% ,

-

>%?  ( �

. . No caso de se querer utilizar uma variável do tipo string, colocá-la entre aspas:

0

9,!819"%$! +*> !)%7,

9)1 $T<&1">%8*,>)$)?

�

1)

.

 

9

. . Note também que



> é utilizado (como na linguagem C) para fazer o cursor ir para a próxima linha. Dentro do script foi feito uso da função ‘quadrada’ definida anteriormente. Os sı́mbolos ‘ + ’ e ‘



’ são operadores lógicos.

Operador Descrição + identidade 

OR 

AND  NOT

Por fim, note que é possı́vel reinicializar o trabalho do script bastando invocá-lo de dentro do script ( ?*) >:9 <2?+*! %  ).

"/ -

Até o momento nenhum comentário
Esta é apenas uma pré-visualização
3 mostrados em 32 páginas