You are on page 1of 31

MATLAB

Ferramenta matemtica para Engenharia

Luciano Andr Farina


Maurcio Simes Posser

Laboratrio de Controle e Integrao de Processos

Universidade Federal do Rio Grande do Sul


Escola de Engenharia
Departamento de Engenharia Qumica
Semana Acadmica de Engenharia Qumica
AULA 1 - CONCEITOS BSICOS 3

1. O QUE O MATLAB - ESTRUTURA DOS DIRETRIOS 3


2. COMANDOS DE LINHAS 3
3. COMANDOS BSICOS 3
4. SMBOLOS E CONSTANTES 3
5. TRABALHANDO COM MATRIZES 3
6. GRFICOS 4

AULA 2 PROGRAMAO 7

1. ALGORITMOS NOES BSICAS DE PROGRAMAO 7


2. M-FILES 7
3. COMANDOS DE FLUXO E OPERADORES LGICOS 8
4. VETORIZAO 9
5. UTILIZAO DO DEBUGGER 9
6. EXCELLINK 10

AULA 3 OUTRAS FORMAS DE MANIPULAR INFORMAES 11

1. OUTRAS FORMAS DE ARMAZENAR DADOS: 11

AULA 4 SIMULINK 13

1. IDIA BSICA DO FUNCIONAMENTO DO SIMULINK 13


2. MSCARAS 15
3. S-FUNCTIONS 16
4. TABELAS DE AUXLIO 18

AULA 5 TOOLBOXES & GUIDE 21

1. TOOLBOXES 21
2. GUIDE 25

LISTA DE EXERCCIOS 28

BIBLIOGRAFIA RECOMENDADA 31

2
Aula 1 - Conceitos Bsicos

1. O que o MATLAB - Estrutura dos 3. Comandos Bsicos


diretrios Alguns comandos bsicos que ajudam o usurio na
MATLAB uma abreviao para MATrix utilizao do software so descritos a seguir:
LABoratory, um ambiente de programao de alto help: ajuda on line sobre funes do MATLAB
nvel, possuindo caractersticas de aplicativo help sin help ode23
(facilidade para o usurio) e de linguagem de who: informa as variveis presentes no workspace. O
programao (flexibilidade). comando whos retorna as variveis e algumas
Ao contrrio de linguagens clssicas como C e Fortran, informaes sobre as mesmas
no ambiente MATLAB o usurio no se preocupa com clc: limpa a tela
itens como declarao de variveis, alocao de which: informa o diretrio de execuo de uma
memria, utilizao de ponteiros e outras tarefas de determinada funo
rotina. which sin which ode23
diary: salva o texto de uma seo do MATLAB no
O MATLAB apresenta uma srie de funes diretrio corrente
matemticas j implementadas que podem ser laod/save: carrega / salva em disco as variveis do
utilizadas em uma rotina construda pelo usurio. Estas workspace como arquivo de dados (extenso .mat)
funes so agrupadas de acordo com a rea de clear: limpa variveis do workspace
interesse em toolboxes e armazenadas em diretrios clear a; clear all;
especficos. Qualquer funo a ser utilizada deve estar what: retorna os arquivos relacionados ao MATLAB
no diretrio de trabalho ou caminho (path) do presentes no diretrio de trabalho
MATLAB. dir / ls: retorna todos os arquivos do diretrio de
trabalho
2. Comandos de linhas cd: muda (ou apenas informa) o diretrio corrente
cd .. cd c:\temp cd
Todas as funes do MATLAB so executadas atravs why: grande mistrio da humanidade
de comandos digitados diretamente na rea de trabalho
(workspace) aps o prompt. 4. Smbolos e constantes
5+7 5*2 2/3
Diversos smbolos representam constantes ou limites da
2\3 2^3
mquina. Os principais so:
A resposta destas operaes ser armazenada na
eps: preciso relativa da mquina
varivel ans, cada operao atualizar o seu valor. Para
realmin/realmax: menor/maior nmero representvel
inibir a exibio da resposta na tela, deve-se terminar a
na mquina
expresso com ponto e vrgula (;). Para armezenar
inf: representao do infinito positivo
valores em uma varivel especfica, deve-se atribuir o
(-INF representa o infinito negativo)
nome da varivel:
nan: representao de uma indeterminao
a=4+2; b=7*3; c=a+b matemtica (p.ex.: 0/0; Inf/Inf)
pi: 3.1415926535897...
O MATLAB pode armazenar variveis, diferindo entre
maisculas e minsculas, ou seja, case sensitive,
deste modo as variveis x e X so diferentes. As 5. Trabalhando com matrizes
funes matemticas mais utilizadas so listadas a O MATLAB foi desenvolvido especialmente para
seguir: trabalhar com representaes matriciais de elementos,
funes trigonomtricas: sin; cos; tan; asin; acos; tendo maior eficincia quando o usurio utiliza esta
atan representao.
logaritmo decimal: log10
logaritmo natural: log Entrada de matrizes
exponencial: exp Matrizes podem ser geradas de diferentes modos:
valor absoluto: abs
Entrando os elementos explicitamente
Listas contendo funes elementares e especiais podem
ser visualizadas executando o comando help seguido a = [1 , 2 ; 3 , 4] a = [1 2]
das palavras elfun e specfunc. 3 4]
Para separar elementos de colunas diferentes pode-se
usar a vrgula ou o ESPAO. Para separar linhas usa-
se o ponto e vrgula ou o ENTER().
MATLAB Ferramenta matemtica para Engenharia

Cada elemento da matriz indexado, sendo diag(A) extrai a diagonal da matriz A


possvel extrair-se um elemento indicando sua
gera uma matriz diagonal
posio da forma linha-coluna ou da forma
diag([1 2]) com os elementos da diagonal
seqencial.
iguais a 1 e 2.
a (2) = 3 a (2,1) = 3
retorna um vetor com as
size(A)
Usando funes de construo dimenses da matriz A

Algumas funes do MATLAB auxiliam a redimensiona a matriz A


montagem de matrizes com caractersticas reshape(A,m,n) segundo o as novas
especficas. Alguns exemplos so a matriz dimenses mxn
identidade e matrizes com uns ou zeros . Outras funes podem ser encontradas no help elmat.
eye(3) ones(3) zeros(3)
Utilizando a forma : de gerao de seqncias.
STRINGS
Entende-se por strings o conjunto de caracteres colocados
a = [ 1:3 ; 4:6] entre aspas simples.
s = Este texto uma string
Operaes e Manipulaes de matrizes
Uma string entendida pelo MATLAB como um vetor de
Uma forma de manipular elementos de uma matriz caracteres, portanto, no exemplo acima, para pegarmos
utilizando a forma de indexao juntamente com apenas a palavra Este, basta fazer
comandos de lao, ou de forma mais eficiente, s(1:4)
utilizando a forma de seqncias geradas pelo operador ans =
(:). Este
Como encarada como um vetor, tambm existem formas
a (: , 1) todas as linhas da coluna 1
de manipular-mos strings atravs de indexao de seus
a (1 , : ) todas as colunas da linha 1
elementos ou ento utilizando funes especiais, como por
a ([1 3], : ) todas as colunas das linhas 1 e 3
exemplo:
As operaes de adio, subtrao, multiplicao e
eval(S) avalia a string S como uma
diviso (+ - * / ) seguem as regras de operaes
expresso do MATLAB
matriciais, enquanto que o operador ponto antecedendo
as operaes de multiplicao e diviso, faz com que a str2num(7) converte a string 7 no nmero 7
mesma seja realizada elemento a elemento.
num2str(7) converte o nmero 7 em string
[2 3; 4 5] .* [1 2; 3 4]
ans = strcat(S,T) concatena as strings S e T
[2 6 strcmp(S,T) compara as strings S e T
12 20]
Alm destas operaes bsicas, ainda pode-se aplicar Outras funes podem ser encontradas no help strfun.
funes trigonomtricas, exponenciais e logartmicas a
matrizes, as quais retornaro uma matriz com os 6. Grficos
elementos da matriz original avaliados pela funo
aplicada ponto a ponto. No caso da operao potncia Os grficos so considerados pelo MATLAB como
(^), a soluo segue regra da multiplicao matricial, figuras, nas quais pode-se visualizar de vrias formas
enquanto que a operao ponto antecedendo (.^), diferentes um conjunto de dados. Como so figuras, para
elevar elemento a elemento na potncia dada. manipul-los, pode-se utilizar comandos de linha
(diretamente atravs da barra de ferramentas da janela
[2 3; 4 5] .^2 criada para o grfico) ou ento utilizando o GUIDE, como
ans = ser visto mais adiante.
[4 9
16 25] O MATLAB apresenta uma srie de funes prontas para
Outras operaes e funes geralmente utilizadas so: montar grficos 2D, 3D, de barras, de disperso, e outros.
Para ver detalhadamente estas funes, basta dar um help
: transposta conjugada graph2d, graph3d ou specgraph, enquanto que os
eig(A) : auto valores/vetores da matriz A comandos de linha para manipul-los podem ser
norm(A): norma da matriz A encontrados no help graphics.
det(A) : determinante da matriz A
inv(A) : inversa de A 2D PLOTS
Outras funes podem ser encontradas no help matfun. Existem vrias formas de fazer grficos 2D no MATLAB,
a mais usual utilizando o comando plot. Para tanto, deve-
Para manipular matrizes ainda pode-se utilizar funes
se especificar os vetores das ordenadas e das abcissas.
especficas, como por exemplo:
x = [1:10] ; y = x;
plot(x,y);

4
MATLAB Ferramenta matemtica para Engenharia

10 title(Funo co-seno);
9

8
xlabel(X); ylabel(Y=cos(X));
7
hold on; ezplot(sin(x) , [0,pi]); hold off;
6

4
Outros comandos muito utilizados so:
3

2
axes: gera eixos
1
1 2 3 4 5 6 7 8 9 10 axis: controla a escala dos eixos
legend: adiciona legenda
Este comando faz o grfico de uma reta y = x. No caso grid on/off: adiciona/retira as linhas de grade do
da entrada ser apenas um vetor coluna, o comando plot grfico
o considera como ordenada e gera a abcissa ginput: permite clicar no grfico para pegar pontos
automaticamente. As cores da linha, bem como seu gtext: adiciona textos em qualquer posio especfica
estilo, podem ser acrescentados como argumentos na figura.
desta funo da seguinte forma:
Ainda possvel fazer mais de um grfico na mesma
plot(x, x, r, x, 2 * x, --b'); figura com o comando subplot.
20

18
subplot(1,2,1);plot(1:10,'*b');subplot(1,2,2);plot(1:10,'--m');
16

10 10
14

12 9 9

10 8 8

8 7 7

6 6 6

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

2 2

1 1
Este comando gera um grfico com duas retas, y=x e 0 5 10 0 5 10

y= 2x, a primeira em linha contnua vermelha e a


segunda descontnua azul. Desta forma o grfico da reta com o marcador * ser o
primeiro de uma figura que permite apresentar dois
As opes que podem ser utilizadas no comando plot grficos, em uma linha e duas colunas:
so as seguintes: subplot(linha,coluna,posio)
cor marcador tipo de linha
y amarelo . ponto - slido 3D PLOTS
m magenta o crculo : ponto
c ciano x x-marca -. trao-ponto Para gerar grficos 3D preciso montar uma malha com
r vermelho + cruz -- tracejada os vetores das trs dimenses envolvidas. O comando que
g verde * estrela gera esta malha com facilidade o mesgrid que toma dois
b azul s quadrado
w branco d diamante
vetores como argumento para gerar uma malha que ser
k preto v tringulo utilizada para o clculo da uma terceira dimenso.
Para mais opes basta ver no help plot.
x = [1:10] ; y = x;
Um outro comando que gera grficos de funes [X,Y] = meshgrid (x,y);
bidimensionais o ezplot, ele tem como argumento
Z = X.^2 + Y.^2;
uma funo na forma de string e um intervalo de
variao. Neste caso no preciso definir os vetores mesh (Z);
das ordenadas e abcissas.
200
ezplot(cos(x) , [0,pi]);
150

Funo co-seno
100

1
50

0
0.5 10
10
8
5
Y=cos(X)

6
0 4
2
0 0

-0.5

-1
O comando mesh cria um grfico 3D na forma de uma
0 0.5 1 1.5
X
2 2.5 3 malha. Outros comandos, como o surf e o surfl criam um
grfico com os elementos da malha preenchidos,
Para adicionar um ttulo ao grfico utiliza-se o permitindo ainda a possibilidade de uma representao
comando title, enquanto que para nomear os eixos, contnua, atravs do comando shading interp. Para
utiliza-se o comando xlabel / ylabel. Para adicionar representar linhas e pontos no espao, o comando utilizado
mais de um grfico na mesma figura, utiliza-se o o plot3, que toma trs vetores como argumento.
comando hold. Este comando funciona como uma
chave liga-desliga, adicionando outras funes no
mesmo grfico enquanto no for executado o hold off.

5
MATLAB Ferramenta matemtica para Engenharia

x = [1:10] ; y = x; z = x.^2 + y.^2; 

scatter(x,y(:,2));


plot3(x , y , z); 15

10
200

150

100 5

50

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

Faz um grfico de disperso dos dados. Equivale ao


Para alterar as cores, pode-se utilizar o comando plot(x,y,o).
colormap, que toma como argumento um vetor RGB Outros comando de manipulao utilizados em grficos
(red green blue), ou ento vetores pr definidos como 2D e 3D esto na barra de ferramentas das prprias
na tabela a seguir: figuras.
hot gray bone copper pink white flag
vga jet prism autumn cool hsv winter
abre uma figura nova seleciona objetos zom + / zoom -
abre uma figura insere texto gira o objeto
salva a figura insere seta
Grficos especiais (line, barplot...) imprime a figura insere reta
Dentre os grficos especiais, os mais utilizados so:

x=[1:10];y = [x 1.5*x];


bar(x,y);
15

10

0
1 2 3 4 5 6 7 8 9 10

Faz um grfico de barras da matriz y mxn com m


grupos de n barras verticais enquanto que o vetor x
deve ser monotonicamente crescente ou decrescente.


area(x,y);
25

20

15

10

0
1 2 3 4 5 6 7 8 9 10

Neste caso, as colunas da matriz y so apresentadas


como reas preenchidas.

pie(x);
4% 2%
5% 18%

7%

9%

16%

11%

15%
13%

Faz um grfico pizza dos valores do vetor x, que


normalizado e apresentados como propores.

6
MATLAB Ferramenta matemtica para Engenharia

Aula 2 Programao

critrio de convergncia do bloco de deciso interrompa o


1. Algoritmos Noes Bsicas de ciclo.
Programao
Para implementar esta rotina em qualquer linguagem de
Um programa nada mais do que uma seqncia de programao, basta atribuir os comandos devidos, de
comandos (rotina) estabelecida de acordo com um forma que o programa execute o algoritmo passo a passo.
objetivo pr-estabelecido, ou seja, imprescindvel
que, antes de iniciar-se um programa, o usurio esteja 2. M-FILES
completamente ciente do que ele deseja que a rotina
realiza. A linguagem de programao do MATLAB utiliza
exatamente os mesmos comandos descritos na aula
O primeiro passo para o desenvolvimento de uma anterior, do mesmo modo que eles seriam utilizados se
rotina a construo de um algoritmo para o programa, digitados no workspace, porm os comandos ficam
onde todos os comandos devem ser explicitados. Uma agrupados e a execuo de todos eles, em seqncia, pode
boa maneira para a construo do algoritmo a ser realizada digitando-se apenas o nome atribudo
utilizao de um fluxograma. A partir do fluxograma, o seqncia, que pode ser salva em um arquivo de texto com
nico trabalho do usurio traduzir o esquema para a a extenso .m. Os arquivos contendo rotinas de execuo
linguagem de programao, qualquer que seja esta. para o MATLAB so denominados m-files.
Uma simbologia para o desenho do fluxograma Para inserir comentrios no texto, usa-se o smbolo %. O
apresentada a seguir: uso de comentrios permite um melhor entendimento da
rotina por qualquer usurio.
Entrada Exibir
de dados valor A ajuda (explicao sobre o funcionamento da rotina) de
cada m-file tambm definida utilizando linhas de
comentrio. As primeiras linhas do programa, se marcadas
Deciso Processo com o marcador % so exibidas na tela quando o usurio
digira help nomearq, onde 'nomearq' o nome do arquivo
de texto.
A seguir, utilizando esta notao, mostrado um
fluxograma com o algoritmo para clculo da presso de H duas opes de utilizao dos m-files pelo MATLAB:
vapor de um lquido para uma dada temperatura usando os chamados script-files ou usando as functions.
utilizando a equao de estado de Peng Robinson. Ambas consistem da utilizao das funes bsicas do
aplicativo na seqncia desejada, sendo que o que as
Tc , Pc e , T, P0 diferencia so o local onde as variveis so armazenadas
[ ( )]
2 2 2
0 ,46 R Tc
a= 1 + m 1 Tr
Pc durante os clculos e a forma de entrada e sada de dados.
0 ,078 RTc
b=
Resolver A e B Pc
m = 0 ,37 + 1,54 0 ,27 2
Script-files
A=
aP
B=
bP A utilizao de um script-file funciona exatamente da
R 2T 2 RT mesma forma que a execuo direta de comandos no
Resolver equao
de estado, (
Z 3 + Z 2 ( B 1 ) + Z A 3B 2 2 B +) prompt do MATLAB. Quando um script-file dodado,
obtendo zL e zV B 3 + B 2 AB = 0 cada comando presente no arquivo de texto executado.
bP
ln = ( z 1 ) ln z Os script-files podem operar com variveis presentes no
RT

Calcular f V e fL a

( )
bP
z + 1 + 2 RT
workspace ou com dados criados durante a execuo. Uma
vez que este tipo de m-file no possui argumentos de
ln

(
2bRT 2 z + 1 2 bP )
RT entrada e sada, as variveis criadas so armazenadas no
f
= workspacedo MATLAB.
P
L
f L
Os script-files podem, inclusive, retornar elementos
P=P V
f
1 < tol ?
Escrever
f No fV Sim P=Psat grficos, usando comandos como plot.

No exemplo, as equaes utilizadas so mostradas ao A seguir proposto um exemplo de script-file para


lado de cada bloco de processo, o que tambm ajuda na determinar a frmula molecular de um composto orgnico
implementao. As entradas do processo so a partir da sua frmula centesimal e do peso molecular do
constantes do componente (temperatura e presso composto. O m-file pode ser escrito em qualquer editor de
crtica e fator acntrico), a temperatura desejada e uma texto, sendo armazenado com a extenso .m. Para ser
estimativa inicial para a presso de vapor. A partir executado, deve-se digitar no prompt do MATLAB o
destes dados, utilizando a equao de estado de Peng- nome do arquivo (sem a extenso), sendo que o arquivo
Robinson a rotina resolvida iterativamente at que o deve estar situado no diretrio de trabalho ou ento estar
no caminho (path) do MATLAB.

7
MATLAB Ferramenta matemtica para Engenharia

% Programa: Variveis globais versus variveis locais


% Frmula centesimal --> Frmula molecular
A definio de variveis locais vem exatamente da
% Inicializao possibilidade de utilizao de variveis que esto presentes
clc, clear all , clear global
% Pesos moleculares dos elementos
apenas no workspace de trabalho. So variveis locais
pm=[ 12.01 1.01 16 14.01 ]; todas aquelas que podem ser utilizadas quando se trabalha
% Entrada de dados em um workspace. Por exemplo, na execuo de uma
comp=input('Entre com o vetor de composies function podem ser utilizadas as variveis utilizadas como
percentuais (C,H,O,N) ');
pmc=input('Entre com o peso molecular do composto
); '
argumentos de entrada e as variveis criadas pela rotina,
% Execuo ento estas so as variveis locais do f-workspace em
prorp=pmc*comp/100; questo.
formula=round(prorp./pm)
Existem variveis que podem ser declaradas como sendo
Alguns comandos utilizados no script-file so globais e, deste modo, podem ser utilizadas como
comentados a seguir: variveis locais em diferentes workspaces. Para declarar

      
      
           

uma varivel como global deve-se utilizar o comando


                       

global variavel
Para utilizar esta varivel em um f-workspace o mesmo

                    ! "

comando deve ser dado na function que o utiliza.




      #                  $ #  

    
                

           %

3. Comandos de Fluxo e Operadores Lgicos


Determinadas rotinas utilizam uma seqncia de
Functions comandos repetidas vezes para a resoluo do algoritmo,
As rotinas escritas como functions so tambm como o caso do primeiro exemplo mostrado nesta aula, o
executadas a partir do prompt do MATLAB, e ento clculo da presso de vapor de um lquido utilizando uma
criam um workspace (a partir de agora denominado equao de estado. Neste exemplo, de acordo com a
f-workspace) prprio, onde apenas algumas (ou mesmo resposta do bloco de deciso, a rotina deve ser encerrada
nenhuma) variveis do workspace do MATLAB ou os clculos devem ser reiniciados, com um valor
entram, onde todas as variveis geradas so atualizado de um dos parmetros (no caso a prpria
armazenadas e de onde apenas as variveis desejadas presso de vapor). Para realizar este loop se utilizam os
retornam. A forma de execuo das functions segue a chamados comandos de fluxo, que realizam esta funo. A
seguinte sintaxe: deciso de qual caminho seguir executada pelos
denominados operadores lgicos, que indicam rotina
[sadas] = funcao(entradas) qual seqncias de comandos deve ser seguida de acordo
Deste modo, apenas as variveis descritas no grupo com a avaliao de algum parmetro.
entradas entram no f-workspace e apenas as descritas
em sadas retornam ao workspace do MATLAB. O comando de fluxo mais geralmente utilizado nas rotinas
funcao o nome do m-file que contm a rotina que do MATLAB o lao for e os operadores lgicos mais
determina sadas a partir de entradas. Tanto um comuns so o if e o switch. A seguir apresentamos uma
grupo quanto o outro podem ser qualquer tipo de breve descrio destes e do comando while, que opera ao
varivel do MATLAB (escalares, vetores, matrizes, mesmo tempo como comando de fluxo e operador lgico.
estruturas, strings, cell arrays, ...).
A utilizao de functions bastante til por permitir a
Lao FOR
execuo da mesma rotina para vrios conjuntos de O lao for executa uma seqncia de operaes por um
entrada sem a necessidade de alterar o arquivo de texto determinado nmero de vezes.
e por no poluir o workspace do MATLAB com as O comando for define o incio do lao, determinando o
variveis utilizadas em clculos intermedirios da intervalo em que uma varivel vai ser avaliada. Esta
rotina. varivel pode ser usada em uma seqncia de operaes,
A seguiu um exemplo de function, utilizando o mesmo definidas pelas linhas de comando do m-file que ficam
algoritmo do exemplo anterior: entre os comandos inicial e final do lao (end).
function [formula] = analise_f(comp,pmc) Para quebrar o lao em determinado ponto pode-se utilizar
% [formula] = analise_f(comp,pmc) o comando break (normalmente utilizado aps um
% Frmula centesimal --> Frmula molecular operador lgico).
% Esta function determina a formula centesimal
% de um composto orgnico a partir do vetor de A seguir um exemplo que demostra a utilizao do
% composies percentuais comp=[C,H,O,N] e do
% peso molecular do composto (pmc) comando for:
for i=1:4;
% Pesos moleculares dos elementos
pm=[ 12.01 1.01 16 14.01 ]; A(i,1)=i;
% Execuo A(i,2)=i^2;
prorp=pmc*comp/100; end
formula=round(prorp./pm);

8
MATLAB Ferramenta matemtica para Engenharia

A determina-se qual seqncia de comandos deve ser


A= seguida, sendo esta terminada com um novo case, com um
1 1 otherwise (equivalente ao comando else do operador if) ou
2 4 ainda com o terminador da operao de avaliao lgica
3 9
end.
4 16
A seguir um exemplo, utilizando o resultado do anterior.
Operador lgico IF
O operador if funciona como um condicional, for i=1:3;
for j=1:3;
avaliando uma operao relacional* e determinando switch B(i,j)
uma seqncia de comandos a ser seguida, definida a case 0
partir do ponto onde a expresso avaliada pela C{i,j}='zero';
operao relacional se torna verdadeira. case {1,-1}
C(i,j)={'nonzero'};
Vrias expresses podem ser avaliadas para a definio end
da seqncia de comandos a ser seguida, para isso se end
utilizam os operadores elseif ou else. O comando elseif end
determina uma nova condio a ser avaliada, enquanto
o comando else determina a seqncia de operaes C
caso nenhuma das condies anteriores tenha sido C=
satisfeita. 'zero' 'nonzero' 'nonzero'
'nonzero' 'zero' 'nonzero'
Para indicar o trmino de uma operao lgica if deve- 'nonzero' 'nonzero' 'zero'
se inserir o comando end rotina.
4. Vetorizao
A seguir um exemplo ilustrativo da utilizao dos
comandos if, elseif, else. O MATLAB um software desenvolvido para trabalhar
com matrizes. Quando se est construindo uma rotina de
for i=1:3; clculo e se deseja utilizar uma ferramenta de loop, onde o
for j=1:3; objetivo calcular uma expresso diversas vezes, muito
if i == j
mais eficiente trabalhar utilizando o conceito de operaes
B(i,j)=0;
elseif i>j matriciais ou vetoriais.
B(i,j)=-1; Para demonstrar o que queremos dizer, vamos apresentar
else uma rotina simples, implementada de dois modos, onde se
B(i,j)=1;
end
evidencia a diferena de eficincia entre uma
end implementao utilizando loops sua verso vetorial.
end & ' ( & ' (

B ) * + , ) * + 2 9 + 1 2 1 + ,

B= - . / 0

* 1 2 1 + + 1 3 *
6
. 7

1 + 4 )
5

0 1 1 3 4
0 5

*
&
.

-1 0 1 6
. 7

1 + 4 )
5

-1 -1 0 ) * ) 8 9 + 1 ,

: ; <

Operador while &


.

O operador while combina as funes de operador =

: > ?
.

+ 9 1 B + + + 9 + C + +

lgico do if e de lao do for. (


.

> ? @
& A ( '
.

Em suma, o operador define um lao de modo que a


A

seqncia de operaes compreendida entre o incio e o Utilizando a forma vetorizada, para este exemplo, tem-se
final do intervalo (determinada pelo end) seja realizada uma reduo de 70 % no tempo computacional.
at que uma determinada condio seja satisfeita.
5. Utilizao do DEBUGGER
Operador lgico SWITCH O MATLAB possui um editor de textos que est
O operador switch trabalha de maneira muito parecida configurado para trabalhar com sua linguagem de
ao if, porm a sintaxe e o modo de implementao so programao, o DEBUGGER.
diferentes. Com este comando pode-se avaliar apenas Para rodar o editor, digite edit na linha de comando, um
uma expresso por vez, porm ela mais documento em branco ser aberto. Case se deseje rodar o
eficientemente avaliada para diferentes condies. editor e abrir um documento de texto, basta digitar edit
O comando switch inicia o operador, indicando a seguido do nome do arquivo.
expresso a ser avaliada. Com o comando case As principais vantagens da utilizao deste editor so a
visualizao grfica dos textos digitados e a possibilidade
* de se trabalhar simultaneamente com o MATLAB e o
As possveis operaes relacionais so mostradas editor.
digitando-se help relop na linha de comando do
MATLAB
9
MATLAB Ferramenta matemtica para Engenharia

Os recursos de visualizao identificam cada tipo de


funo do MATLAB com uma cor diferente, alm de
possuir recursos (fracos) de auto-tabulao. O estilo
dos textos gerados o mesmo mostrado nos exemplos
deste captulo.
A possibilidade de utilizao simultnea do editor com
o MATLAB auxilia na procura de eventuais erros de
sintaxe no programa, uma vez que permite a execuo
de rotinas linha a linha, colocao de pontos de quebra
e execuo de intervalos do programa entre outros.
So disponveis ainda uma srie de comandos de
edio comuns, como localizar, voltar, copiar, ...

6. ExcelLink
Para facilitar o trabalho de fluxo de dados entre o
MATLAB e programas do MS-Office, foi criado o
ExcelLink, uma macro desenvolvida para o MS-Excel
que permite o envio e recebimento de dados do
MATLAB.
Executando o arquivo excllink.xla* o MS-Excel
executado, surgindo um conjunto de botes aparece na
barra de ferramentas.
O MATLAB deve ser executado a partir do Excel para
ativar o link.
Pode-se enviar dados para o MATLAB selecionando
uma ou vrias clulas e usando o boto putmatrix,
ento aparecer uma janela pedindo o nome da varivel
a ser armazenada com estes dados.
Para receber dados deve-se utilizar o boto getmatrix e
informar a varivel onde esto armazenados os dados
que quer-se buscar.
possvel ainda utilizar funes do MATLAB no
Excel. Para tanto, usa-se o boto evalstring. As
variveis de sada devem ser armazenadas no
workspace do MATLAB, ento deve-se atribuir um
nome varivel para depois import-la para o Excel.

*
As macros desenvolvidas utilizam o MS Windows 95
ou MS Windows NT 4.0; MS Excel 97; e
MATLAB 5.1 superior.
10
MATLAB Ferramenta matemtica para Engenharia

Aula 3 Outras formas de manipular informaes

1. Outras formas de armazenar dados: CELL ARRAYS


Alm das formas de armazenar dados j abordadas, As listas (ou disposio em clulas) so uma classe
existem outras maneiras de guardar informaes e especial de matrizes, cujos elementos, ou clulas, contm
acess-las proporcionando ao programador uma grande matrizes do MATLAB, permitindo que matrizes de
versatilidade em termos de construo do rotinas. diferentes dimenses possam ser armazenadas em uma
nica varivel. A sintaxe para criar uma lista (Cell Array)
A seguir sero apresentados trs destas maneiras, a seguinte:
Multidimensional Arrays, Structures e Cell Arrays, ou
seja, Matrizes Multidimensionais, Estruturas e Listas. z = { A B C ... }
Cada uma destas formas possui uma sintaxe especfica onde A, B,C,etc., podem ser matrizes, outras listas, uma
para sua construo e manipulao, permitindo assim a estrutura ou um string, por exemplo.
escolha da maneira mais adequada ao programa de
guardar e manipular informaes. a=1:3; b=[5 6;7 8]; c={a b}; d.a=a; d.b=b; z={a b c d};
a
a=
MULTIDIMENSIONAL ARRAYS 1 2 3
Matrizes multidimensionais so uma extenso do b
conceito de matrizes bidimensionais, que so acessadas b=
utilizando apenas dois ndices (linha, coluna); para o 5 6
7 8
caso de uma matriz tridimensional, o nmero de
c
ndices necessrios para localizar um elemento c=
especfico na matriz passa a ser igual a trs. Desta [1x3 double] [2x2 double]
forma, para uma matriz com dimenso igual a n, um d
elemento especfico estar definido por n ndices. A d=
figura a seguir apresenta uma forma visual de a: [1 2 3]
interpretar matrizes multidimensionais. b: [2x2 double]
z
z=
[1x3 double] [2x2 double] {1x2 cell} [1x1 struct]
Neste caso que foi apresentado, a e b so matrizes, c uma
lista com duas matrizes, d uma estrutura com dois
campos, um contendo a matriz a e outro a matriz b;
enquanto que z tambm ser uma lista, porm contendo
duas matrizes, uma lista e uma estrutura.
Este tipo de matriz pode ser construda com os mesmos Para manipulao dos elementos de uma lista tambm se
comando utilizados para matrizes bidimensionais, utiliza as chaves, que serve para indicar em que clula se
como ones, rand, e outros, porm agora com mais de encontra determinado objeto.
dois argumentos que especificam as dimenses.
z{2}
rand(2,2,3) ans =
ans(:,:,1) = 5 6
0.5466 0.6946 7 8
0.4449 0.6213
ans(:,:,2) = Desta forma, pode-se capturar a matriz b que est
0.7948 0.5226 armazenada na lista z, mas se queremos capturar um
0.9568 0.8801 elemento da matriz (p.ex.: o nmero 6), uma das
ans(:,:,3) = possibilidades a seguinte:
0.1730 0.2714
0.9797 0.2523 z{2}(1,2)
ans =
Uma matriz tridimensional, por exemplo, pode 6
representar a temperatura em pontos de uma malha Ou seja, vai especificando cada vez mais para poder
retangular em um espao tridimensional. capturar o elemento desejado, sempre seguindo a sintaxe
A maneira pela qual as matrizes multidimensionais so referente objeto que se est trabalhando, por exemplo:
manipuladas equivalente s matrizes bidimensionais, z{3}{2}(1,2)
porm agora deve-se utilizar um nmero de ndices ans =
compatvel com o nmero de dimenses para 6
referenciar as posies desejadas na matriz.
Este comando tambm retorna o nmero 6 da matriz b
porm neste caso a matriz b est dentro da lista c na

11
MATLAB Ferramenta matemtica para Engenharia

posio dois, que por sua vez ocupa a posio trs da e = struct('Disciplina','controle','Nota',9.5)
lista z. e=
Disciplina: 'controle'
Para criar uma lista de matrizes vazias pode-se utilizar Nota: 9.5000
o comando cell, que tem como argumento as
dimenses desejadas para a lista.

STRUCTURES
As estruturas so uma classe de matrizes do MATLAB
que permitem armazenar dados de naturezas diferentes
em um mesmo lugar. As estruturas diferem das Listas
por possurem nomes que identificam seus campos.
Uma forma de criar uma estrutura a seguinte:
dados.nome='fulano';
dados.idade=25;
dados.fones={[316 33 33] [316 44 44]};
dados
dados =
nome: 'fulano'
idade: 25
fones: {[316 33 33] [316 44 44]}
Como as estruturas so uma classe de matrizes, ainda
pode-se adicionar elementos a uma mesma estrutura.
Para tanto, deve-se proceder da seguinte maneira:
dados(2).nome='ciclano';
dados(2).idade=23;
dados(2).fones={[999 88 88] [777 66 55]};
dados
dados =
1x2 struct array with fields:
nome
idade
fones
dados(1)
ans =
nome: 'fulano'
idade: 25
fones: {[316 33 33] [316 44 44]}
dados(2)
ans =
nome: 'ciclano'
idade: 23
fones: {[999 88 88] [777 66 55]}
Ou ainda,
b(1,1).a=[35 36];
b(1,2).a=[37 38];
b(2,1).a=[39 40];
b(2,2).a=[41 42];
b
b=
2x2 struct array with fields:
a
b(1:2,1).a
ans =
35 36
ans =
39 40
Uma outra forma de criar uma estrutura utilizando o
comando struct, que toma como argumentos os nomes
dos campos seguidos dos seus respectivos valores.

12
MATLAB Ferramenta matemtica para Engenharia

Aula 4 Simulink
" L "

O subsistema
    W          

1. Idia Bsica do funcionamento do


E F G H I J K

         $             X   Y     Z 

Simulink Y        Z   #               

                         W        

SIMULINK uma ferramenta interativa, baseada em [ L \


$ #                     

estrutura de diagrama de blocos, voltada para a 


G

 #
V

                   #     %

modelagem, anlise e controle de sistemas. A interface


grfica do aplicativo permite que sejam criados
]
                         

modelos a patir de um conjunto de blocos j existente                     $ #    W      

(blocklibrary) ou ento criar blocos que executam                   ^    % _         


 

funes editadas pelo usurio.           $        R            R

U
" !
                 %

Para mostrar o potencial do aplicativo, vamos utilizar H V `

um exemplo. ]
       #         a          

            b     #         

Demonstrao do potencial do aplicativo


                  W          %

No MATLAB, em todos os pontos, existem exemplos c  

E F G H I J d V J
"

K
           

demonstrativos (demos) que mostram exemplos de  #                               

utilizao de cada tpico. Um destes demos, referente  b      e     %

ao SIMULINK, a simulao de um modelo termodi- f         W    X             


   

nmico de uma casa. O exemplo pode ser explorado                              %

digitando-se thermo no prompt do MATLAB. O g


                  

diagrama de blocos do exemplo ser mostrado na tela.



  W                      

i i
! L "  j L L " j " " 

T I V T J d H I G G H K J T I G


  W                   
  

   W   


i
    "  "                   

h
G J T

    $    b    $ k l O P $         

              


f                   b       a   


f              m    $    W     

O exemplo modela a termodinmica de uma casa                           m   

utilizando um equacionamento simples. Para rodar a


simulao, clique em na barra de ferramentas da
D

Construo de um modelo simples


janela do SIMULINK.
Este exemplo demonstra como utilizar comandos e aes
O termostato controla o funcionamento do aquecedor, para construir modelos prprios.
que procura manter a temperatura da casa em 70 F
(setpoint). A temperatura externa mdia de 50 F, Vamos montar um modelo para simulao dinmica da
tendo variao modelada como um seno de amplitude funo x2, de sua primeira derivada e de sua integral,
15 F e perodo de 24 horas. mostrando na tela os resultados.

O exemplo utiliza subsistemas para simplificar o Antes de tudo deve-se iniciar o aplicativo, digitando
modelo. Um subsistema um bloco que representa um simulink no prompt do MATLAB ou clicando no cone
conjunto de blocos. Este exemplo contm cinco na barra de ferramentas. Deve surgir, ento, o library
subsistemas, um representando o termostato " L "
browser, onde esto armazenados os blocos bsicos do
(
 $                   

 M
E F G

!
H I


J K

   N                        $
aplicativo.
J K G

  O P     O Q      R       S L  " "

F H G F G T J

U U
! ! " S L  "
  %

G V K T K G V K T K J F H G F G T

O subsistema House utiliza as temperaturas externa e


interna com ao do aquecedor para atualizar a
temperatura interna da casa. Um duplo clique no cone
revela a modelagem, mostrando os bolcos que
compem o subsistema.

13
MATLAB Ferramenta matemtica para Engenharia

quer. Na parte inferior da janela aparece o cone do bloco


marcado e breves informaes sobre o mesmo (as mesmas
informaes so mostradas com um duplo clique no bloco
quando este est na janela de trabalho).
Depois de encontrado o bloco, pode-se arrast-lo para a
janela de trabalho ou ento utilizar o 'Ctrl+C / Ctrl+V'.
Voltando ao nosso objetivo, a criao do modelo, devemos
escolher os blocos a serem utilizados. Existem vrias
maneiras de implementar um mesmo modelo, de forma
que o roteiro aqui sugerido no nico.
Queremos construir uma funo polinomial, sua primeira
derivada e sua integral, simulando-as e imprimindo seu
resultado. Um modo simples para isto utilizando o bloco
MATLAB Fcn para a equao polinomial, os blocos
Derivative e Integrative para calcular a derivada e a
Para iniciar um novo modelo, deve-se clicar no integral e o bloco Slope para plotar os grficos. Para
cone do library browser. Ento deve surgir um controlar o incremento na funo pode-se usar o bloco
documento em branco do SIMULINK, intitulado Ramp. Todos os blocos podem ser encontrados com a
Untitled. ferramenta de procura, e ento devem ser arrastados para a
janela de trabalho.
Agora o usurio deve buscar no library browser os
blocos que deseja utilizar em seu modelo. Os blocos Uma vez que quer-se plotar 3 grficos, pode-se copiar
so agrupados de acordo com o toolbox ao qual esto mais duas vezes o bloco Slope na janela de trabalho
vinculados (Simulink, Comunications Blockset, ...) e (usando 'Ctrl+C / Ctrl+V') ou ento alterando as
ento divididos por tipos. propriedades do bloco. Para tanto clique duas vezes no

bloco e ento selecione na barra de ferramentas.


Uma janela, intitulada 'Scope' properties aparecer, e
ento o nmero de eixos pode ser modificado em Number
of axes.
O bloco MATLAB Fcn deve ser editado colocando-se no
campo MATLAB function a funo que se deseja utilizar.
No caso quer-se calcular o quadrado do valor de entrada
(u), ento pode-se colocar no campo a expresso u^2.
Para conectar dois blocos, deve-se arrastar a sada do
primeiro at a entrada do segundo. As entradas e sadas
tm a forma de setas (>). Pode-se ainda utilizar uma
mesma linha (que carrega consigo um vetor ou um escalar)
como entrada para outros blocos, para tanto deve-se, pres-
sionando Ctrl, clicar na linha e ento arrastar at o ponto
desejado.
Pode-se nomear linhas ou ento inserir comentrios na
janela de trabalho, bastando para tanto um duplo clique
sobre a linha ou em qualquer espao no ocupado.
Com isso, acreditamos que o leitor ser capaz de montar o
modelo desejado, como mostrado a seguir.

possvel procurar-se por um bloco informando o


nome deste ao lado do cone de procura (binculo) e
clicando nele. Outra forma expandir os grupos com
um duplo clique no item desejado (Sources ou
Simulink, por exemplo) at encontrar o bloco que se

14
MATLAB Ferramenta matemtica para Engenharia

Pode-se agora testar o modelo rodando a simulao e 'menor que' no nome da corrente e ento pressionar
alterando parmetros como o polinmio, as funes de Ctrl+D.
trabalho, o intervalo de simulao.
Para salvar o modelo, clicar em Salvar como e escolher
o diretrio. Os arquivos SIMULINK tm a
extenso .mdl.

Blocos e operaes interessantes


Um grande nmero de blocos est disponvel na
biblioteca do SIMULINK. Alguns destes, juntamente
com algumas dicas de como melhor utilizar o
aplicativo so colocadas a seguir:
- Desenhar e/ou alterar malha grfica auxiliar para a - Criando subsistemas
criao do modelo: A criao de subsistemas objetiva despoluir modelos que
Para inserir uma malha auxiliar, digitar no path do possuem um grande nmero de blocos. Em um subgrupo,
MATLAB o comando como visto no exemplo da termodinmica de uma casa,
set_param('<model name>','showgrid','on') pode possuir vrias entradas e sadas, de acordo com as
onde <model name> o nome do modelo do entradas e sadas do subsistema. Pode-se adicionar um
SIMULINK. subsistema colocando-se o bloco Sub System na janela de
Para alterar a malha, digitar: trabalho ou selecionando-se um conjunto de blocos e,
set_param('<model name>','gridspacing',<number of ento, agrupando-os usando o comando Create Subsystem
pixels>) no menu Edit ou usando o atalho Ctrl+G.
- Duplicando blocos em um modelo:
Para duplicar um bloco, selecione o bloco com o 2. Mscaras
mouse e, pressionando Ctrl, leve a cpia do bloco at o
local desejado. O uso de mscaras permite a criao de caixas de dilogo e
cones especficos para subsistemas. Algumas vantagens
- Mudando a orientao de blocos: do uso de mscara so listados a seguir.
Para rodar um bloco no SIMULINK pode-se usar os
comandos do menu Format: Rotate block (roda 90 ) ou Simplificao na utilizao do modelo pela simplifica-
Flip block (roda 180 ). As teclas de atalho Ctrl+R e o na entrada de parmetro, uma vez que em um
Ctrl+F tambm podem ser usadas. Para blocos com subsistema mascarado o usurio pode inserir todos os
mais de uma entrada ou sada, a ordem destas segue o parmetros de um conjunto de blocos em uma nica
exemplo da figura a seguir. caixa de dilogo.
Permite a construo de uma interface prpria para com
o usurio, definindo-se a descrio, texto de ajuda e
cone do bloco.
Previne a modificao acidental de subsistemas, uma
vez que estes ficam protegidos atrs de uma interface.
Exemplo: criao de uma mscara para um
sistema simples
Para mostrar a utilizao de mscaras em um modelo,
vamos utilizar um exemplo simples: a criao de uma
- Vetores versus escalares caixa de dilogo para um bloco que retorna a soluo de
A maioria dos blocos do SIMULINK pode trabalhar uma equao de reta do tipo y = m.x + b.
tanto com vetores quanto com escalares. Quando, em Primeiramente necessrio montar o modelo, como j
blocos com mais de uma entrada, utilizam-se os dois descrito. O modelo deve ser semelhante ao esquema a
tipos de expresso, o bloco faz uma combinao deles, seguir:
como mostra o exemplo.

- Propagao de um sinal e nomes de correntes


Um sinal pode ser levado de um ponto a outro da Posteriormente deve-se criar um subsistema para este
janela de trabalho usando os blocos Goto e From. O modelo, selecionando todos os blocos e clicando em
nome de uma corrente tambm pode ser levada, Create Subsystem no menu Edit (ou utilizando o atalho
evitando confuses, para tanto deve-se digitar o sinal Ctrl+G). O modelo ser substitudo por um nico bloco. A

15
MATLAB Ferramenta matemtica para Engenharia

figura abaixo mostra o bloco gerado e o modelo, que


pode ser visualizado com um duplo clique no primeiro.

A ltima pasta contm informaes sobre o documento.


Os blocos In1 e Out1 representam a entrada e a sada
No campo Block description deve ser inserido um texto
do modelo, que coincidem com a entrada e a sada do
comentrio que explica ao usurio o que o bloco faz e no
bloco Subsystem.
campo Block help pode ser inserido um texto de ajuda,
Agora possvel mascarar o subsistema, para isso
com informaes mais detalhadas, uma vez que estas s
clique em Mask Subsystem no menu Edit (Ctrl+M).
sero exibidas a pedido do usurio.
Abrir ento a janela de edio de mscaras, que
permite a criao do cone e da caixa de dilogo para o A figura abaixo mostra o resultado obtido seguindo as
subsistema, podendo ser aberta usando novamente o instrues acima:
atalho Ctrl+M com o sistema selecionado.
A primeira pasta do editor contm as opes de edio
do cone. No campo Mask type pode-se entrar uma
expresso referente ao subsistema, como o nome. No
campo Drawing commands define-se a aparncia do
bloco. Pode-se utilizar comandos grficos (line,
plot, ...) ou ento texto (disp, text). Ainda se encontra
nesta pasta opes de aparncia do bloco, que podem
ser configuradas de acordo com a aplicao. A seguir
mostrada uma sugesto de configurao para o
subsistema estudado.

3. S-functions
As chamadas S-functions (System Functions) so
descries de sistemas dinmicos, escritas em uma
linguagem de programao prpria (ou em C e compiladas
como MEX-files), que interage com os solvers do
SIMULINK. Seu uso mais comum est vinculado ao
seguintes pontos:
Criao de novos blocos para o SIMULINK
Incorporao de cdigos em C a uma simulao
Descrio de um sistema como uma seqncia de
A segunda pasta contm os parmetros de inicializao equaes matemticas ao invs de utilizar a lgebra de
da mscara, onde a caixa de dilogo definida. Para blocos
Utilizao de animaes grficas (ver penddemo).
inserir um campo da caixa de dilogo, clicar em Add,
ento um novo campo ser adicionado lista. Este Todos blocos do SIMULINK trabalham com entradas (u),
campo deve ser definido, escolhendo-se o tipo sadas (y) e elementos internos, ou estados (x). O esquema
(editvel, caixa de checagem ou lista de opes) em a seguir demonstra cada elemento do bloco:
Control type, o nome e o smbolo da varivel associada
ao campo (Prompt e Variable) e a ao a ser tomada
para o valor do campo (Evaluate calcula a varivel e
Literal a mantm como string). Para o exemplo
y = m.x + b uma sugesto de janela, demonstrando o A relao matemtica entre os elementos pode ser
uso do menu popup mostrado a seguir. sintetizada por

16
MATLAB Ferramenta matemtica para Engenharia

y = f (t , x , u )
n
sys = ['n de estados contnuos, n de estados discretos', 'n
x de sadas', 'n de entradas', 'flag para utilizao da entrada
= x = g( t, x, u )
t para determinao do prximo passo', 'nmero de tempos
de amostragem']
ou seja, os estados nada mais so do que as variveis
do modelo que so derivadas no tempo.
Normalmente, para sistemas contnuos, se utilizam apenas
Nos arquivos de S-functions os vetores de estado so as posies 1, 3 e 4 da matriz. As demais posies so
divididos em duas partes, uma primeira que contm substitudas por zero.
apenas estados contnuos e uma segunda que contm
estados discretos. Quando flag vale um devem ser informadas as equaes
diferenciais do modelo e quando flag vale 4 devem ser
O SIMULINK faz vrias chamadas de cada bloco do
informadas as equaes de sada da S-function.
modelo durante fases especficas de simulao,
executando tarefas como clculo das sadas,
Para melhor compreender o funcionamento das S-functions
atualizao de estados, ou determinao de derivadas.
vamos utilizar dois exemplos simples.
Chamadas adicionais so feitas no princpio e trmino
de uma simulao para executar a inicializao e a
terminao. A figura a seguir ilustra como o Criao de uma S-function simples para
SIMULINK executa uma simulao. Primeiro, o integrao do sinal de entrada
realizada a inicializao de cada bloco, inclusive das S- Vamos criar uma S-function que realiza a integrao do
functions. Ento o SIMULINK entra no loop de sinal de entrada. Nesta simples implementao utilizamos
simulao, onde cada passagem pelo loop chamado o conceito de flags e a seqncia do fluxograma.
um passo de simulao. Durante cada passo da
simulao, o SIMULINK executa seu bloco S-function. O modelo a ser construdo, ento,
n

Isto continua at o simulao esteja completa.


x = x =u
t
Determina condies iniciais
y = x = x dt = u dt
t
Calcula tamanho do prximo passo
(apenas para blocos com passo varivel) Para escrever a S-function, ento, devemos abrir o
Debugger e digitar a rotina:
Passo de simulao

Calcula sadas
function [sys, x0] = sfint(t,x,u,flag)

Atualiza estados discretos


if flag == 0,
x0 = 0; % Condies iniciais
Integrao

Recalcula sadas sys = [1 0 1 1 0 0]'; % Definio do


% tamanho dos vetores
Calculata derivadas elseif abs(flag) == 1,
sys = u; % dx/dt = u
elseif flag == 3,
Terminao, executa sys = x; % y = x
qualquertarefa exigida else
sys = []; % No utilizar
O SIMULINK informa s S-functions o estgio atual % demais flags
da simulao, ou seja, qual parte da rotina deve ser end
executada, atravs das flags. Deste modo cada parte da
Para testar a rotina implementada, montar o seguinte
rotina deve ser iniciada com um controlador de fluxo
modelo no SIMULINK. No campo S-function name, do
(if, case) A tabela a seguir mostra cada estgio da
bloco S-function, entre o nome do arquivo .m (sfint). O
simulao, a respectiva rotina na S-function e o valor da flag.
resultado obtido tambm mostrado abaixo:
Estgio da simulao Rotina da S-Function Flag
Inicializao mdlInitializeSizes flag = 0
Clculo do prximo passo mdlGetTimeOfNext
flag = 4
(opcional) VarHit
Clculo das sadas mdlOutputs flag = 3
Atualizao dos estados
mdlUpdate flag = 2
discretos
Clculo das derivadas mdlDerivatives flag = 1
Trmino da simulao mdlTerminate flag = 9

Deste modo, quando a flag vale zero vai ser realizada a


inicializao das variveis. Neste ponto, a S-function
deve retornar o tamanho dos vetores de entrada, sada e
estados. Para isso deve conter a expresso

17
MATLAB Ferramenta matemtica para Engenharia

if ~exist('par')
par = [1 1 .2 100]; % Valores default
end

K = par(1); %kg m^-0,5 s^-1


ro = par(2); %kg/m^3
A = par(3); %m^2
h0 = par(4); %m

switch flag
case 0
x0 = h0; % Condies iniciais
sys = [1 0 2 1 0 0]'; % Tamanho dos vetores
case 1
sys = (u-K*sqrt(x))/(ro*A); % EDO do sist.
case 3
sys(1) = x; % h (nvel do tanque)
sys(2) = K*sqrt(x); % Fo (vazo de sada)
case {1, 2, 4, 9}
sys = []; % No utilizar flags
end

A implementao sugerida utiliza os parmetros


(constantes) informados no prprio bloco da S-function ou
ento os valores padro. Diferena entre este exemplo e o
anterior a utilizao do controlador de fluxo switch/case
para a atualizao das flags.
Para testar a S-function criada, sugerimos a construo de
Criao de uma S-function simples para a um modelo do SIMULINK como o mostrado na figura a
modelagem no linear de um tanque seguir, que possibilita a verificao do comportamento
Deseja-se fazer a modelagem no linear de um tanque dinmico do sistema frente a perturbaes na alimentao.
onde a entrada e sada de lquido so controladas pela
ao da gravidade. Deseja-se analisar a variao do
nvel e da vazo de sada do tanque (resposta do
sistema) frente a variaes na alimentao (perturbao
no sistema).
FI

V Ab
h

FO

Considerando que o lquido possui massa especfica


constante, que o tanque isotrmico e de mistura Com o modelo construdo pode-se simular o comporta-
perfeita, o balano mssico do tanque pode ser descrito mento de um ou mais tanques com diferentes dimenses,
por condies iniciais e disposio (em srie ou em paralelo).

dV Pode-se ainda criar uma mscara para o bloco, construindo


FO FI = um cone prprio e uma caixa de dilogo para a entrada
dt
dos parmetros.
Modelando a hidrulica do sistema por F O = K h e
4. Tabelas de auxlio
sabendo que V = A b h , e equao diferencial do
sistema pode ser reescrita como Nesta seo so mostrados os nomes e funes de alguns
blocos do SIMULINK.
dh FI K h
= h ( t , FI )
dt A b Table 1: Sources Library Blocks
Band Limited Introduce white noise into a continuous
h (t 0 ) = h 0 W hite Noise system.
Chirp Signal Generate a sine wave with increasing
Agora podemos implementar este modelo como frequency.
S-function. Um modo de implementao apresentado Clock Display and provide the simulation
a seguir: time.
function [sys, x0] = sftank(t,x,u,flag,par) Constant Generate a constant value.

18
MATLAB Ferramenta matemtica para Engenharia

Digital Clock Generate simulation time at the Abs Output the absolute value of the input.
specified sampling interval. Algebraic Constrain the input signal to zero.
Digital Pulse Generate pulses at regular intervals. Constraint
Generator Combinatorial Implement a truth table.
From File Read data from a file. Logic
FromWorkspa Read datafrom amatrixdefined in the Complex to Output the phase and magnitude of a
ce workspace. Magnitude- complex input signal.
Pulse Generate pulses at regular intervals. Angle
Generator Complex to Output the real and imaginary parts of
Ramp Generate a constantly increasing or Real-Imag a complex input signal.
decreasing signal. Derivative Output the time derivative of the input.
Random Generate normally distributed random Dot Product Generate the dot product.
Number numbers. Gain Multiply block input.
Repeating Generate a repeatable arbitrary signal. Logical Perform the specified logical operation
Sequence Operator on the input.
Signal Generate various waveforms. Magnitude- Output a complex signal from
Generator Angle to magnitude and phase inputs.
Sine Wave Generate a sine wave. Complex
Step Generate a step function. Math Perform a mathematical function.
Uniform Generate uniformly distributed random Function
Random numbers. Matrix Gain Multiply the input by a matrix.
Number MinMax Output the minimum or maximum
input value.
Table 2: Sinks Library Blocks Product Generate the product or quotient of
Display Show the value of the input. block inputs.
Scope Display signals generated during a Real-Imag to Output a complex signal from real and
simulation. Complex imaginary inputs.
Stop Stop the simulation when the input is Relational Perform the specified relational
Simulation nonzero. Operator operation on the input.
To File Write data to a file. Rounding Perform a rounding function.
To Workspace Write data to a matrix in the Function
workspace. Sign Indicate the sign of the input.
XY Graph Display an XY plot of signals using a Slider Gain Vary a scalar gain using a slider.
MATLAB figure window. Sum Generate the sum of inputs.
Trigonometric Perform a trigonometric function.
Table 3: Discrete Library Blocks Function
Discrete Filter Implement IIR and FIR filters.
Discrete Implement a discrete state-space Table 6: Functions & Tables Library Blocks
State-Space system. Fcn Apply a specified expression to the
Discrete-Time Perform discrete-time integration of input.
Integrator asignal. Look-Up Perform piecewise linear mapping of
Discrete Implement a discrete transfer function. Table the input.
Transfer Fcn Look-Up Perform piecewise linear mapping of
Discrete Zero- Implement a discrete transfer Table (2-D) two inputs.
Pole functionspecified in terms of poles and MATLAB Apply a MATLAB function or
zeros. Fcn expression to the input.
First-Order Implement a first-order sample-and- S-Function Access an S-function.
Hold hold.
Unit Delay Delay a signal one sample period. Table 7: Nonlinear Library Blocks
Zero-Order Implement zero-order hold of one Backlash Model the behavior of a system with
Hold sampleperiod. play.
Coulomb & Model discontinuity at zero, with linear
Table 4: Continuous Library Blocks Viscous gain elsewhere.
Derivative Output the time derivative of the input. Friction
Integrator Integrate a signal. Dead Zone Provide a region of zero output.
Memory Output the block input from the Manual Switch between two inputs.
previous time step. Switch
State-Space Implement a linear state-space system. Multiport Choose between block inputs.
Transfer Fcn Implement a linear transfer function. Switch
Transport Delay the input by a given amount of Quantizer Discretize input at a specified interval.
Delay time. Rate Limiter Limit the rate of change of a signal.
Variable Delay the input by a variable amount Relay Switch output between two constants.
Transport of time. Saturation Limit the range of a signal.
Delay Switch Switch between two inputs.
Zero-Pole Implement a transfer function specified
in terms of poles and zeros. Table 8: Signals & Systems Library Blocks
Bus Selector Output selected input signals.
Table 5: Math Library Blocks Configurable Represent any block selected from a

19
MATLAB Ferramenta matemtica para Engenharia

Subsystem specified library.


Data Store Define a shared data store.
Memory
Data Store Read data from a shared data store.
Read
Data Store Write data to ashareddatastore.
Write
Data Type Convert a signal to another data type.
Conversion
Demux Separate a vector signal into output
signals.
Enable Add an enabling port to a subsystem.
From Accept input from a Goto block.
Goto Pass block input to From blocks.
Goto Tag Define the scope of a Goto block tag.
Visibility
Ground Ground an unconnected input port.
Hit Crossing Detect crossing point.
IC Set the initial value of a signal.
Inport Create an input port for a subsystem or
an external input.
Merge Combine several input lines into a
scalar line.
Model Info Display revision control information in
a model.
Mux Combine several input lines into a
vector line.
Outport Create an output port for a subsystem
or na external output.
Probe Output an input signals width, sample
time, and/or signal type.
Subsystem Represent a system within another
system.
Terminator Terminate an unconnected output port.
Trigger Add a trigger port to a subsystem.
Width Output the width of the input vector.

20
MATLAB Ferramenta matemtica para Engenharia

Aula 5 Toolboxes & GUIDE

limit
1. Toolboxes
Calcula o limite de uma funo. A sintaxe a seguinte:
A idia desta seo apresentar sucintamente algumas
das funes consideradas como as mais utilizadas pelo limit (F, x, a, right ou left);
estudante de graduao e ps-graduao no decorrer do Esta expresso calcula o limite da funo F (string) para
curso e tambm as potencialidades desta grande x a pela direita ou pela esquerda.
ferramenta: o MATLAB. Portanto no o objetivo Antes de executar esta funo, deve-se transformar as
desta seo entrar em maiores detalhes, os quais podem variveis envolvidas no clculo em objetos simblicos
ser obtidos em manuais gigantescos que existem para atravs da funo syms.
cada um dos toolboxes que sero apresentados ou ento
uma ajuda razovel que pode ser obtida no help on syms x
line. limit((x-2)/(x^2-4),x,2)
ans =
1/4
Symbolic Math
solve
Este toolbox permite trabalhar com funes na forma
simblica, retornando uma soluo analtica para os Resolve simbolicamente equaes algbricas. As equaes
problemas. De um modo geral, existem duas formas de e as variveis desconhecidas devero ser expresses
se trabalhar com expresses simblicas; a primeira simblicas ou strings.
utilizando strings enquanto que a outra utilizando
objetos simblicos. Os objetos simblicos so uma solve('p * sin(x) = r','x')
classe definida pelo MATLAB que permite sua ans =
manipulao atravs de funes especficas do asin(r/p)
symbolic toolbox.
[x,y] = solve('x^2 + x * y + y = 3','x^2 - 4*x + 3 = 0')
A seguir so apresentadas algumas das funes mais x=
utilizadas neste toolbox. Para mais detalhes sobre estas [ 1]
funes ou para procurar outras funes existentes, [ 3]
pode-se utilizar o help on line do MATLAB y=
procurando por symbolic. [ 1]
[ -3/2]
diff
dsolve
Esta funo calcula a derivada simblica de uma
funo que est na forma de string. Calcula a soluo simblica de equaes diferenciais
ordinrias. As equaes devem estar na forma de strings e
diff('sin(a)','a')
a varivel a ser diferenciada em relao a varivel
ans =
cos(a)
independente antecedida pela letra D. No caso da ordem
ser maior que um, utiliza-se a notao: D2, D3, etc. Por
No caso do argumento desta funo ser um vetor, ela definio, a varivel independente t, mas pode ser
retornar a diferena entre os elementos i+1 e i. E no alterada na chamada da funo colocando a nova varivel
caso de matrizes, pode-se definir a ordem (o) da na ltima posio da chamada da funo. As condies
diferena em se ela ser aplicada sobre as linhas (1) ou iniciais so especificados por equaes do tipo: y(a)=b
colunas(2). A sintaxe neste caso a seguinte: ou Dy(a)=b , onde y uma das variveis dependentes
diff (X, o, 1 ou 2); enquanto a e b so constantes. Se o nmero de condies
iniciais for menor que o de variveis dependentes, sero
int colocadas constantes arbitrrias (C1, C2,...) na soluo
Calcula a integral de uma funo. Esta funo pode final.
fazer diferentes tipos de clculos de acordo com os dsolve('Dx = - a * x')
argumentos de entrada: ans =
C1*exp(- a * t)
int(S) calcula a integral definida de S em relao
varivel definida pela funo findsym. S uma string x = dsolve('Dx = - a * x', 'x(0) = 1','s')
ou uma varivel sym. x=
int (S,v) calcula a integral indefinida de S e, relao a exp(- a * s)
string v.
int (S,a,b) calcula a integral definida de S em relao a o

y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0')


sua varivel simblica para o intervalo [a b]. y=
int (S,v,a,b) calcula a integral definida de S em relao [ sin(t)]
v para o intervalo [a b]. [ - sin(t)]

21
MATLAB Ferramenta matemtica para Engenharia

S = dsolve('Df = f + g', 'Dg = -f + g', 'f(0) = 1','g(0) = 2') A lista de todas as opes disponveis pode ser encontrada
S= no help on line procurando por optimset.
f: [1x1 sym]
g: [1x1 sym] fzero
[S. f S. g]
ans =
Este comando calcula os zeros de uma funo escalar.
[ exp(t)*(cos(t)+2*sin(t)), - exp(t)*(sin(t)-2*cos(t))] Tem como argumentos bsicos a funo que se deseja
determinar os zeros e um vetor com os intervalos da regio
laplace onde ser feita a busca (sign(f(x1)) sign(f(x2))).
Calcula a transformada de Laplace de uma funo em Geralmente a funo um M-file criado especificamente
relao a varivel t (padro). Se a funo for dada em para este problema, que deve pegar valores reais como
termos de s, ento laplace retorna a sua inversa em t. argumento e retornar valores reais. Outra opo
utilizando o comando inline, que cria uma funo objeto
As variveis utilizadas nesta funo devem ser objetos para ser utilizada pelo comando fzero.
simblicos, portanto sempre devem ser declaras antes
atravs do comando syms. f=inline('x^2-6*x+5');
fzero(f,[0 2])
syms a s t w x Zero found in the interval: [0, 2].
laplace(t^5) ans =
ans = 1
120/s^6 fzero(f,7)
laplace(exp(a * s)) Zero found in the interval: [4.76, 8.5839].
ans = ans =
1/(t - a) 5
laplace(sin(w * x),t)
ans = fsolve
w/(t^2+w^2) Resolve equaes no lineares do tipo: F(X) = 0,
laplace(diff(sym('F(t)')))
utilizando o mtodo dos mnimos quadrados, onde F e X
ans =
s * laplace(F(t), t, s)-F(0) podem ser vetores ou matrizes. A funo F deve ser
implementada na forma de um M-file. A sintaxe deste
comando a seguinte:
Optimization Toolbox
Neste toolbox encontram-se funes para clculos de X = fsolve(funo.m, X0, opes, P1, P2, ...);
otimizao, ou seja, problemas minimizao com ou onde X0 a matriz com os valores para inicializar o
sem restries, minimizao de funes multi- problema, opes o conjunto de opes definidas com o
objetivos, mtodo dos mnimos quadrados linear e no optimset e P1, P2,... so os parmetros que so passados
linear, clculo de zeros, etc. Todos estes algoritmos para a funo.
possuem opes especficas inerentes aos mtodos
utilizados, a tolerncia permitida, dentre outras. Para fminbnd
definir quais sero estas opes, o MATLAB utiliza Resolve o problema de minimizao de uma funo
uma estrutura que guarda todas as informaes escalar no linear com restrio. A sua sintaxe geral a
necessrias que sero utilizadas por uma funo seguinte::
especfica. Esta estrutura pode ser definida utilizando o
comando optimset, que apresentado em seguida. X = fminbnd(FUN, x1, x2, opes, P1, P2, ..)

Maiores detalhes sobre algumas das funes onde X o valor do mnimo local pertencente ao intervalo
apresentadas ou para procurar outras funes, pode-se (x1 , x2) da funo FUN que em geral um M-file. A outra
utilizar o help on line do MATLAB procurando por forma de resolver utilizando o comando inline.
optim. f =inline('(x-2)^3+5*(x-2)^2+13');
optimset x = fminbnd(f,0,6)
Optimization terminated successfully:
Cria uma estrutura com as opes que sero utilizadas the current x satisfies the termination criteria using
pelas funes do Optimization Toolbox. A sua sintaxe OPTIONS.TolX of 1.000000e-004
a seguinte: x=
2.0000
options = optimset(par1,valor1,par2,valor2,...)
lsqnonlin
Outra forma de definir os parmetros utilizar os
parmetros padres utilizados pela funo que se Resolve problemas no lineares de mnimos quadrados
deseja utilizar. Para isso, deve-se entrar uma string com a seguinte forma:
com o nome da funo como argumento para optimset. min{sum[FUN(X).^2]}
optimset ( fzero ); onde X e os valores retornados pela funo FUN podem
Para fazer uma cpia das opes antigas e alterando ser vetores ou matrizes. A sintaxe geral a seguinte:
apenas algumas, deve-se proceder da seguinte maneira: X = lsqnonlin(FUN, X0,LB,UB, opes, P1, P2, ..)
new_opts = optimset(old_optos, par1,valor1);

22
MATLAB Ferramenta matemtica para Engenharia

onde X0 a matriz de inicializao, enquanto que LB e


s+1
UB so os limites inferiores e superiores, y
respectivamente, das variveis desejadas. A funo s2 +s+1
Entrada(Step) Funo de Transferncia sada
FUN que em geral um M-file, deve retornar um vetor u(t) y(t)
G(s)
com as funes objetivos. A outra forma de resolver
utilizando o comando inline.
x = lsqnonlin(inline('sin(x . * x)'),0.3,-0.5, 0.5) A seguir sero apresentadas algumas funes do control
Optimization terminated successfully: toolbox que permitem uma anlise rpida e clara das
Relative function value changing by less than caractersticas principais de um sistema qualquer. A
OPTIONS.TolFun seqncia na qual elas so apresentadas, segue
x= aproximadamente a ordem de uma anlise real. Para
0.0139 maiores detalhes sobre algumas das funes apresentadas
ou para procurar outras funes, pode-se utilizar o help on
Control System Toolbox line do MATLAB procurando por control.
Este toolbox apresenta uma srie de funes destinadas tf
a facilitar quem trabalha na rea de controle de
processos. Os comandos que sero apresentados fazem Gera um objeto do modelo LTI que possui como uma das
parte do conhecimento da teoria de controle bsica, que suas informaes a funo de transferncia, tendo como
deve estar no sangue de quem um dia pretende argumentos os coeficientes do numerador e o
passar pela disciplina de Controle de Processos denominador. Um objeto LTI uma das formas de
ministrada pelo Prof. Jorge O. Trierweiler (UFRGS). representao para modelos lineares invariantes no tempo,
que pode ser manipulado pelas diversas ferramentas
Antes de iniciar a apresentao dos comandos, convm disponveis no control toolbox. A sintaxe geral a
dar uma breve introduo do que vem a ser uma funo seguinte:
de transferncia e alguns outros conceitos.
G = tf(NUM,DEN);
Uma funo de transferncia serve basicamente para
avaliar uma entrada e dar o valor da sada No caso de haver uma entrada e uma nica sada (SISO),
correspondente aquela entrada. A sua origem vem da NUM e DEN so vetores com os coeficientes do polinmio
modelagem de um processo qualquer (linear ou no), o do numerador e do denominador, respectivamente. Para o
qual se deseja controlar. Como o a modelagem caso de mais de uma entrada e mais de uma sada
geralmente consiste de um conjunto de equaes (MIMO), NUM e DEN devem ser colocados em uma lista
diferenciais lineares ordinrias em relao ao tempo, (cell array) em posies especficas determinadas pelas
pode-se aplicar a transformada de Laplace, a qual reduz entradas e sadas que a funo relaciona.
o problema de se resolver um sistema de equaes num=[1 1];den=[1 1 1];
diferencias a um problema algbrico relativamente G = tf(num, den)
simples. Na resoluo deste problema que as Transfer function:
variveis de interesse (entrada/sada) so relacionadas s+1
por uma funo, a qual recebe o nome de funo de ---------------
transferncia. Convm salientar que no caso do modelo s^2 + s + 1
ser no linear, pode-se, utilizando a expanso em srie step
de Taylor, linearizar este modelo um ponto qualquer,
geralmente o ponto de interesse o correspondente ao Esta funo aplica um sinal degrau na entrada do sistema,
estado estacionrio do sistema, onde a planta que representado por uma funo de transferncia, por
operada. exemplo, e ento avalia a sada apresentando o resultado
graficamente.
Uma funo de transferncia se resume basicamente a
uma funo racional de dois polinmios, aos quais Para sistemas MIMO, esta funo mantm aplica a funo
usual a designao num(numerador, cujas razes degrau em uma das entradas mantendo constante as
eqivalem aos zeros do sistema) e den (denominador, demais, avaliando seu efeito nas sadas. Existem inmeras
cujas razes eqivalem aos plos do sistema, e que por opes que esta funo permite utilizar, portanto
sua vez esto relacionados com a dinmica do conveniente dar uma olhada no help on line do MATLAB,
processo). Portanto, uma funo de transferncia tem a procurando por step.
seguinte aparncia: Se fizermos:
K ( o S + 1) step(G);
( 2
)
1 2 S + 1 + (1 + 2 )S + 1 ou
step(num,den);
Os polinmios so colocados desta forma pois pode-se O resultado ser o seguinte:
identificar mais facilmente as constantes de tempo
bem como as razes do denominador e do numerador
(plos e zeros, respectivamente). Em malha aberta, ou
seja, sem estar controlando o sistema, a representao
em diagrama de blocos a seguinte:

23
MATLAB Ferramenta matemtica para Engenharia

Step Response

1.4
From: U(1)
pade
1.2

1
Faz a aproximao de Pad, muito utilizada para
representar o tempo morto. Tem como argumento o valor

Amplitude
0.8

To: Y(1)
0.6
do tempo morto e a ordem da aproximao, retornando
0.4

0.2
uma funo do tipo NUM/DEN. Quando executado sem os
0
0 2 4 6 8 10 12
argumentos de retorno da esquerda, este comando compara
Time (sec.)
a aproximao feita com a resposta exata do tempo morto
zpkdata de um sinal degrau e da defasagem. Para um tempo morto
igual a 4, fazendo a aproximao de Pad de ordem 8, o
Este comando pega de um objeto LTI e retorna os resultado o seguinte:
valores dos zeros, plos e ganho do sistema, que so
informaes teis na anlise de estabilidade do modelo
q

pade(4,8);
e posterior construo do controlador. 1.5
Step response of 8th-order Pade approximation

Amplitude
[z,p,k] = zpkdata(G) 0.5

z= -0.5
0

[-1]
0 1 2 3 4 5 6 7 8
Time (secs)
Phase response
0

p= -500

Phase (deg.)
-1000
[2x1 double] -1500

k= -2000

-1 0 1
10 10 10
1 Frequency (rad/s)

p{1} bode
ans =
-0.5000 + 0.8660i Apresenta o diagrama de Bode. Tem como argumento o
-0.5000 - 0.8660i objeto criado do modelo LTI. Neste grfico possvel se
obter muitas informaes sobre o sistema referentes a sua
pole
estabilidade.
Retorna os valores dos plos do sistema. Toma como
argumento um objeto LTI. Este comando eqivale a bode(G)
r

calcular os autovalores da matriz A na representao Bode Diagrams

From: U(1)

no espao de estado utilizando o comando eig. 5

-5
Phase (deg); Magnitude (dB)

-10
p

pole(G) -15

-20

ans = 0

-20

-0.5000 + 0.8660i -40


To: Y(1)

-60

-0.5000 - 0.8660i -80

-100
10-1 100 101

zero Frequency (rad/sec)

Retorna o valor do zero de um modelo LTI. Ainda pode nyquist


retornar o valor do ganho se no vetor de sada tiver Faz o grfico de Nyquist tomando como argumento o
mais de duas variveis. objeto criado do modelo LTI. A anlise deste grfico
[Z,K] = zero(G) permite fazer inferncias sobre a estabilidade do modelo
Z= em malha fechada a partir da observao da sua resposta
-1 em malha aberta.
K=
1 q

nyquist(G);
pzmap 1.5
Nyquist Diagrams
From: U(1)

Apresenta graficamente a localizao dos zeros e dos


0.5

plos, permitindo uma anlise visual sobre a


Imaginary Axis
To: Y(1)

estabilidade de um sistema, por exemplo. Este -0.5

comando usa como argumento um objeto do modelo -1

LTI. -1.5
-1 -0.5 0 0.5 1 1.5

Real Axis

pzmap(G);
margin
Resulta na seguinte figura:
Pole-zero map
Este comando retorna a margem de ganho e a margem de
1

0.8
fase de um sistema tendo como entrada o objeto gerado
0.6 para o modelo LTI. Quando executados sem os argumentos
0.4

0.2
de retorno dos valores esquerda, ele apresenta
Imag Axis

-0.2
graficamente como estes valores so obtidos atravs do
-0.4

-0.6
diagrama de Bode.
-0.8

-1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Real Axis

24
MATLAB Ferramenta matemtica para Engenharia

[K,P]=margin(G) forma amigvel, ou seja, utilizando uma interface grfica,


K= o Graphical User Interface (GUI), para criar outras.
Inf
P=
109.4712 Conceitos Bsicos
[K,P]=margin(G) O Handle Graphics uma estrutura orientada para objeto
Bode Diagrams que permite a criao e manipulao de grficos e
Gm = Inf, Pm=109.47 deg. (at 1.4142 rad/sec)
5

0
imagens. Os Object Handles podem ser considerados
-5
como indicadores nicos atribudos pelo MATLAB para
Phase (deg); Magnitude (dB)

-10

-15

-20
cada objeto, permitindo desta maneira referenciar estes
0

-50
objetos para manipul-los. Existem 3 formas de se obter
-100

-150
um handle:
-200
10-1 100

Frequency (rad/sec)
101
a) na criao do objeto

rlocus b) atravs de comandos utilitrios

Retorna os valores e faz um grfico com o lugar das c) utilizando o findobj


razes para um modelo SISO, tendo como argumento Para o caso de se desejar obter o handle do objeto na sua
um objeto do modelo LTI. O grfico dos lugares das criao (a), basta armazen-lo um uma varivel, pois os
razes utilizado para analisar o sistema em malha handles so retornados automaticamente pelas suas
fechada, apresentando tambm as trajetrias dos plos funes de criao.
em malha fechada quando o ganho varia de zero a
infinito. s

p = plot([1:10],sin(2*[1:10]));
s

rlocus(G); Neste caso o handle do grfico da funo seno ficar


armazenado na varivel p, portanto se desejar-mos fazer
1

0.8
qualquer modificao no grfico utilizando seu handle,
0.6

0.4
basta utilizar p.
0.2

A segunda forma de se obter um handle via comandos


Imag Axis

-0.2

-0.4
utilitrios (b):
-0.6

-0.8 b.1) gcf retorna o handle da figura corrente


-1
-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1
Real Axis
b.2) gca retorna o handle dos eixos correntes
ltiview b.3) gco retorna o handle do objeto corrente
Abre o LTI viewer, o qual permite estudar as diversas b.4) gcbf obtm handle para CallBack Figure
anlises apresentadas anteriormente em uma nica
janela. Ele utiliza como argumentos um modelo LTI b.5) gcbo obtm handle para CallBack Object
criado previamente e o tipo de anlise que se deseja
A terceira forma atravs do comando findobj (c), que
realizar.
procura na figura o objeto atravs de propriedades
ltiview('step',G); especficas do objeto de interesse (como o TAG do objeto,
Step Response
From: U(1)
por exemplo) e retorna o seu handle.
1.4

1.2
Este comando ir procurar atravs de toda a hierarquia de
1
objetos na figura at encontrar o objeto que possua as
Amplitude

0.8

propriedades especificadas, porm, esta busca pode ser


To: Y(1)

0.6

0.4 mais rpida se tambm for informado o objeto a partir do


0.2 qual se deve iniciar a busca. A sua sintaxe a seguinte:
0
0 1 2 3 4 5 6 7

Time (sec.)
var_handle = findobj(ponto_incio,propriedade,valor)
Este grfico foi obtido selecionand o estudo da resposta exemplo:
do sistema quando sugeito a uma entrada degrau, que
pode ser selecionada clicando com o boto direito do plot([1:10]);
h = findobj(gca, 'Color',[0 0 1]);
mouse sobre a figura e escolhendo o tipo de grfico set (h, Color, [1 0 0]);
(plot type). Pode-se ainda obter caractersticas do
sistema, como tmpo de subida, estado estacionrio, Neste exemplo, o handle da linha do grfico identificado
tempo de assentamento, etc. de forma interativa pela sua cor azul e armazenado em h, e em seguida,
utilizando o mouse. atribuda a cor vermelha para a mesma.
Como visto no exemplo, uma das formas de manipular-
2. GUIDE mos objetos grficos atravs do comando set, enquanto
Esta uma mais uma das ferramentas poderosas do que para pegarmos valores especficos de uma propriedade
MATLAB, que permite a construo de uma interface de um objeto, utiliza-se o comando get, em ambos os casos
amigvel para o usurio e o que melhor, de uma o handle funciona como endereo onde ser feita a ao.

25
MATLAB Ferramenta matemtica para Engenharia

Uma maneira mais simples de trabalhar com os objetos f) Ainda com o boto da figura selecionado, clique no
grficos atravs do Graphical User Interface que boto Callback Editor do GCP e uma janela para
executado atravs do comando guide. edio de funes ser aberta. Na sua poro editvel,
escreva o seguinte comando:
set(gcbo,String,datestr(now,14));
Este comando far com que toda vez que o boto da
figura for pressionado, a hora atual seja apresentada
no prprio boto, pois a sua propriedade String est
agora recebendo o valor da hora atual.

Para entender melhor o seu funcionamento so


apresentados alguns exemplos prticos para
implementao de uma interface amigvel.
g) Aps concludas estas operaes, salva-se a figura e
Exemplos Simples de construo no GCP torna a figura ativada da mesma maneira que
Exemplo 1: ela foi tornada controlada anteriormente.
Apresentar a hora cada vez que um boto que apresenta h) Para execut-la no MATLAB, basta digitar o seu
a hora pressionado. nome no workspace.
a) Abra o Guide Control Panel (GCP) digitando
guide
t

Exemplo 2:
b) Este comando j cria abre uma figura Criar uma interface grfica na qual pode-se entrar uma
automaticamente caso no haja nenhuma figura funo e os limites da varivel independente para gerar seu
aberta. No caso de j haver, gere uma nova figura, grfico, permitindo a opo de apresentar ou no as linhas
para tanto, basta digitar figure no whorkspace que de grade.
uma figura nova se abrir.
a) Abrir uma figura e acrescentar um, um eixo para
c) Se a figura ainda no estiver marcada como apresentao de um grfico, duas caixa de texto,
controlada pelo GCP, ento selecione a figura outras duas caixas editveis e um check box.
desejada e pressione o boto Apply no GCP. Neste
momento, a figura apresentada com algumas
marcas diferentes, permitindo a sua edio direta
com o mouse adicionando, apagando,
redimensionando e editando objetos.
d) Pressione o boto push no GCP e o coloque na
figura clicando e dimensionando com o mouse.

b) Colocar os nomes de acordo com o esquema


apresentado. Para tanto, basta selecionar o objeto,
abrir o Property Editor e na propriedade String
escrever os nomes correpondentes.

e) D um duplo clic neste boto adicionado que se


abrir automaticamente a janela do Property
Editor, que permite que voc edite todas as
propriedades de um objeto selecionado de uma
dada figura. Procure pela propriedade String e a
selecione. Depois de selecion-la, escreva o texto c) Abra o Callback Editor com o boto plot selecionado
que desejas que aparea no boto quando da e digite as seguintes linhas de comando:
execuo do mesmo. Lembrando que o texto
dever estar entre aspas simples.

26
MATLAB Ferramenta matemtica para Engenharia

CommandString = get(gcbo,'String');
EditHandle = findobj(gcbf,'Tag','EditText1');
f=findobj(gcf,'style','edit','Tag','func'); ZString = get(EditHandle,'String');
xl=findobj(gcf,'style','edit','Tag','xlim'); eval(ZString);
xl =eval(get(xl,'String')); eval(CommandString);
f = get(f,'String'); A primeira linha pega a o que est na propriedade
fplot(f,xl); String do objeto corrente, enquanto que a Segunda
d) A primeira linha de comando ir pegar o handle na linha armazena o handle do objeto que possui o Tag
caixa de texto editvel que possui o Tag func, EditText1. A terceira linha pega o que est no campo
enquanto que a segunda ir atribuir a xl o handle String do objeto identificado na linha anterior e
da caixa de texto editvel que possui o Tag xlim. armazena em ZString, que executado na linha
Na linha seguinte, o valor que foi digitado nesta seguinte e por fim, executa o comando que foi pego na
caixa, e que est armazenado na propriedade primeira linha.
String pego pelo comando get e em seguida c) Para colocar elementos um abaixo do outro no List
convertido em um valor e armazenado em xl. A box, deve-se entrar no workspace um cell array com
Quarta linha pega o valor da propriedade String da as opes desejadas. Neste caso, pode-se fazer o
caixa de textos da funo, que neste momento seguinte:
possui o identificador (handle) f, e armazena este
cmaps={hsv ; hot; gray; cool};
u

valor na prpria varivel f. A ltima linha utiliza o


comando fplot que faz um grfico de uma funo Com esta lista armazenada no workspace, seleciona-se
apenas tomando como argumento uma string da o List box na figura e no Property Editor e no campo
funo e um vetor com os limites da varivel String, digita-se cmaps sem as aspas simples. Desta
independente. maneira, o cell array com as opes armazenado em
string para ser utilizado.
e) Selecione o check box e no Callback Editor digite
as seguintes linhas: d) Ainda com o List box selecionado, escreva no
Callback Editor as seguintes linhas de comando:
Hgrid=findobj(gcbf,'Tag','gridflag');
if get(Hgrid,'Value') Value = get(gcbo,'Value');
grid on; String = get(gcbo,'String');
else colormap(String{Value});
grid off; A primeira linha armazena em Value a posio
end referente s opes da lista, enquanto que na segunda
f) A primeira linha armazena em Hgrid o handle do linha armazenado em String o cell array que est
objeto que possui como Tag o nome gridflag. Na no campo String do objeto corrente. Na terceira linha
Segunda linha, avaliado se existe algum valor na executado o comando colormap com a opo
propriedade deste objeto agora identificado por escolhida
Hgrid, no caso afirmativo, grid on executado, e) Salvar a figura e torn-la ativa.
caso contrrio executado o grid off.
g) Salvar esta figura com um nome e ativ-la da
mesma forma que no exemplo anterior.

Exemplo 3:
Criar uma interface grfica que permita o usurio
entrar uma funo pr construda de trs variveis e
esta seja apresentada de uma das diversas formas
existente no MATLAB para grficos 3D, e ainda com a
opo de alterar suas cores.
a) Montar uma figura que tenha a seguinte estrutura
bsica:

b) Slecione os 3 botes push e no Callback Editor


digite as seguintes linhas:

27
MATLAB Ferramenta matemtica para Engenharia

Lista de Exerccios

1. AULA 1 Montar uma funo ( m-file)


Arquivo: a2_e2
Comandos no Workspace Em um laboratrio de pesquisas so preparadas
Arquivo: a1_ew periodicamente solues de sulfato de alumnio para
1. Criar uma matriz A 20x2 com os elementos da pesquisas sobre o tratamento de gua potvel. Os pedidos
primeira coluna variando de 1 a 20, com um de soluo so realizados ao laboratrio de preparo de
intervalo unitrio, e dados aleatrios para os reagentes em concentraes sempre variveis.
elementos da segunda coluna. Tarefas:
2. Atribuir ao vetor X os valores da primeira coluna da a) Desenvolver um programa para automatizar os
matriz A at a linha 15. Fazer o mesmo para a clculos necessrios para o preparo das solues. O
Segunda coluna, armazenando os dados no vetor Y. programa deve receber a quantidade de soluo
3. Fazer um grfico com os vetores (X,Y). Colocar um necessria (ml) e a concentrao desejada (molaridade),
ttulo e nomear os eixos. gerando a quantidade de sal que deve ser utilizada (g). As
4. Sobre o mesmo grfico anterior, apresentar uma solues so preparadas a partir de gua destilada e
parbola (x2 - 15x + 60) com linha tracejada sulfato de alumnio hexadecahidratado
vermelha. (Al2(SO4)3.16H2O).
Massas molares: Al=26,98 S=32.06 O=16
H=1

Exemplo de Programao utilizando mais de


2. AULA 2 uma funo
Arquivos: a2_e3, funcao
Montar um script-file A determinao da soluo de uma equao algbrica
Arquivo: a2_e1 um problema muito comum nos clculos de engenharia.
O dixido de titnio (TiO2) um pigmento branco muito Muitas vezes a soluo pode ser obtida atravs de
utilizado na indstria de tintas. tcnicas simples de manipulao algbrica, no entanto,
Em uma planta h dois tanques contendo dixido de em certas equaes, este procedimento no pode ser
titnio misturado com resina. Estes tanques possuem aplicado, ou seja, no possvel isolar a incgnita do
diferentes concentraes de pigmento: problema. Para resolver este problema, foram
desenvolvidos mtodos numricos que permitem
determinar a raiz de uma equao a partir de um
Identificao do tanque TQ-101 TQ-102
algoritmo adequado. O Mtodo da Bisseco um dos
Concentrao ( % peso/peso) 15 5 representantes mais simples desta classe de mtodos.
Uma certa quantidade das misturas contidas em cada um Este mtodo se baseia na definio inicial de um
destes tanques, ser adicionada em um terceiro tanque intervalo de busca da raiz e medida que o mtodo se
(TQ-103) para a produo de tintas: desenvolve, este intervalo seqencialmente reduzido at
atingir a preciso desejada.
Tarefas:
a) Para auxiliar o departamento de produo deve ser Descrio do Mtodo da Bisseco:
preparado um grfico que relacione a concentrao de O problema original determinar a soluo da equao,
pigmento (% p/p) no tanque TQ-103 com a razo entre a
isto , determinar x 0 tal que:
quantidade de massa adicionada proveniente do tanque
TQ-101 e a quantidade de massa adicionada proveniente f (x 0 ) = 0 (1)
do tanque TQ-102. Traar o grfico entre as razes 0 e O Mtodo da Bisseco se inicia com a determinao de
10. um intervalo [a,b] onde a raiz desejada esteja situada.
b) Estimar atravs do grfico, a razo entre as massas Para que o mtodo funcione adequadamente, deve existir
adicionadas para a produo de uma tinta com apenas uma raiz no intervalo [a,b] e a funo f(x) deve
concentrao de pigmento branco de 12 % p/p. ser contnua no intervalo.
Sejam xi e xs respectivamente o limite inferior e superior
do intervalo de busca inicial. Ento:

28
MATLAB Ferramenta matemtica para Engenharia

xi a (2) Observao:
xs b (3) claro que se durante o algoritmo f(xm) = 0, o
O primeiro passo do algoritmo determinar o ponto procedimento imediatamente interrompido pois a raiz
mdio do intervalo de busca [xi,xs] : o prprio valor de xm.
xi + xs
xm = (4) Tarefas:
2
a) Descrever o algoritmo do Mtodo da Bisseco passo
So formados ento dois intervalos [xi,xm] e [xm,xs]. No
a passo, montando o fluxograma.
prximo passo deve-se comparar os sinais dos valores da
b) Criar uma rotina computacional para a aplicao do
funo nos extremos destes intervalos. Esta comparao
mtodo.
permitir indicar em qual dos intervalos est a raiz
c) Um trocador de calor um equipamento destinado a
desejada.
permitir a transferncia de calor entre dois fluidos. Em
Em funo do resultado desta comparao, o algoritmo
um determinado modelo de trocador de calor, gua deve
pode seguir duas alternativas possveis:
ser aquecida utilizando-se para isto uma corrente de leo.
Alternativa 1:
A equao abaixo relaciona a carga trmica (taxa de
f(xi) e f(xm) possuem o mesmo sinal e f(xm) e f(xs)
transferncia de calor entre os fluidos) com as
possuem sinais contrrios.
temperaturas de entrada e sada do leo e da gua no
Isto significa que a raiz est no intervalo [xm,xs]. O
equipamento:
intervalo de busca ento estreitado da seguinte forma,
xi xm ( Toleo1 Tagua1 ) ( Toleo2 Tagua2 )
(5) Q UA =0
Alternativa 2: Toleo1 Tagua1
ln( )
f(xi) e f(xm) possuem sinais contrrios e f(xm) e f(xs) Toleo2 Tagua2
possuem o mesmo sinal. onde,
Isto significa que a raiz est no intervalo [xi,xm]. O Q - Carga trmica do trocador, 160.103 W
intervalo de busca ento estreitado da seguinte forma, U - Coeficiente global de transferncia de calor,
xs xm (6) 320 W/m2K
A motivao dos procedimentos associados s duas A - rea do trocador de calor, 16 m2
alternativas pode ser melhor compreendida atravs da Toleo1 - Temperatura de entrada do leo no trocador,
visualizao do grfico da prxima figura: 110 C
Toleo2 - Temperatura de sada do leo no trocador, 80 C
Tagua1 - Temperatura de entrada da gua no trocador,
35 C
Tagua2 - Temperatura de sada da gua no trocador

c.1) Fazer o grfico do valor numrico da equao em


relao a temperatura de sada da gua (Tagua2). O
grfico deve conter o ttulo e as identificaes dos eixos.
Verifique atravs do grfico, se o Mtodo da Bisseco
pode ser aplicado para a resoluo da equao.
c.2) Determinar a temperatura de sada da gua do
xi xm xs equipamento (Tagua2), utilizando como regio de busca
Figura - Procedimento de eliminao de intervalo inicial o intervalo 35,1 C at 79,9 C e tolerncia de
0,1 C.
Observando o grfico, torna-se bvio que a raiz est no
intervalo [xm,xs]. Neste intervalo a funo corta o eixo
y = 0, ou seja, neste intervalo a funo muda de sinal e
conseqentemente f(xm) e f(xs) apresentam sinais
3. AULA 3
contrrios. O procedimento deve ento seguir a
alternativa 1, com a eliminao do intervalo [xi,xm], Agenda de endereos usando estruturas
onde j se sabe, a raiz no est presente. Arquivo: a3_e1
Aps a eliminao do intervalo, segundo a alternativa 1 Montar uma lista de endereos simples armazenando os
ou 2, o algoritmo deve recalcular o ponto mdio e repetir dados em uma estrutura. Este programa deve permitir a
a seqncia de procedimentos. importante observar que localizao de telefones apenas dando o nome da pessoa.
medida que o processo avana, o intervalo de busca vai
se fechando em torno da raiz. Quando este intervalo
torna-se menor que a tolerncia desejada, o processo
interrompido e a soluo o ponto mdio do ltimo
intervalo.

29
MATLAB Ferramenta matemtica para Engenharia

4. AULA 4 (d) Na existncia da presa, o predador tem o suprimento


de alimento que lhe permite sobreviver e reproduzir a
Exemplo de S-function, mscaras e resoluo uma taxa especfica proporcional a quantidade de presa,
isto :
de sist. De equaes dif. no simulink
1 dN 2
Arquivo: a4_e1.mdl, prexpre (s-function) = + N 1
N 2 dt
Devido ao fato de grande parte dos biorreatores operarem Deste modo o modelo matemtico deste problema
em regime de batelada ou de semi-batelada sua operao descrito pelas equaes diferenciais ordinrias:
inerentemente transiente, isto todas suas variveis dN 1
= N1 N1 N 2
[concentraes de clulas, de produtos(s) e de dt
substrato(s); a temperatura (caso o biorreator for no dN
1 = N 2 + N 1 N 2
isotrmico) mudam com o tempo. Os mtodos de anlise dt
dinmica de processos, geralmente utilizados em controle Alm do conhecimento dos valores numricos dos
de processos, sero de extrema utilidade nestas parmetros do modelo (os valores de , , e ), para se
apresentaes, em especial sero apresentados conceitos resolver este sistema de equaes diferenciais ordinrias
iniciais de dinmica no linear que justificam vrios deve-se conhecer os valores de N1 e N2 em um
fenmenos inerentes a este tipo de processo. Como determinado tempo (estas so as condies iniciais do
ilustrao de modelos dinmicos, o exemplo clssico o problema).
modelo dinmico da presa-predador.
O modelo de Lotka-Volterra, desenvolvido no final da Tarefa: Construir no SIMULINK (S-function) para o
dcada de 1920!] que constitudo por um sistema de modelo de Lotka-Volterra e rodar simulaes para vrias
duas equaes diferenciais ordinrias fundamentadas em: condies iniciais utilizando os parmetros:
= 0,3/ano
o modelo descreve a interao entre duas espcies
= 1/90 [1/(ano)/(nmero de espcies do predador];=
selvagens ( sendo : N1 o nmero de componentes da
0,2106/ano
espcie 1 - presa - N2 o nmero de componentes da
espcie 2 - predador), a presa herbvora e o predador = 0,00026325[1/(ano)/(nmero de espcies de presa];
carnvoro. Estes dois animais coabitam em uma regio
onde a presa tem um suprimento ilimitado de vegetao
natural para sua alimentao e os predadores tem como 5. AULA 5
exclusivo suprimento alimentar as indefesas presas.
Originalmente o modelo foi desenvolvido por Lotka-
Volterra para uma situao mais complexa e realista, isto
: mais de duas espcies coexistindo e onde os Utilizando o GUIDE
predadores alimentam-se de mais de uma espcie de Arquivo: a5_e1
presa. Este caso simplificado tem seu modelo matemtico
desenvolvido a partir das informaes: Tarefa:
(a) Na ausncia do predador, a presa tem uma taxa Montar um programa que determine os coeficientes de
natural de nascimento b e uma taxa natural de um polinmio de grau n para um conjunto de dados
falecimento d. Uma vez que o suprimento de alimentos experimentais. Este programa deve ter uma interface
para esta espcie ilimitado, a taxa de nascimento grfica amigvel.
maior que a de falecimento [b > d] , portanto a taxa
especfica de crescimento de presa positiva, isto :
1 dN 1
= bd = >0 ;
N 1 dt
(b) Na presena do predador a presa consumida a uma
taxa especfica proporcional ao nmero de predadores
presentes, isto :
1 dN 1
= N2 ;
N 1 dt
(c) Na ausncia da presa o predador tem uma taxa
especfica de crescimento negativa, uma vez que a
inevitvel conseqncia de tal situao a inanio dos
predadores, assim:
1 dN 2
= < 0 ;
N 2 dt

30
MATLAB Ferramenta matemtica para Engenharia

Bibliografia recomendada

Manuais do MATLAB (podem ser encontrados na rede


interna do DEQUI, no diretrio:
p:\winapps\matlab2\hel\pdfdocs)

http://www.mathworks.com/
http://www.rpi.edu/~bequeb/Process_Dynamics/MATLA
B/MATLAB_index.html
http://www.owlnet.rice.edu/~ceng303/Matlab/MatCont.h
tml
http://www.indiana.edu/~statmath/smdoc/Matlab.html
http://www.math.utah.edu/lab/ms/matlab/matlab.html
http://www.math.ttu.edu/~gilliam/m5399-matlab.html
http://www.geodyn.psu.edu/GEOSC203/tutorial.html
http://www.math.ufl.edu/help/matlab-tutorial/
http://www.owlnet.rice.edu/~ceng301/toc.html

31

You might also like