Índice
Segue-se sugestões para utilização mais prática e eficaz do MATLAB
na aulas de Controle Automático.
O objetivo principal aqui é criar um arquivo texto fácil de ser editado e fácil de ser exportado para página html
incluíndo figuras, gráficos do MATLAB
e comandos usados no MATLAB
) para resumir as aulas e conteúdo sendo explorado na disciplina de Controle Automático). Uma opção para gerar este tipo de documento seria usar processadores de texto usuais como o Office Word por exemplo. Mas existe umna forma mais prática e ráapida.
O MATLAB
permite criar um "diário" (arquivo texto) refletindo os comandos e resultados obtidos na janela de comandos (CLI = Comand Line Interface) do mesmo.
E o MATLAB
através dos comandos save <file> (e contra-parte: load <file>) permite salvar todas as variárias (com valores) gerados em determinada seção de trabalho no mesmo.
Conciliar os comandos diary, save e load do MATLAB
podem permitir agilizar a operação das aulas de controle automático e facilitar bastante o seu registro (para posterior revisão/estudo).
Antes de criar um arquivo texto "diário" e considerando-se que seja interessante de alguma forma incorporar neste "diário" os resultados gráficos obtidos, recomenda-se fortemente que, antes de executar os próximos comandos, que o usuário, chaveie o MATLAB
para o diretório no qual pretende concentrar o aquivo "diário" à ser criado e os arquivos gráficos (figuras) -- preferencialmente num diretório diferente do padrão usado pelo MATLAB
que é ~/Documentos/MATLAB
.
Para forçar o MATLAB
para determinando diretório você pode na CLI usar o comando cd
para forçar o MATLAB
até o diretório correto ou simplesmente usar a barra superior da CLI do MATLAB
e ajustar o diretório de trabalho para outro que não seja ~/Documentos/MATLAB (o padrão adotado pelo Matlab):
Por exemplo, neste caso, se está concentrando os arquivos gerados nesta seção de trabalho no diretório ~/Documents/UPF/Controle_II/6_Usando_RL_Projetos
. O local atual do diretório sendo usado pelo MATLAB
pode ser confirmada usando comando pwd:
>> pwd
ans =
'/Users/fernandopassold/Documents/UPF/Controle_II/6_Usando_RL_Projetos'
>>
Eventualmente, você pode criar uma nova pasta de dentro do Matlab (sem ter que recorrer ao Explorer), usando o comando mkdir (make directory), o mesmo usado em sistemas Linux. No exemplo abaixo, estamos criando a pasta "/2020_2" a partir do diretório anterior "/6_Usando_RL_Projetos", para tando foi feito:
>> mkdir 2020_2 % cria a pasta "2020_2" à partir do diretório atual
>> cd 2020_2 % chaveira para este diretório
>> pwd % verificando diretório atual de trabalho:
ans =
'/Volumes/Data/Users/fernandopassold/Documents/UPF/Controle_2/6_Projetos_via_RL/2020_2'
>> format compact % comando para compactar mensagens de texto geradas pelo Matlab
>> format short % comando para usar menos dígitos para informações numéricas
Uma vez decidido em que diretório serão concetrados os arquivos gerados na atual seção de trabalho, o arquivo "diário" pode ser criado simplesmente usando o comando "diary
>> diary aula_12_09_2019.txt % daqui por diante um arquivo texto de nome "aula_12_09_2019.txt" está sendo criado
No caso anterior, os próximos comandos seguintes ao diary
serão todos gravados no arquivo texto aula_12_09_2019.txt
. É gerado algo similar a um arquivo de "log". Este arquivo pode ser editado por qualquer editor de textos comum como o Notepad
(no Windows) ou TextEditor
(no Mac) ou nano
(na CLI de um sistema Linux).
Sugere-se o uso de editores de texto mais poderosos como o Sublime Text (multiplataforma) ou adotar diretamente algum editor de textos compatível com Markdown:
http://pad.haroopress.com (disponível para Windows, Linux, Mac)
https://typora.io (também disponível para Windows, Linux, Mac)
Se quiser saber mais sobre markdown ☞ O que é Markdown, Página Wikipedia sobre Markdown.
Note que todos os próximos comandos passados ao MATLAB
serão automaticando repassados para o arquivo texto <arquivo.txt>
, com excessão das figuras (gráficos criados no MATLAB
).
Para "acrescentar" ao arquivo diary as figuras dos gráficos gerados numa seção de trabalho no MATLAB
a idéia é fazer uso da linguagem Markdown. Nesta linguagem, figuras podem ser incluídas num arquivo no formato final .html
ou .pdf
se no arquivo .md
(ou arquivo texto compatível com Markdown) forem incorporados os comandos:
![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 1")
No caso acima, a figura à ser acrescentada no arquivo é obtida diretamente via internet (neste caso, uma conexão online é necessária para que posteriormente a imagem seja visualizada).
No nosso caso, a idéia é usar figuras criadas locamente (no seu próprio computador). Então o comando anterior se modifica ligeiramente para:
![Texto alternativo](arquivo_imagem)
onde: arquivo_imagem
pode ser um arquivo do tipo: .jpg
, .gif
(animado até), .png
(preferir este tipo de arquivo).
Recomenda-se png que resulta normalmetne arquivos menores (compactos), com boa resolução (se for possível especificar resolução, recomenda-se adotar 150 dpi).
Por exemplo, em determinado instante de uso do MATLAB
podemos querer incluir no arquigo diário sendo criado, a figura (gráfico) do resultado gráfico da resposta ao degrau aplicado à determinada função transferência de malha-fechada.
Neste caso, na janela de gráfico (Figure <No>) do MATLAB
você deve selecionar:
File >> Save, para gerar o arquivo com a figura desejada.
O MATLAB
permite gravar vários formatos de imagens:
Repare na figura anterior, no diretório onde estarão sendo gravadas as imagens/figuras (o mesmo para o qual chaveamos o Matlab no início deste texto).
Recomenda-se que uma vez que a figura tenha sido salva, que no MATLAB (na janela de comandos enquanto se está trabalhando) se acrescente uma linha como:
>> % Resposta ao degrau de diferentes controladores:
>> % ![step_integrador_puro.jpg](step_integrador_puro.jpg)
A sequencia de comandos acima será repassada para o arquivo texto (diary) sendo criado. Note que para o Matlab são apenas comentários (para não implicar erros no Matlab), mas quando o arquivo diary criado for aberto num editor compatível com markdown, o caracter "%" é ignorado (é impresso, mas não gera erro e pode removido do arquivo markdown) e ao lado de "%" já surge a figura (como no caso do Typora mostrado abaixo):
Obs.: a opção anterior, inclui as figuras, mas não permite escalonar as figuras.
Se for desejado escalonar as figuras usar outro comando (ou pouco mais complicado de lembrar):
<img src="exemplo_inserindo_figura.png" alt="exemplo_inserindo_figura.png" style="zoom:50%;" />
ao invés de usar:
![tipos_imagens_MATLAB.png](tipos_imagens_MATLAB.png)
O editor Typora permite usar a opção com escalonamento depois que foi realizada a seleção do arquivo da figura deseja. Basta depois do momento de selecionar o arquivo, clicar no botão direito do mouse para abrir propriedades, o que faz surgir uma caixa de diálogo flutuante com algumas opções de escalonamento. O próprio Typora passa do formato originalmente previsto para markdown para o formato HTML (acima). Por exemplo:
Ao final de uma seção de trabalho no MATLAB
, recomenda-se salvar num arquivo .mat
as variáveis criadas/usadas na atual seção de trabalho (variáveis do workspace) através do comando save, por exemplo:
>> save planta
Note que neste caso, não é necessário se fornecer a extensão para o arquivo sendo criado. O próprio MATLAB
assume que será criado o arquivo planta.mat
para o caso do exemplo anterior.
Recomenda-se também que o usuário "feche" o arquivo texto do diário, fazendo:
>> diary off
Este comando efetivamente fecha o arquivo texto iniciado anteriormente.
Atenção: No Windows, somente depois do diary off é que o arquivo texto criado ficará disponível no Explorer. Se o usuário esquecer de fornecer o comando diary off
em máquina Windows, corre-se o risco de danificar o arquivo caso a máquina entre em hibernação, o usuário saia do MATLAB
ou simplemente desligue o Windows.
Se não houve nenhum erro até aqui, deve constar no diretório atual de trabalho, o arquivo texto referente ao diary
recém fechado e mais as figuras salvas enquanto se estava trabalhando no MATLAB
.
Exemplo de conteúdo de um arquivo .txt
criado no MATLAB
via diary
:
format compact
format short
pwd
ans =
'/Users/fernandopassold/Documents/UPF/Controle_II/6_Usando_RL_Projetos'
G=tf(1,poly([-1 -2 -10])) % ingressando dados da planta
G =
1
------------------------
s^3 + 13 s^2 + 32 s + 20
Continuous-time transfer function.
zpk(G)
ans =
1
------------------
(s+10) (s+2) (s+1)
Continuous-time zero/pole/gain model.
save planta
OS=10;
zeta = (-log(OS/100))/(sqrt(pi^2 + (log(OS/100)^2)))
zeta =
0.5912
save planta
% grafico salvo como: step_integrador_puro.jpg
% ![step_integrador_puro.jpg](step_integrador_puro.jpg)
diary off
Note que o "prompt" (>>
) do MATLAB
não é repassado para o arquivo texto.
Como o arquivo texto criado não passa de um simples arquivo texto, sem figuras, recomenda-se passá-lo para o formato Markdown.
No Explorer (ou outro navegador de arquivos presente no seu sistema), renomeie o arquivo .txt
recém criado para .md
.
Este arquivo .md
pode ser editado em qualquer editor de textos simples ou outro compatível com Markdown.
Edite o arquivo .md
e retire os comentários (%
) presentes no arquivo texto. Principalmente em linhas como:
% grafico salvo como: step_integrador_puro.jpg
% ![step_integrador_puro.jpg](step_integrador_puro.jpg)
As linhas acima devem ficar algo como:
Grafico à seguir mostra resultado da entrada degrau aplicada ao controlador
![step_integrador_puro.jpg](step_integrador_puro.jpg)
Uma vez editado o arquivo .md
, se o usuário estiver usando um editor de textos compatível com Markdown, pode então exigir que seja vizualizado um "Preview" mostrando o resultado da interpretação dos comandos Markdown contidos no arquivo texto.
A figura à seguir mostra o editor Haroopad (free e multiplataforma) usado para editar/interpretar arquivos texto compatíveis com Markdown. Este editor além de interpretar comandos Markdowns, interpreta equações incorporadas no arquivo texto (.md
) usando formato LaTeX. Veja exemplos nas próximas figuras (se editor além de compatível com Markdown, estiver preparado para lidar com MathJax
(rendering support library):
Abaixo seguem figuras de edição usando editor Haroopad:
É simples engressar uma equação no formato compatível Markdown, basta introduzir a equação num formato compatível com LaTeX entre os caracteres $$
.
Por exemplo
Exemplo_1:
$$ C(s)=\dfrac{1}{(s+1)(s+2)(s+10)}$$
produz: \[ C(s)=\dfrac{1}{(s+1)(s+2)(s+10)}\]
Exemplo_2:
$$ \zeta = \dfrac{ -\log(OS/100) }{\sqrt{pi^2 + \log(OS/100)^2} }$$
gera: \[ \zeta = \dfrac{ -\log(OS/100) }{\sqrt{pi^2 + \log(OS/100)^2} }\]
Exemlo_3:
$$ \omega_n = \sigma / \zeta $$
gera: \[ \omega_n = \sigma / \zeta \]
Note que as equações ou expressões matemáticas podem ser introduzidas no meio do texto:
Exemplo_4:
Lembrando que $\%OS<10\%$ (O que resulta no $\zeta=0,5912 $).
gera:
Lembrando que \(\%OS<10\%\) (O que resulta no \(\zeta=0,5912 \)).
MATLAB
Linhas de comando do MATLAB
podem ser destacadas do texto, colocando as linhas de comandos entre 3 caracteres de crases, por exemplo:
O que gera:
Entrando com a equação do controlador:
\[C(s)=\frac{(s+0,1)}{(s+0,9)}\]
no MATLAB
fazemos:
>> C=tf([1 0.1],[1 0.9])
>> % continuam trabalhos no Matlab...
Durante a criação do diary
ou durante a edição do arquivo Markdown uma forma de controlar o tamanho das figuras é incoporar diretamente código html
no arquivo .md
. Por exemplo:
![figura](figura.png)
<img src="figura.png" alt="figura" width="500"/>
ou (mais explicitamente):
<img src="figura.png" width="200" height="200" />
ou ainda por:
<img src="figura.png" alt="exemplo_inserindo_figura" style="zoom:50%;" />
mas normalmente apenas o atributo width
ou zoom
já permite escalonar a figura de forma conveniente. Note que o atributo alt
é opcional (não necessário).
- Writing Mathematic Fomulars in Markdown:
Introdução à expressões matemáticas formato LaTeX do Overleaf:
Outra idéia (tendência): instalar "Jupyter notebook"
Para trabalhar com o MATLAB
\(\rightarrow\) Install Jupyter-MATLAB,
Mas esta opção está disponível para usuários mais avançados, com conhecimento de linha de comandos no Linux ou Mac (ou o novo shell linux presente nas últimas versões do Windows). A página anterior funciona no Mac/Linux/Windows rodando MATLAB R2017a. Exige instalação do Anaconda e Python > 3.5.
O resultado final seria algo próximo de:
Documento atualizado em 13/09/2019 e 05/10/2020 (c) Fernando Passold