MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf ·...

32
MATLAB para o Laborat´ orio de Automac ¸˜ ao II Ricardo Cury Ibrahim (vers˜ ao preliminar)

Transcript of MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf ·...

Page 1: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

MATLAB para o Laboratorio de Automacao II

Ricardo Cury Ibrahim

(versao preliminar)

Page 2: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

�������������� �����������

1 Introducao M-3

2 Conceitos Gerais M-42.1 Operacoes matematicas simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . �����2.2 Armazenando dados em variaveis . . . . . . . . . . . . . . . . . . . . . . . . . . . ��� �2.3 Formato dos numeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���"!2.4 Utilizando funcoes matematicas elementares . . . . . . . . . . . . . . . . . . . . . . ���"!2.5 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���$#

2.5.1 Operacoes matematicas com listas . . . . . . . . . . . . . . . . . . . . . . . ��� %2.6 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���'&(&

2.6.1 Operacoes matematicas com matrizes . . . . . . . . . . . . . . . . . . . . . ���)&*�2.7 Loops e tomadas de decisao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���'&*�

2.7.1 Loops usando for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���)&+�2.7.2 Loops usando while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���)&+�2.7.3 Tomadas de decisao usando if-else . . . . . . . . . . . . . . . . . . . . . . . ���)&*!

2.8 Plotando graficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���'&+!2.9 Importando/exportando dados de/para um arquivo . . . . . . . . . . . . . . . . . . . �,�)&+%2.10 Utilizando polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ��� -(-

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

3.2.1 Metodo do lugar das raızes . . . . . . . . . . . . . . . . . . . . . . . . . . . ��� /.0

4 Criando Funcoes e Arquivos Script M-304.1 Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���"/(04.2 Arquivos script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ���"/1&

�,�$-

Page 3: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

������������ ������� �� � ����� ���������

Esta apostila tem a intencao de ser um guia rapido para a utilizacao do MATLAB em atividadesdas disciplinas PMC503 e PMC526, ou seja, alguns topicos de controle e alguns poucos topicos deprocessamento de sinais. Ela nao pretende simplesmente listar os diversos comandos do MATLABe dar alguns exemplos. O objetivo principal e inserir alguns elementos basicos a partir dos quais sepossa progredir de maneira autonoma, fazendo com que o aluno se torne elemento ativo no processode aprendizagem. No caso do MATLAB, deve-se estudar praticando num micro com o softwareinstalado.

Lembre-se sempre que um problema complexo e, na verdade, um conjunto de varios problemassimples. O esforco empregado na boa assimilacao de conceitos basicos sempre e recompensado.Apesar disso, e fato que uma pessoa so pode ter bom aproveitamento no estudo de um determinadoassunto se possuir motivacao para tanto.

No caso desta disciplina, Laboratorio de Automacao II, e importante considerar as inumerasaplicacoes 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 sedefronta com os conceitos de controle, seja para um projeto ou mesmo para simples uso de umequipamento. Tome como exemplo esse grande mercado potencial que e o de casas com equipamentos“inteligentes”, que sera, provavelmente, a grande sensacao junto com a Internet. Esses equipamentoscompreendem desde eletrodomesticos ate sistemas de alarme, de iluminacao, de condicionadores dear, etc.

Imagine que apenas uma pessoa esteja numa sala, usando um computador, e ligue o arcondicionado para se aquecer ou refrescar. Um bom sistema de controle, acoplado a sensores, poderiadeterminar a posicao desta pessoa e planejar o funcionamento do equipamento de forma a que apenasnas proximidades da pessoa o ar tivesse a temperatura desejada. Ou, ao contrario, para uma sala comvarias pessoas se movimentando, o sistema deve se encarregar de manter a temperatura uniforme portoda a sala.

Alem disso, tradicionalmente, automoveis, avioes, navios, robos, foguetes, satelites,equipamentos medicos, processos industriais diversos sao grandes mercados para sistemas decontrole. A lista de aplicacoes e longa.

Como se nao bastasse, areas que tradicionalmente nao tinham nenhuma relacao com sistemasde controle agora se beneficiam com o seu uso. Diversas instituicoes financeiras aplicam tecnicasde controle para analise de investimentos. A area de humanidades faz uso frequente de conceitossofisticados de controle para elaboracao de softwares de traducao de textos para outros idiomas.

Por outro lado, o MATLAB se tornou, provavelmente, a ferramenta mais popular no mundo inteiropara quem trabalha com controle. Existem inumeros livros publicados sobre o uso do MATLAB.Alem disso, as novas versoes de livros didaticos classicos na area de controle ja incluem exercıciospara serem resolvidos com o MATLAB.

Existem versoes do MATLAB para os mais diversos tipos de sistemas operacionais. Praticamentetodos os comandos descritos nesta apostila para serem executados internamente ao ambienteMATLAB devem valer para qualquer plataforma. Entretanto, comandos para ler e salvar arquivosdevem ser diferentes. Esta apostila descrevera comandos validos para o sistema operacional MicrosoftWindows, que e o mais utilizado atualmente.

Por fim, gostaria de lembrar que sempre e muito importante consultar livros textos no assunto parareferencias mais detalhadas.

�,� /

Page 4: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� ����� � �� � ����� � � �� � �� ��� ��� � �������� � �� � ��� �� ���� � � � ���

Esta secao apresenta conceitos basicos do MATLAB para aplicacao geral. A assimilacao dessesconceitos e fundamental para a boa utilizacao do software, constituindo um ferramental basico de usofrequente.

E interessante observar que MATLAB e uma abreviacao da juncao das palavras inglesas Matrix eLaboratory. Note, entao, que o MATLAB existe basicamente para manipular matrizes.

Observacao importante: o tipo de fonte exemplificado abaixo sera usado sempre que fornecessario indicar um comando a ser usado no ambiente MATLAB. Entende-se por ambienteMATLAB a janela para se digitar comandos, que e aberta ao se iniciar o programa. Ao iniciaro programa MATLAB por meio de seu ıcone de atalho ou clicando a sequencia INICIAR �PROGRAMAS � MATLAB � MATLAB, abre-se uma janela para entrada de comandos. Todosos comandos para execucao de alguma atividade devem ser digitados em frente ao prompt ��� .

������� �"!#�����"!����!�$�%&����'�)(+*,%

O primeiro comando a ser apresentado e tambem um dos mais importantes, pelo menos dentrodaquela perspectiva de que o aluno deve ser o mais autosuficiente possıvel. E o comando �����"! . Bastadigitar ��� �"! seguido do nome de algum comando que se deseja obter informacoes e apertar a tecla-�.�/�-�0

. Experimente com

������� �"!#!+��12%Uma forma mais conveniente de usar o ��� �"! do MATLAB e abrindo uma janela propria de �3� �"! .

Do menu, escolha Help e selecione Help Window. Na nova janela aberta pode-se encontrar diversostopicos de ajuda organizados por um determinado tema. Tente abrir a tabela de �����"! para operacoeselementares com matrizes ( � �"43$�% ). Obviamente, uma outra forma de se obter ajuda nesse tema e daro seguinte comando na janela de comandos:

������� �"!5� �"43$�%Por outro lado, se estiver disponıvel a opcao Help Desk(HTML) no menu Help, sera aberto um

sistema bem mais complexo de ajuda no formato html no seu browser.Utilizando o comando ��� �2! sem argumentos fara com que sejam listados todos os topicos gerais

de ajuda, incluindo o Simulink e o Toolbox.Outra forma bastante pratica de se aprimorar no MATLAB e executar alguns programas demos ja

incluıdos no pacote. Use o comando ��� �2!#6 �7481�9 para obter uma listagem dos demos com funcaogeral. Ou use o comando ��� �"!:9�*;4�6 �2481�9 para uma listagem dos demos do Simulink. Experimentetambem ��� �"!=<&1"> %�?�1�� , e descubra quais os demos do Control Toolbox.

Para rodar um demo basta digitar o seu nome apos o prompt, na janela de comando, e seguiras instrucoes proprias

@BADC E�FHGJI3KHLMONP GRQ�STKVU�GJS WKVU3X M KYQZQ�XDS[F]\^GRQOperacoes matematicas simples podem ser realizadas diretamente na janela de comandos com o

uso dos seguintes caracteres: soma (+), subtracao (-), multiplicacao (*), divisao ( _ ou ` ), potencia (ˆ).Exemplo:

�,�"�

Page 5: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ����� � ��� � � � � �� � �� ������ � � � � ���� ���

$7> 9��

E importante saber qual a ordem de precedencia dos operadores mencionados acima. Para tanto,teste voce mesmo com varios exemplos para descobrir a ordem. Um dos testes para saber qual aprecedencia entre � e

�poderia ser calcular � � ��� . Note que o uso de parenteses pode alterar a

precedencia 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 voce ja deve ter reparado que muitas vezes o help de algum topico e muito longo e a

informacao rola pela tela sem parar. Existe uma maneira de se apresentar a informacao de forma queao se preencher uma tela o help pare e espere por um novo sinal para apresentar a tela seguinte. Bastausar o comando 481�? � . Tente:

��� 4817? � 1">������� �"!:1"! 9

Para retornar ao modo default, de rolagem sem parar, e so usar o comando

��� 4817? � 1����E claro que sempre se pode usar o mouse para rolar �����

@BA @ � I+STK�� G���K���� P �]K�� P Q GJS �YKYI+X WK �OGJXDQArmazenar dados em variaveis e uma maneira muito util de tratar com operacoes mais complexas.

A associacao de um determinado valor a uma variavel e bem simples:

���'$!� �"$#�%$&�

�"'#�%

que associa o valor -�� #(� a variavel ( .Podemos ter tambem:

����)*��$!�+� "$%),�

#-"$+%

Se voce esquecer e quiser relembrar o valor armazenado numa determinada variavel, basta digitara variavel em seguida ao prompt:

���'$$&�

�"'#�%

�,�$�

Page 6: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� � � � � � � ���� � � �� � ���� � � �� � �� ��� � ������J� � � � ��Para saber todas as variaveis ja usadas, basta usar o comando �&�+1 . Experimente definir diversas

variaveis com diferentes valores e use o comando �&�+1 . Desta forma, ���+1 e uma palavra reservada enao deve ser empregada para armazenar suas variaveis.

Algumas regras devem ser seguidas para definicao de variaveis.

� o nome da variavel deve sempre comecar por uma letra

� o nome da variavel pode conter letras e numeros, mas nao se deve usar os sımbolos especiais(����� ������� ��%+< " )

� o MATLAB e sensıvel ao uso de letras maiusculas e minusculas. ��$ ��1�? �+# , ��$ ��17? �+# e ������� 0 �+#sao tres variaveis diferentes.

� a variavel pode conter ate 19 caracteres. Mas note que esse valor pode variar com as novasversoes do MATLAB.

Algumas variaveis ja sao predefinidas e nao podem mais ser utilizadas. E o caso, por exemplo,de ��� que e a razao do perımetro de uma circunferencia pelo seu diametro, de � ou � que representam� � & .

Para deixar de usar uma determinada variavel numa secao do MATLAB, basta usar o comando<&�&��$)? seguido do nome da variavel que se deseja excluir da memoria.No MATLAB e possıvel salvar em arquivo todas as variaveis definidas num determinado trabalho

para uso posterior. Para tanto, basta clicar no menu File e selecionar Save Workspace as. . . parasalvar sua secao de trabalho atual. As variaveis podem ser recuperadas usando a opcao Load no menuFile.

@BA � ! P I+STKVU P � P Q��'W" STGRI P QO MATLAB pode utilizar numeros em diversos formatos. Uma listagem completa pode ser obtida

usando o comando �����"! �317?�43$�% .O formato default e o ��17?�4+$�%:9,�+17?&% , em que numeros reais sao mostrados com 4 algarismos

apos 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%$ & U�X \DX � K���� P(' " � LMONP GRQ�STKVU�G S WKVU�X M KYQ GJ\^G STG�� U�KYI3GRQO MATLAB contem diversas funcoes matematicas elementares (trigonometricas, para numeros

complexos, logarıtmicas, e numericas) que sao muito uteis em varios tipos de aplicacoes. Consulte ohelp para funcoes matematicas elementares (uma maneira e usar o comando �����"! �����*)�> ) para umalistagem completa.

Para o nosso curso, algumas funcoes podem ser destacadas. Pratique com elas +Experimente com as seguintes funcoes:

$�) 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(/.-098;�?&%�,D(/.40 ?��24<,D( �>= .-0 ?�1�)�> 66,D(/.40 <)��*)�4,D(5.-0 ����1�1�?6,D(/.-0 9�*,>7,D(/.-0 $�9 *�>7,D(/.40 ��%+< "

�,� !

Page 7: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ���; � � � �Entre um numero complexo qualquer, como no exemplo abaixo, e experimente com as diversas

funcoes pertinentes ( $�)89-, (/. , $7> #��)�3,D(5. , <&1">�13,D(/. , ? ��$ � ,D(/. , *;4+$*#6,D(/. )

����>8<*� ���!� � � *>8< � �� � " 9�9�9�9 � �-" 9�9�9�9�*Descubra se os argumentos das funcoes trigonometricas como 9�*�><,D(/. , <&1�9-,D(5. , %�$7>7,D(/. devem

ser em radiano ou em grau.

@BA�� � X^Q�U�KYQUma lista ou um vetor e uma colecao de dados de um mesmo tipo e unidimensional, ou seja, a

cada elemento se pode associar um ındice unico. A lista e um dos elementos mais uteis no MATLAB.A maneira mais simples de se criar uma lista no MATLAB e escrevendo seus elementos um a um

separados por vırgula ou por espaco dentro de colchetes.

��� � � �� � :� �)()!<, �*. � ! * � *�� � �� �" 9�9�9�9 �"'# � � � � " ��� ��� 9 � � " 9�9�9�9�*ou entao,

��� � � �� � �)(&!7, �*. ! *'*�� � �� �" 9�9�9�9 �"'# � � � � " ��� ��� 9 � � " 9�9�9�9�*Note que esta e uma lista (ou vetor) horizontal. Para criar uma lista vertical (coluna), basta separar

seus elementos por ponto e vırgula.

��� � � �� � 0 �)()!<, �*.-0 ! *-0�*�� � �� �" 9�9�9�9�"'# ��� ��-" ��� ���

9&� � " 9�9�9�9�*Ou entao, use o sinal de apostrofo para representar a transposta do vetor linha em seguida ao sinal

de ponto:

��� � � �� � �)(&!7, �*. ! *'*� "*� � �� �" 9�9�9�9

�,�$#

Page 8: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ���; � � � ��"'# ��� ��-" ��� ���

9&� � " 9�9�9�9�*E importante observar que se nao fosse usado o sinal de ponto antes do apostrofo o resultado seria

o conjugado da transposta, no caso de listas com numeros complexos. Verifique voce mesmo +Utilizaremos, em seguida, um exemplo muito comum nos livros sobre MATLAB. Imagine que se

queira plotar uma determinada funcao, co-seno por exemplo. Escolhe-se um determinado intervalo deinteresse. Diversos elementos compreendidos no intervalo constituem uma lista, no eixo horizontaldo grafico a ser plotado. Entao, para cada elemento, calcula-se o valor correspondente da funcaodesejada. Essa operacao formara uma outra lista (com mesmo numero de elementos) de valores aserem plotados segundo o eixo vertical.

Digamos que se queira plotar a funcao 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 e usando a funcao � *�>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 50elementos fossem mostrados na tela. Tente usar o mesmo comando sem o sinal de ponto e vırgula eveja o que acontece.

Em seguida, veja como e pratico o uso de listas em MATLAB: para calcular o valor da funcaoco-seno para cada elemento da lista basta usar o comando

��� = ��<&1 9-,D(/.-0Desta maneira, foi criada uma nova lista � tambem com 50 elementos.A cada elemento de uma lista corresponde um ındice. O ındice do primeiro elemento sempre e &

(e nao zero). O primeiro elemento da lista � (��� _(- ) pode ser mostrado com o comando:

���Z(6, �*.$7> 9��

��� "$%+# 9 �Analogamente, o quinto elemento da lista � e:

��� = , % .$7> 9��

9 " � 9Tambem e possıvel utilizar a notacao 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 ultimo elemento e ointervalo constante de variacao entre elementos subsequentes, sera mostrada em seguida. Vamos criaruma lista - de numeros reais entre & e 0 com espacamento

� 0*� & . Isto e feito da seguinte forma:

�,� �

Page 9: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ���; � � � ���� � � ��� ��9 " ���>9� �

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

� " 9�9�9�9 9 "$ 9�9�9 9 " ��9�9�9 9 "'# 9�9�9 9 " ��9�9�9 9 "$% 9�9�9 9 " ��9�9�9� 1���)&4 >89 �Z%&��?�1�)�#)� �+�

9 "$� 9�9�9 9 "$ 9�9�9 9 " ��9�9�9 9����������� ��� ���������� �������� !�#"����$ � ��� �%� � &$�'�(���

A grosso modo, as operacoes podem ser divididas em operacoes com escalares (um valornumerico simples) e operacoes entre listas.

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

��� ��9�) � ���$7> 9��

� 1���)&4 >89 � %&��?�1�)�#)� # �" 9�9�9�9 � " 9�9�9�9 #-" 9�9�9�9 � " 9�9�9�9 %�" 9�9�9�9 � " 9�9�9�9 � " 9�9�9�9

� 1���)&4 >89 �Z%&��?�1�)�#)� �+��" 9�9�9�9 � " 9�9�9�9 9 ��� " 9�9�9�9

���Por outro lado, as operacoes matematicas entre listas sao realizadas elemento a elemento. Por

exemplo,

*+* � � ��9,� 9 " ��� �� � �

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

9 9 " ��9�9�9 9 " 9�9�9 9 "'� 9�9�9 9 " ��9�9�9 9 "$% 9�9�9 9 " ��9�9�9� 1���)&4 >89 �Z%&��?�1�)�#)� �+�

9 "$# 9�9�9 9 " ��9�9�9 9 " 9�9�9 � " 9�9�9�9*+* � �*� �$7> 9��

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

� " 9�9�9�9 9 " ��9�9�9 9 " ��9�9�9 9 " ��9�9�9 9 " 9�9�9 9 ��9 " 9�9�9� 1���)&4 >89 �Z%&��?�1�)�#)� �+���9 " � 9�9�9 ��9 " ��9�9�9 ��9 " ��9�9�9 ��� " 9�9�9�9

�,� %

Page 10: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ���; � � � �*+* � �" � � �� $&?)> *�>�# ��� * �8*"6 � ) =�� �)?31 "$7> 9��

� 1���)&4 >89 � %&��?�1�)�#)� #� > � �" 9�9�9�9 � " 9�9�9�9 �"'�+���+� � " % 9�9�9 � " 9�9�9�9 9 " � � � #

� 1���)&4 >89 �Z%&��?�1�)�#)� �+�9 " � � � 9 "$+% 9�9 9 " �+�+�+� 9

*+* � �"�� � �� $&?)> *�>�# ��� * �8*"6 � ) =�� �)?31 "$7> 9��

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

9 9 " �+�+��� 9 " +% 9�9 9 " � � � 9 " � � � # � " 9�9�9�9 � "$% 9�9�9� 1���)&4 >89 �Z%&��?�1�)�#)� �+��"$�+�+�+� � " 9�9�9�9 �" 9�9�9�9 � > �

*+* � �" )8� �$7> 9��

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

9 9 " 9 9�9 9 " ����9�9 9 "$ � 9�9 9 " ��9�9 9 "$+% 9�9 9 "$ ��9�9� 1���)&4 >89 �Z%&��?�1�)�#)� �+�

9 " ��9�9 9 " ����9�9 9 " 9 9�9 9

Repare, entretanto, nas seguintes operacoes:

*+* � ) � ���� - ?�?�17? )89�*�>�#,�+� � )� >�>��)?Z43$�%�?+*2( 68*;43�7>89 *)1">89 4�) 9"% $#�? ��� "*+* � ) � �-"*$7> 9��

� " � % 9�9Note a maneira de se executar um multiplicacao ou uma divisao entre listas. Deve-se usar o sinal

de ponto (") antes do sımbolo da operacao de multiplicacao ou divisao.

Operacoes entre listas so podem ser executadas se as listas forem de mesma dimensao (mesmonumero de elementos).

Repare a diferenca entre a divisao direita ( � ) e a divisao esquerda (�).

Note tambem os resultados e os avisos de divisao por zero.

���'&+0

Page 11: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ��� � � � ��@BA�� � KVU�I+X � GRQ

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

*+* ��17?�4+$�%&)3$7>��*+*� � � � � � ! *-0 �%6� 9 " � #�� 9 "$ ����9�)�*-0 ��9�9 9�9 9�9 � � �

�-" 9�9 � �" 9�9 �-" ���� �" 9�9 9 " � # 9 "$ 9��9�9 " 9�9 9�9 " 9�9 9�9 " 9�9

Repare que o formato dos numeros (ver secao 2.3) foi modificado para bank. O que aconteceriase a mesma matriz fosse definida com o formato default do MATLAB (short)?

Um elemento de uma matriz bidimensional pode ser referenciado atraves de seus dois ındices:

*+*� � , 6� � .$7> 9��

9 "$ 9As 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 " ��9�9�9 9 "$ 9�9�9 9 "$� 9�9�9 9 " ��9�9�9 9 " % 9�9�9 9 " ��9�9�9 9 "'# 9�9�9� 1���)&4 >89 �Z%&��?�1�)�#)� ��9

9 " ��9�9�9 9 "$ 9�9�9 � " 9�9�9�9Pode-se facilmente criar matrizes com estas listas:

*+*� $�% � � ���+*&9 � 0 �+*&9 � $)% � �

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

���'&(&

Page 12: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ��� � � � ��� " 9�9�9�9 �" 9�9�9�9 �-" 9�9�9�9 � " 9�9�9�9 %�" 9�9�9�9 � " 9�9�9�9 # " 9�9�9�99 " ��9�9�9 9 "$ 9�9�9 9 "$� 9�9�9 9 " ��9�9�9 9 " % 9�9�9 9 " ��9�9�9 9 "'# 9�9�9

� 1���)&4 >89 �Z%&��?�1�)�#)� ��9� " 9�9�9�9 �" 9�9�9�9 ��9 " 9�9�9�99 " ��9�9�9 9 "$ 9�9�9 � " 9�9�9�9

*+*� $�% � ���+*&9 � "* �+*&9 �"* � $)% �

� " 9�9�9�9 9 " ��9�9�9�" 9�9�9�9 9 "$ 9�9�9�-" 9�9�9�9 9 "'� 9�9�9� " 9�9�9�9 9 " ��9�9�9%�" 9�9�9�9 9 "$% 9�9�9� " 9�9�9�9 9 " ��9�9�9#-" 9�9�9�9 9 "'# 9�9�9� " 9�9�9�9 9 " ��9�9�9 �" 9�9�9�9 9 "$ 9�9�9��9 " 9�9�9�9 � " 9�9�9�9E 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 " ��9�9�9 9 "$ 9�9�9 9 "$� 9�9�9 9 " ��9�9�9 9 " % 9�9�9 9 " ��9�9�9 9 "'# 9�9�9� 1���)&4 >89 �Z%&��?�1�)�#)� ��9

9 " ��9�9�9 9 "$ 9�9�9 � " 9�9�9�9*+*� $�% , %:� � .$7> 9��

%�" 9�9�9�9 9 "$% 9�9�9*+*� $�% � ,�� � # .$7> 9��

#-" 9�9�9�99 "$# 9�9�9

*+*� $�% ,�� � �*.���'&�-

Page 13: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ��� � � � ��$7> 9��

��

�%

�#

��9Extendendo ainda mais o conceito de criacao de matrizes, uma matriz tambem pode ser formada

de outra matriz,

*+*� $�% � � � � $�% � 0 �+*&9 � � $)% � �

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

� " 9�9�9�9 �" 9�9�9�9 �-" 9�9�9�9 � " 9�9�9�9 %�" 9�9�9�9 � " 9�9�9�9 # " 9�9�9�99 " ��9�9�9 9 "$ 9�9�9 9 "$� 9�9�9 9 " ��9�9�9 9 " % 9�9�9 9 " ��9�9�9 9 "'# 9�9�9� " 9�9�9�9 �" 9�9�9�9 �-" 9�9�9�9 � " 9�9�9�9 %�" 9�9�9�9 � " 9�9�9�9 # " 9�9�9�9

� 1���)&4 >89 �Z%&��?�1�)�#)� ��9� " 9�9�9�9 �" 9�9�9�9 ��9 " 9�9�9�99 " ��9�9�9 9 "$ 9�9�9 � " 9�9�9�9� " 9�9�9�9 �" 9�9�9�9 ��9 " 9�9�9�9

A dimensao de uma matriz pode ser obtida com a funcao 9�* � �:, � . .

*+* 9�* � �:, � $�% .$7> 9��

��9

ou seja, a matriz Mat2 tem dimensao &+0 � - .A matriz identidade pode ser criada com a funcao � = �

*+* � 6 �7> % � ��� = �3, � .� 6��7>�% � �

� 9 9���'&+/

Page 14: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

����� � � � � ����� ��� � � � � � � � � � �9 � 99 9 �

�������� �� ���������� �� �����( �� "���($ � ��� �%� � ����� � $�� ��

As operacoes com matrizes sao bem convenientes com o MATLAB. Uma lista de todas asoperacoes pode ser obtida com o comando ��� �2! 43$)%��*)�> . Veja alguns exemplos:

*+* 6 ��%�, � �*.$7> 9��� -"$ +!�� �!��9�9 % � � "'� 9�9�9��!��9�9!�+**+* *�>���, � �*.$7> 9����9 " 9�9���� � 9 " 9�9 � ��* 9 " 9 � 9 # � 9 " 9�9 � % * 9 " 9�9�9 � 9 " 9�9�����*9 " 9 � � 9 " 9�9�9 * ��9 " 9�9�� 9 � 9 " 9�9�9��)* ��9 " 9�9�9 � � 9 " 9�9�9��)*��9 " 9 �+� � 9 " 9�9 � �)* ��9 " 9������ � 9 " 9�9 �)* 9 " 9�9 %+ � 9 " 9�9�9 �3*

*+*� $�% �%) � $�% $7> 9��� � %�" 9�9�9�9 � � "$% 9�9�9� � "$% 9�9�9 �-" � % 9�9

*+*� $�% � " ) � $�% ��� - ?�?�17? )89�*�>�#,�+� � " )� $)%�?+*"( 6+*;43��>89�*)1"> 9 4�)89"% $*#�?���� "*+*� $�% � " ) � $�% �"*$7> 9��

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

� " 9�9�9�9 � " 9�9�9�9 �" 9�9�9�9 � � " 9�9�9�9 +%�" 9�9�9�9 � � " 9�9�9�9 � �" 9�9�9�99 " 9���9�9 9 " 9 ��9�9 9 " 9 9�9 9 " ����9�9 9 " +% 9�9 9 "'� ��9�9 9 " � 9�9

� 1���)&4 >89 �Z%&��?�1�)�#)� ��9� � " 9�9�9�9 � � " 9�9�9�9 ��9�9 " 9�9�9�99 " � ��9�9 9 " ����9�9 � " 9�9�9�9

@BA�� � P P F�Q G#U P STK��]KYQ��]G �]G M XDQ NK PO que veremos nesta secao pode ser bastante util em diversas situacoes. Loops podem ser usados

para criar listas, executar diversas operacoes de forma repetitiva, etc. Tomadas de decisao podem ser

���'&*�

Page 15: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

����� � � � � ����� ��� � � � � � � � � � �utilizadas na criacao de suas proprias funcoes, conforme sera visto mais adiante. A utilizacao dessasferramentas no MATLAB e bastante semelhante ao uso em linguagens de programacao populares.

����� �� � ��� � ��� � ����� � � �

O ��17? pode ser usado quando se quer repetir certas operacoes um numero bem definido de vezes,atribuindo os valores de uma lista a uma variavel. Isto pode ser entendido mais facilmente atraves deum exemplo.

Para se criar uma lista que tenha ordem de formacao mais complexa do que o visto na secao 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 " 9�9 � ��9 " %+ ���9 " %!# � � 9 "$ � � % 9 " + + �

Note que as operacoes compreendidas entre um par for end sao executadas em cada iteracao.Descubra o por que do uso do sinal de ponto e vırgula no final das expressoes. O que aconteceria senao fosse usado o ponto e vırgula?

����� � � � ��� � ��� � ����� ���� $ &

O comando �&� *)�)� e usado de forma analoga ao comando ��17? . A diferenca fundamental e quecom o uso do �&� *)�&� os comandos sao repetidos ate que se satisfaca uma determinada condicao. Vejano exemplo a seguir.

*+* � � � % 0*+* >*��� 0*+* �&� *)�&� � �2��9 "$%�6,^>�.��> ) � � 0

���'&��

Page 16: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ��� � � � � � ���� ��� � � �>*�)>*��� 0� � �*� ��� � � � 0�7>�6*+* �� �

%�" 9�9�9�9 %�" 9�9�9�9 �-"$#�% 9�9 �"$% 9�9�9

����� ��� � � ��� � ���� �� � $� �� � � �'��� � � $ � �&�

E usado de forma analoga a outras linguagens de programacao. Nao ha muito o que explicar jaque 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 sehouver tres ou mais possibilidades a verificar deve-se usar if-elseif-...-elseif-else-end.

@BA�� � \ P U�K���� P�� I WK�� M P QO MATLAB e bastante versatil para criacao de graficos em diversos estilos (bidimensional,

tridimensional, barras, polar, etc.).Vamos plotar a funcao co-seno com as listas � e � criadas na secao 2.5. Para graficos simples

bidimensionais deve-se usar a funcao !+��12% .

���'&+!

Page 17: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ��� � � � � � ���� ��� � � �����!+��12%7,D( � = .���

Logo em seguida a esse comando, deve ser aberta uma nova janela grafica com o grafico da funcaodesejada. Para se obter o grafico com grades para facilitar a leitura, use a funcao #�?+*"6 1"> . Note queo 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 grafico num formato que possa ser inserido por um editor de textos? Na janela dografico, e so clicar no menu File � Export. . . e escolher o formato desejado. Ou, se preferir trabalharna janela de comandos, use a funcao ! ?8*�>�% adequadamente. De um ��� �"! ! ?+*�> % .

Para adicionar tıtulos aos eixos e ao grafico, siga o modelo abaixo:

���Z(��)$�)3� �4, - *"(�1'( .��� = �)$�)3� �4, - *"(�1 =� .��� %8*,%3�&�3, �� ?��$ �+*&<&15<&1�9-,D(5. .

Para plotar mais de uma curva ao mesmo tempo:

����!+��12%7,D( � =�� ( � 9�*�><,D(/.�.

���'&�#

Page 18: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ��� � � � � � ���� ��� � � �

−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

Eix

o y

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

cos(x)sen(x)

Outras opcoes da funcao !+��12% , tais como cor ou tipo da linha do grafico, sımbolos dos pontosplotados, podem ser vistas no ��� �"! correspondente. Procure tambem alguma informacao sobrelegendas ( ��� �"!:�)�# �7> 6 ).

Em seguida, veremos um exercıcio muito importante. Modifique o numero de elementos da lista� para um valor bem menor que 50 e, depois, para um valor bem maior que 50. Note bem o queacontece 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 � ��9�9�9/.-0��� = ��<&1 9-,D(/.-0����!+��12%7,D( � = .40 #�?+*"651">

���'& �

Page 19: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ��� � � � � � � ���� ���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 e bastante importante emaquisicao de sinais: o numero de dados amostrados deve ser suficiente para revelar a informacaocorreta do sinal. Este topico devera ser visto em detalhe no decorrer das atividades do laboratorio.

@BA�� �S[F P I�U�K���� P� G ��F P I�U�K���� P �]K�� P Q �]G F�KYI3K " S KYI�� " X'� PEntre as diversas atividades do curso, estaremos aquisitando dados experimentais atraves de uma

placa de aquisicao conectada ao computador e controlada por funcoes programadas usando o softwareLABVIEW ��� . Desta forma, sera gerado um arquivo em formato ASCII com a tabela dos dadosnumericos aquisitados.

Apos esse processo, voce devera realizar diversas analises com os dados utilizando o MATLAB.Existem diversas maneiras de se importar os dados de um arquivo usando o MATLAB.

Analogamente, voce pode querer salvar (exportar) um conjunto de dados obtidos no MATLABpara uso posterior.

Existem varias maneiras de importar ou exportar dados no Matlab. Ja vimos anteriormente o usodas funcoes 9�$ ��� e ��1)$)6 para salvar e carregar todas as variaveis de uma secao de trabalho. Verifiqueagora ��� �2! 9�$*��� e �3� �"! ��1)$)6 . Com uma pequena variacao, e possıvel selecionar as variaveis asalvar ou carregar. Para salvar somente os dados � e � em arquivos com formato binario que so oMatlab entende:

*+* (���� *,>89,!�$�<)�3, �7! *�� :� 9 � ��9�92.40*+* = ��9�*,>7,D(/.-0*+* 9�$ ��� 6 $)631�9*� " 4+$�% ( =

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

*+* <&�)��$&?*+* ��1)$)6 6 $)631�9*� " 4+$�% ( =

Para salvar ou recuperar dados em formato texto (ascii), o procedimento e um pouco maiscomplicado. Se voce ja verificou �����"! 9)$ ��� , entao entendera o procedimento seguinte:

���'&+%

Page 20: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� � ��� � � � � � � ���� ���D� � � � � �� � �� � � � � � � � � � �� � � �*+* 9�$ ��� 6 $)631�9*� " % (&% ( = ��$�9�< *�* ��%�$�)89

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

A recuperacao dos dados e feita da seguinte forma com a funcao ��1)$&6 :

*+* <&�)��$&?*+* ��1)$)6 6 $)631�9*� " % (&% ��$�9�< *�**+* �&�+1

� 1 ) ? ��$)?+*7$�)8�)��9'$)? �,�6 $&6�1�9*�*+* (��&6 $&6�1�9*� ,�� � � .-0*+* = �&6 $&6�1�9*� , :� � .-0

Repare que os dados sao inicialmente guardados na variavel com o mesmo nome do arquivo massem a extensao (dados1).

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

A primeira operacao a ser realizada e usar o comando ��1"!���> para criar um arquivo e/ou paradisponibilizar um arquivo ja criado para um dos seguintes modos: para escrever ou para ler ou paraincluir dados. Aproveite e de um ��� �"! ��12!��7> .

Por outro lado, a ultima operacao com um arquivo devera ser seu fechamento com o comando�3<���1�9�� .

O comando ��1"!3�7> , se usado corretamente, devera retornar um numero inteiro maior ou igual a 3,numero esse que representara a identificacao do arquivo aberto.

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

*+* <&�)��$&?*+* (���� *,>89,!�$�<)�3, �7! *�� :� 9 � ��9�92.40*+* = ��9�*,>7,D(/.-0*+* ��1"!���>7, 6 $&6�1 � " 6 ��� � .$7> 9��

O arquivo denominado “dado1.d” foi criado no diretorio atual (verifique a criacao do arquivo),e foi atribuido o valor 3 como identificacao deste arquivo. Com isso, sempre que se desejar fazerreferencia ao arquivo basta referencia-lo com o valor 3. Se for criado mais um arquivo antes dofechamento do ‘3’, ele recebera a identificacao ‘4’, e assim por diante.

Em seguida, deveremos exportar os dados para o arquivo ‘3’. Existem diversos comandos parase executar essa tarefa, todos muito semelhantes aos comandos da linguagem C. Uma listagemcompleta das funcoes de entrada/saıda do MATLAB pode ser obtida com �3� �"!T*)1��*)�> . Neste textovou mencionar apenas a funcao �)! ?+*�> %�� , que penso ser a mais adequada para nossas necessidades.Vejamos como utiliza-la:

��� -.0

Page 21: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

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

�&! ?+*�>�% �6, �6��>� � � � � > �� (6,^>�. � = ,^>�.�.-0�7>�6*+* �3<&��1 9��3, � .$7> 9��

9E muito semelhante a linguagem C.

� � significa formato de numero real (ponto flutuante), enquantoque

� > significa nova linha. Outros formatos e comandos possıveis podem ser encontrados no ��� �"!correspondente. Informe-se tambem sobre a funcao �&�7>�#&%&� .

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

*+* � � � (70 = �0*+* �)! ?+*,>�%��6, ���� � � � � � > �� � .-0*+* �3<&��1 9��3, � .$7> 9��

9Veja que foi criada uma matriz � com as lista � e � e essa matriz foi armazenada no arquivo.

Observe tambem, no exemplo seguinte, o controle do formato de saıda dos numeros reais(elementos das listas):

*+* *"6 �7> %8* ����$&?�; ) * �+1 �!��1"!3�7>7, 6�$)6�1 -" 6 ��� $ .40*+* �)! ?+*,>�%��6, *26 �7>�%8*����$)?�;*) * �31 �� � %-" � � % � % � � " ��� � > �� � .-0*+* �3<&��1 9��3, *"6��7>�%8* ����$)?�; ) * �31�.-0

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

*+* <&�)��$&?*+* *"6��!�31"!��7>7, 6 $)6�1 �" 6 ��� ? .-0*+*� �!�39�<�$7> �6, *"6 �� � � � � �� � *�> � /.40*+* �3<&��1 9��3, *"65.-0*+*� � � 0*+* (�� � , � � �*.-0*+* = � � , � � .-0*+* !+��12%7,D( � = .40 #�?+*"651">Note que apesar de o arquivo “dado2.d” conter 100 linhas e 2 colunas, nao e possıvel armazenar essesdados nessa forma numa matriz

�de ordem &+0(0 � - . A melhor opcao e proceder como no exemplo

��� - &

Page 22: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� � � �� � � � � �� � � � � � � � �acima e armazenar numa matriz

� - � &+0(0 . Isso e devido a ordem de leitura dos dados pela funcao�39�<�$7> � .

O ultimo parametro (terceiro) usado na funcao �39�<�$7> � ( � *�> � ) contem duass variaveis queindicam o numero de elementos a serem lidos no arquivo em questao. Apenas a variavel da direitapode receber o valor *,> � , que significa ‘infinito’ e foi utilizado para que a importacao de dados fosseate o fim do arquivo.

Se nao for utilizado esse terceiro parametro, a matriz�

sera um vetor coluna contendo todos osdados do arquivo. Teste voce mesmo.

@BADC�� &ZU3XD\ X$� K���� P F P \DX ���P S[X P QNesta secao veremos como trabalhar com funcoes polinomiais. A manipulacao de polinomios e

feita, basicamente, com seus coeficientes formando uma lista (vetor) horizontal. Por outro lado, asraızes de um polinomio formam uma lista vertical.

Vejamos um exemplo simples, o polinomio ��� � � �� ! , o qual tem como raızes os valores - e / .Sua representacao pode ser feita com a lista ! � . Repare a ordem de disposicao dos coeficientes:

*+* ! � � � � � % � ! � �

� � % �Suas raızes podem ser encontradas com a funcao ?31�12%+9 :

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

Descubra o que faz a funcao !+1�� = . Qual seria o resultado de !+1�� = , � 0 � /. ?Em seguida, veremos como determinar o valor de uma funcao polinomial para um determinado

valor da variavel de entrada. Para o mesmo polinomio � & definido acima, qual seria o resultado se�� �.%*� - ? Basta usar a funcao !81�� = ��$�� .

*+* � � ��!81�� = ��$��4, ! � ��%+ �"$ .� � ��-"$ ��� ���!��9�9 �Mais interessante do que isso, a variavel � pode ser uma lista ou matriz. Veja como plotar a funcao

� & para valores entre� -.0 e -.0 :

*+* ( � ����*�>89,!�$�<��3, � 9 � 9 � � 9�92.-0*+* = � ��!81�� = ��$��4, ! � � ( �*.-0*+* !+��12%7,D( � � = � �� # .-0 #�?+*26 1">*+* (��)$�)3� �4, ( .*+* = �)$�)3� �4, ( � � % ( � � .

��� -(-

Page 23: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� � � �� � � � � �� � � � � � � � �

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

0

100

200

300

400

500

600

x

x2 −5x

+6

Diversas operacoes podem ser efetuadas entre dois polinomios: soma, subtracao, multiplicacao,divisao. Para soma e subtracao deve-se considerar as listas dos coeficientes dos polinomios e efetuara operacao conforme visto na secao 2.5.1. Para multiplicacao deve-se usar a funcao <&1">�� , enquantoque para divisao a funcao 6 ��<&1">�� .

Em todas as operacoes mencionadas acima, as listas devem ter numero de elementos compatıvelcom a ordem do polinomio. Deve-se completar com zeros ate que essa condicao seja satisfeita. Alemdisso, no caso de soma e subtracao, as listas devem ser de mesma ordem.

Por exemplo, para efetuar a multiplicacao do polinomio � & � � � � � � ! usado acima com opolinomio �- � �

� # � �

� & :

*+* ! � � � 9 # 9 9 � ! �

� 9 # 9 9 �*+* ! � ��<�1">���, ! � � ! .! � �

� � % � � � ��% � � � % �

Mas, para executar a soma dos dois polinomios devem ser utilizadas listas de mesma dimensao:

*+* ! � ��� � � 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 fracao de doispolinomios no metodo da expansao em fracoes parciais.

��� -./

Page 24: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� � � �� � � � � �� � � � � � � � �Dada uma fracao de dois polinomios

�������e � ���� , podemos decompo-la numa soma de fracoes

parciais, �������� ���� � ���� � �

� & �� � � � & � � �� - �� � � � - � � ����� � �

�� ��� � � �� ��

Para isso, usa-se a funcao ? ��9 *"6*)�� , que retorna como resposta tres listas: resıduos, polos e termoslivres. Por exemplo, para a fracao de polinomios

������� ����

� �

� � � � � % � � #���� & ����� � - �

terıamos a seguinte operacao no MATLAB:

*+* >�)&4 � � � % # >�)�4 �

� % #*+* 6 �7>*�)!+1�� = , � ��� 0 � /.6 ��>,�

� � *+* � ? � ! �

� ��&?���9�*"6*)3�3, >�)&4 � 6 �7>�.? �

���

!,��

���� �

Ou seja, �������� ����

�� - �

� &�� - �

-�� &

Note que neste caso o numerador e um polinomio de ordem maior que o denominador, resultando,portanto, num termo livre nao nulo.

A funcao ? ��9�*26*)�� do MATLAB tambem serve para executar a operacao inversa, ou seja, dadasas listas verticais dos resıduos e dos polos e a lista horizontal dos termos livres, ela determina as listashorizontais dos polinomios do numerador e do denominador:

*+* � > � 6 ��&? ��9 *"6*)��3, ? � ! ���.

>,�� % #

6 �� �

��� - �

Page 25: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� � �� � �� � � �J� � � � ��� � � �� � ������� ���� � � � � � � ����� � � � � � ��� � ��� � �,� � �

� � � � ���

O MATLAB e uma ferramenta poderosa em controle e processamento de sinais, com variasfuncoes especıficas. Entretanto, a maioria dessas funcoes so esta disponıvel com a compra de pacotesadicionais, chamados de “Toolbox”. Portanto, deve-se instalar o Control System Toolbox e o SignalProcessing Toolbox.

Cada um desses pacotes contem um numero muito grande de funcoes, incluindo topicos bemavancados. Nesta apostila trataremos apenas das funcoes a serem utilizadas em nosso curso. Parauma abordagem mais detalhada, o estudante deve consultar a documentacao de ajuda que vem com apropria distribuicao ou os inumeros livros publicados.

Deve-se levar em conta que houve varias modificacoes entre as versoes antigas do MATLAB e asmais recentes. Diversas funcoes e uma otima interface grafica para o usuario foram acrescentadas.Em particular, a interface grafica agiliza bastante o trabalho no projeto de elementos de controle.

� ADC � I P M GRQ�Q K S G�� U P �]G Q�X ��K XDQNesta secao, descreveremos algumas poucas funcoes para tratamento de sinais aquisitados.

Basicamente, utilizaremos a transformada simples de Fourier para analisar o espectro de um sinal(conteudo de frequencia) amostrado.

No exemplo seguinte, com fins didaticos, faremos o caminho inverso: criaremos um sinal jasabendo de antemao as suas componentes em frequencia. Seja um sinal no intervalo de tempo de & a&+0 dado pela equacao:

� - � � � ��� � � � � � � #�� � � ����� � � &*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 e potencia de 2 como numero de elementos porque oalgoritmo interno do MATLAB para a funcao �+�&% (a ser utilizada mais tarde) e mais rapido nessecaso.

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

−5

0

5

10

15

Para encontrar seu espectro de frequencias (o qual ja se pode determinar da equacao acima),utiliza-se a transformada rapida de Fourier, dada pela funcao �+�&% ,

��� -(�

Page 26: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� � �� � �� � � �J� � � � ��� � � �*+* =�= �!���&%�, = .40

Ao sinal, corresponde um tempo (perıodo) de amostragem � �dado pelo intervalo entre dois

instantes de tempo sucessivos em que e feita a medida do sinal. No nosso caso, � �pode ser

determinado de duas maneiras, pelo menos:

*+* / 9��)%7, . ��%7, �*./ 9��9 " 9�� �

ou, entao, 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 frequencia de amostragem � �

:

*+* � 9�� ),! * � / 9� 9���� � " 9 # 9 �Lembrando dos conceitos do Teorema da Amostragem, a frequencia de amostragem deve ser

maior que o dobro da maior frequencia do sinal sendo amostrado. Caso contrario, ocorre “aliasing”.Portanto, so devemos considerar o espectro de frequencia ate � � _(- . So iremos plotar o espectro atea frequencia maxima �

dada por:

*+* � >*� � 9�� � >,�����9 "$%+��% �Com isso, note, tambem, que limitamos os pontos a metade. Definiremos o intervalo de frequencia

para o grafico como:

*+* � ��� *,>89,!�$�<)�3, 9 � � > � �)�7> #&%&�7,^%�. � .40Por fim, devemos lembrar que a transformada de Fourier resulta em valores complexos. So nos

interessa o modulo desses valores. Entao:

*+* =�= !*� $�)89-, =�= , ��� �&�7>�#&%&�<,^%5. � .�.-0*+* !+��12%7, � � =�= ! �� ) .

��� -.!

Page 27: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� � � � ��� ���

0 20 40 60 80 100 120 140 160 1800

200

400

600

800

1000

1200

1400

Para analisarmos mais detalhadamente a regiao do espectro ate 15 rad/s (equivalente a dar umzoom), utilizaremos a funcao �+*�> 6 ,

*+* � �!�+*,> 66, � �+��� % .-0*+* !+��12%7, ��, �5. � =�= !7, �5. �� ) .-0 #�?+*"6 1">*+* (��)$�)3� �4, �� ? �; ) ���>8<�*7$ � ? $)6 � 9 .

0 5 10 150

200

400

600

800

1000

1200

1400

Frequência, rad/s

As novas versoes do MATLAB contem uma interface grafica especial para analise de sinais, quepode ser aberta com o comando �������� . Experimente com a nova janela aberta.

� ��� ���������������

Com o pacote Control System Toolbox e possıvel resolver facilmente diversos problemas decontrole. Nesta apostila so iremos tratar dos conceitos a serem usados no curso, e veremos somentesistemas de uma entrada e uma saıda (SISO), lineares e invariantes no tempo (LTI). Uma listagemcompleta das funcoes desse pacote pode ser obtida com o comando ������ �!��"��$#�� .

%'&)(+*

Page 28: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� � � � ��� ���No MATLAB, a representacao de um sistema pode ser feita de tres modos: com funcao

de transferencia; funcao zero-polo-ganho; espaco de estados. So utilizaremos as duas primeirasrepresentacoes.

Dado um sistema LTI, com condicoes iniciais nulas, representado por uma equacao diferencial nodomınio do tempo,

(�� � ����� � (�� � ��� � � �&��� � � ( �� � �� � ( � � ���� � ���������� � ��� � � �&��� � ��� �� � �� ��� � � ����

sua funcao de transferencia � ����e obtida tomando a Transformada de Laplace:

� ����

��� � (� �+("!���$# � � (%�+(�!

& ����' ���� ��� � � ���(� � �� � � ����� ��� �) � � ��� �

(�� � � � (*� � �� � � ����� � ( �+ � � � ( �Mostraremos duas maneiras de definir uma funcao de transferencia nas versoes mais recentes do

MATLAB, fazendo uso da funcao %�� . Na primeira maneira, deve-se explicitar uma variavel (�

porexemplo) e, entao, entra-se com a funcao:

*+* 9��)%���, 9 ./ ?�$7>89� �&? �)�>8<"%8*&1"> �9*+* � ����9 �4,�9 � ��� )�9 ����9�92./ ?�$7>89� �&? �)�>8<"%8*&1"> �

��9� � � � � � � � � � � � � � � �9 �� � � 9�� � 9�9

Outra maneira e entrar em forma de dois polinomios, um para o numerador e outro para odenominador da funcao de transferencia:

*+* >�)&4 � � ��9 �0*+* 6 �7>*� � � � ��9�9 �0*+* � �)%���, >�)&4 � 6 �7>�.-0

Ou entao,

*+* � �)%���, � ��9 � � �,� ��9�9 5.-0Para representar um sistema LTI com forma zero-polo-ganho, usa-se a funcao

� !�� . Pararepresentar um sistema & ����

' ���� , ��� �

�+� ����� �� �� � ��� ��� �

� � ���� � �-� � ��� � � �� ����� ��� � � � �

procede-se da seguinte maneira:

*+* � � � ! ��, � � � � "+"+" � 4 � � ! � ! "+"+" !�> �/. .-0

��� - �

Page 29: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ��� � � � ��� ���Por outro lado, uma vez definido um sistema, pode-se obter seus dados utilizando %���6 $)%�$ ou� ! ��6 $�%�$ . A funcao %���6�$�%�$ retorna os vetores dos coeficientes dos polinomios formadores da funcao

de transferencia ( �� �

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 ��>,�� � ��9�9

Uma vez representada a funcao do sistema, pode-se determinar sua reposta no tempo a varios tiposde entrada utilizando a funcao correspondente. Verifique voce mesmo para que servem as funcoes:9"%��7! , *;4�!�)8��9�� , *�> *,%8*�$ � , ��9 *;4 , # ��>89�*�# , 92%��7! �*)�> .

A resposta em frequencia de um sistema pode ser obtida com as funcoes )+176 � e 43$)?�#+*�> . Paraexplicitar as frequencias mınima ( � � � ) e maxima ( � � (�� ), dar o comando na seguinte forma:)+1�6 �3,># ��� �)4 *�> � �)43$)(��2. .

As novas versoes do MATLAB tem uma interface grafica para controle. Para utiliza-la, primeirorepresenta-se o sistema como visto acima. Entao, da-se o comando �2%8* �8*�� � . Deve-se abrir umajanela pedindo para selecionar um sistema a analisar. Apos a selecao, abre-se uma nova janela emque se pode escolher interativamente as respostas obtidas para varios tipos de sinais de entrada. Estae uma maneira bastante pratica de trabalhar.

Alem das funcoes contınuas vistas ate agora, o MATLAB trabalha muito bem com funcoesdiscretas. Uma vez definido um sistema contınuo, ele pode ser discretizado usando-se a funcao < 6 ,a qual pode realizar a discretizacao por varios metodos. Em versoes antigas do MATLAB, usar afuncao < 6�4 ao inves.

Para utilizar a funcao < 6 , deve-se entrar como parametros a funcao do sistema, o perıodo deamostragem, e o metodo de discretizacao desejado. De um ��� �2! < 6 . Por exemplo, para discretizara funcao contınua � , definida acima, pelo metodo zero order hold,

*+* � � ��< 66, �6� / 9 �� � 1"� .-0Analogamente, emprega-se a funcao 6 < para converter um sistema de discreto para contınuo.Note que e possıvel criar diretamente uma funcao discreta usando %�� ou

� !�� bastando inserir maisum parametro 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 funcao discreta e explicitar a variavel ( � porexemplo) e o perıodo de amostragem e definir a funcao na variavel,

*+* � �)%���, ���� / 9�.-0*+* � � � �6, � � .��4, ��� � 9 " � ) � � 9 "$ .-0

Ainda com relacao a funcoes discretas, descubra o que faz a funcao �+*)�2% .

��� -.%

Page 30: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ����� � � �� � ����������� � " � � � � � � & ��� � � � ������� "� � !�

A funcao de transferencia de malha fechada de um sistema e dada por:& ����' ����

� ����� � ����& � � ���� � ����

onde H(s) representa um compensador e G(s) a planta.A equacao caracterıstica correspondente e:

& � � ���� � ���� 0

que pode ser representada em funcao do ganho,

como:

& � , �� �� # 0

Para obter o grafico do lugar das raızes usa-se a funcao ?���1 < )89-, >�)&4 � 6 ��>�. .Existe uma interface grafica especial contida neste Toolbox para controle. Ela pode ser aberta

com o comando ?3�2%31�1�� .

� � � � � � � � � � �� � ���� � � � � ��� ���� � � � � �

E conveniente criar suas proprias funcoes em situacoes em que se necessite executar certasoperacoes repetidamente. E, tambem, a criacao de arquivos script pode ser muito util para evitarter que digitar grande quantidade de funcoes na tela de comando. Portanto, a criacao de funcoes e dearquivos script sao recursos que devem ser utilizados para agilizar o trabalho.

A grande diferenca e que ao invocar uma funcao ela trabalhara em background sem interferir noscomandos ou nas variaveis da janela de comando, enquanto que invocar um script e o mesmo quedigitar linha por linha seu conteudo na janela de comando.

As funcoes e arquivos script podem ser criadas em qualquer editor de texto, desde que ao salvarse use o formato text, ou no editor proprio do MATLAB. Para abrir o editor do MATLAB, clique nomenu File e escolha a opcao New � M-file. O arquivo de funcao ou script deve receber a extensao‘.m’ e deve ser salvo no diretorio atual de trabalho ou num diretorio que faca parte do caminho (path)do MATLAB.

$ ADC ! " � LMONP GRQA criacao e a utilizacao de funcoes em MATLAB e muito similar ao procedimento usado em

linguagens de programacao. Imagine que voce necessite criar uma onda quadrada. Abra o editor detexto e digite a funcao 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

Page 31: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ����� � � � � ��� � � �� % � *&9"%�$ <�1,4 ��$ ��17? ��9�6�� %��74�!+1��= � *&9"%�$ <�1,4 ��$ ��17? ��9�6�� %���>89��$ 1 <&17?�? ��9,!+12> 6 �7>�%���9�� ��9 !�$&? �$243��% ?�1�9Z6 �'�7>�%�? $&6 $'6 $ �)�>��<��$ 1 9��$�1��� ��! %���>89��$ 1 6 � ! *&<&1� !��&? �� 176�1Z6 $ 1"> 6�$� %29 *�> 9"%�$7>�%�� *,> *&<�*7$��� % �5*�> 9"%�$7>�%��&�8*�>�$ �� > > �)�43�)?�1 6 � !+1">�%31 9�6�$ �*)�>��<��$ 1#1"> 6�$ ; )3$)6�? $)6�$ 6���9���1�$&6�1�9� >#6 � ��� 9��)? 43$�*&17? 1 ):*�#)�$ � $

�����2%�$ ��%*�:,^%�� �)% 92. �4,^> ���*.-0%�,��*.�)% 960!�! � � 0 � 43��*)1�!��)?��� 176�1��1�? � � � >

%�, �5.��)%�, � ���*.� �����2%�$ ��%<0* � ? �24<,�<)��*)�4,�,D%�, �5. �)% 92. �"!�!�. � .,�+� 9

= , �5.� � �&!<0� ��9��

= , �5.��&!<0�7> 6

�7>�6Note que a funcao tem duas saıdas ( � e � ) e quatro parametros de entrada (Vp, P, t0, tf, n).Todas as linha que comecam com o sımbolo % sao utilizadas para �����"! . Assim, se voce estiver

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

Note que se uma funcao tem apenas uma saıda entao ela pode ser definida na primeira linha doarquivo ‘.m’ correspondente como, por exemplo: �*)�>8<"%8*)12> � � ��$�%317?+*�$ �4, >�. . Ou seja, sem oscolchetes.

$ A @ � I�� " X'� P Q Q M I+X F USe voce desejar usar a funcao ‘quadrada’ definida anteriormente para plotar varios tipos de onda

quadrada, entao sera 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&

Page 32: MATLAB para o Laboratorio´ de Automac¸ao˜ IImonoceros.mcca.ep.usp.br/.../intro_matlab.pdf · Esta apostila tem a intenc¸˜ao de ser um guia rapido´ para a utilizac¸˜ao do MATLAB

��� ����� � � � � ��� � � �<&12>�%8*�>�)3$)? .( � �3*�>�!�) %�, - > %�? �51 ��$ ��17?#6�1 !��)?��� 176�1Z6 $&��17?�4+$Z6 � 1"> 6�$ � .( �3*�>�!�) %�, - > %�? �51 ��$ ��17?#6�1 *�>892%�$7>�%��5*�> *&<�*7$ ��� .( � �3*�>�!�) %�, - > %�? �51 ��$ ��17?#6�1 *�>892%�$7>�%�� �+*,>�$ ��� .(+� �3*�>�!�) %�, - > %�? �51 ��$ ��17?#6 $Z%��7> 9��$ 1Z6 � ! *&<&1�� .( % �3*�>�!�) %�, - > %�? �51 > �)&43�)?31 6���!+12>�%31�9 6 ��9)��1�$)6�1�� .� = � � = ��; )�$)6�? $)6 $3, (+� � ( � � ( :� ( �6� ( % .-0!+��12%�, = � � = .-0>#�?+*"6:12><00 �+*�>�!�)�%7, ����9)��1�$ 481�6+* �+*&<)$)? $�9 ��9�<�$ �)$�9 ��� 1�) . � ��� 9 .* � 0 �+� ��:�� 0 ��� 9

��9�<�$��)$!�3*�>�!�)�%�, - >�%�? � � (�4 *�>#()43$)( = 4 *�> = 43$&( #�74:<&1���<,����%���9 � � > .$)(+*&94, ��9�<�$��)$2.-0

�7>�60 �+*�>�!�)�%7, ����9)��1�$#?�1�6 $)? 1 9�<7?+*�!�% >+1 ��$243�7>�%�� ��� 1�) . � ��� 9 .* � 0 �+� ��:�� 0 ��� 9

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

Diversas funcoes utilizadas no arquivo acima merecem algumas consideracoes. A funcao *,>�!�)�%e utilizada para imprimir uma mensagem na tela e pode ou nao esperar pela entrada de algum dado(exemplo, ( � �3*�>�!�)�%�, - >�%�? � ( ��� . . No caso de se querer utilizar uma variavel do tipo string,coloca-la entre aspas:

0 ��9,!81�9"%�$!�+*�>�!�)�%7, ����9)��1�$T<&1">�%8*,>�)�$)? ��� 1�) . � ��� 9 . . Note tambemque

� > e utilizado (como na linguagem C) para fazer o cursor ir para a proxima linha.Dentro do script foi feito uso da funcao ‘quadrada’ definida anteriormente.Os sımbolos ‘ �+� ’ e ‘

�’ sao operadores logicos.

Operador Descricao�+� identidade�

OR�AND

� NOT

Por fim, note que e possıvel reinicializar o trabalho do script bastando invoca-lo de dentro doscript ( ?*)�>:9�<2?+*�! % � ).

���"/ -