Você está na página 1de 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

1.
2.
3.
4.
5.
6.

3
3
3
3
3
4

O QUE O MATLAB - ESTRUTURA DOS DIRETRIOS


COMANDOS DE LINHAS
COMANDOS BSICOS
SMBOLOS E CONSTANTES
TRABALHANDO COM MATRIZES
GRFICOS

AULA 2 PROGRAMAO
1.
2.
3.
4.
5.
6.

ALGORITMOS NOES BSICAS DE PROGRAMAO


M-FILES
COMANDOS DE FLUXO E OPERADORES LGICOS
VETORIZAO
UTILIZAO DO DEBUGGER
EXCELLINK

7
7
8
9
9
10

AULA 3 OUTRAS FORMAS DE MANIPULAR INFORMAES

11

1.

11

OUTRAS FORMAS DE ARMAZENAR DADOS:

AULA 4 SIMULINK

13

1.
2.
3.
4.

13
15
16
18

IDIA BSICA DO FUNCIONAMENTO DO SIMULINK


MSCARAS
S-FUNCTIONS
TABELAS DE AUXLIO

AULA 5 TOOLBOXES & GUIDE

21

1.
2.

21
25

TOOLBOXES
GUIDE

LISTA DE EXERCCIOS

28

BIBLIOGRAFIA RECOMENDADA

31

Aula 1 - Conceitos Bsicos


1. O que o MATLAB - Estrutura dos
diretrios
MATLAB uma abreviao para MATrix
LABoratory, um ambiente de programao de alto
nvel, possuindo caractersticas de aplicativo
(facilidade para o usurio) e de linguagem de
programao (flexibilidade).
Ao contrrio de linguagens clssicas como C e Fortran,
no ambiente MATLAB o usurio no se preocupa com
itens como declarao de variveis, alocao de
memria, utilizao de ponteiros e outras tarefas de
rotina.
O MATLAB apresenta uma srie de funes
matemticas j implementadas que podem ser
utilizadas em uma rotina construda pelo usurio. Estas
funes so agrupadas de acordo com a rea de
interesse em toolboxes e armazenadas em diretrios
especficos. Qualquer funo a ser utilizada deve estar
no diretrio de trabalho ou caminho (path) do
MATLAB.

3. Comandos Bsicos
Alguns comandos bsicos que ajudam o usurio na
utilizao do software so descritos a seguir:

help: ajuda on line sobre funes do MATLAB

who: informa as variveis presentes no workspace. O


comando whos retorna as variveis e algumas
informaes sobre as mesmas
clc: limpa a tela
which: informa o diretrio de execuo de uma
determinada funo

help sin

which sin

Todas as funes do MATLAB so executadas atravs


de comandos digitados diretamente na rea de trabalho
(workspace) aps o prompt.

5*2
2^3

A resposta destas operaes ser armazenada na


varivel ans, cada operao atualizar o seu valor. Para
inibir a exibio da resposta na tela, deve-se terminar a
expresso com ponto e vrgula (;). Para armezenar
valores em uma varivel especfica, deve-se atribuir o
nome da varivel:
a=4+2;

b=7*3;

c=a+b

O MATLAB pode armazenar variveis, diferindo entre


maisculas e minsculas, ou seja, case sensitive,
deste modo as variveis x e X so diferentes. As
funes matemticas mais utilizadas so listadas a
seguir:

funes trigonomtricas: sin; cos; tan; asin; acos;


atan
logaritmo decimal: log10
logaritmo natural: log
exponencial: exp
valor absoluto: abs

Listas contendo funes elementares e especiais podem


ser visualizadas executando o comando help seguido
das palavras elfun e specfunc.

clear all;

what: retorna os arquivos relacionados ao MATLAB


presentes no diretrio de trabalho
dir / ls: retorna todos os arquivos do diretrio de
trabalho
cd: muda (ou apenas informa) o diretrio corrente
cd ..

2/3

which ode23

diary: salva o texto de uma seo do MATLAB no


diretrio corrente
laod/save: carrega / salva em disco as variveis do
workspace como arquivo de dados (extenso .mat)
clear:
limpa
variveis
do
workspace
clear a;

2. Comandos de linhas

5+7
2\3

help ode23

cd c:\temp

cd

why: grande mistrio da humanidade

4. Smbolos e constantes
Diversos smbolos representam constantes ou limites da
mquina. Os principais so:

eps: preciso relativa da mquina


realmin/realmax: menor/maior nmero representvel
na mquina
inf:
representao
do
infinito
positivo
(-INF representa o infinito negativo)
nan: representao de uma indeterminao
matemtica (p.ex.: 0/0; Inf/Inf)
pi: 3.1415926535897...

5. Trabalhando com matrizes


O MATLAB foi desenvolvido especialmente para
trabalhar com representaes matriciais de elementos,
tendo maior eficincia quando o usurio utiliza esta
representao.

Entrada de matrizes
Matrizes podem ser geradas de diferentes modos:

Entrando os elementos explicitamente


a = [1 , 2 ; 3 , 4]

a = [1 2]
3 4]

Para separar elementos de colunas diferentes pode-se


usar a vrgula ou o ESPAO. Para separar linhas usase o ponto e vrgula ou o ENTER().

MATLAB Ferramenta matemtica para Engenharia

Cada elemento da matriz indexado, sendo


possvel extrair-se um elemento indicando sua
posio da forma linha-coluna ou da forma
seqencial.
a (2) = 3

Algumas funes do MATLAB auxiliam a


montagem de matrizes com caractersticas
especficas. Alguns exemplos so a matriz
identidade e matrizes com uns ou zeros .

extrai a diagonal da matriz A

diag([1 2])

gera uma matriz diagonal


com os elementos da diagonal
iguais a 1 e 2.

size(A)

retorna um vetor com as


dimenses da matriz A

reshape(A,m,n)

redimensiona a matriz A
segundo
o
as
novas
dimenses mxn

a (2,1) = 3

Usando funes de construo

eye(3)

diag(A)

ones(3)

Outras funes podem ser encontradas no help elmat.

zeros(3)

STRINGS

Utilizando a forma : de gerao de seqncias.

Entende-se por strings o conjunto de caracteres colocados


entre aspas simples.

a = [ 1:3 ; 4:6]

s = Este texto uma string

Operaes e Manipulaes de matrizes

Uma string entendida pelo MATLAB como um vetor de


caracteres, portanto, no exemplo acima, para pegarmos
apenas a palavra Este, basta fazer

Uma forma de manipular elementos de uma matriz


utilizando a forma de indexao juntamente com
comandos de lao, ou de forma mais eficiente,
utilizando a forma de seqncias geradas pelo operador
(:).
a (: , 1)
a (1 , : )
a ([1 3], : )

s(1:4)
ans =
Este

Como encarada como um vetor, tambm existem formas


de manipular-mos strings atravs de indexao de seus
elementos ou ento utilizando funes especiais, como por
exemplo:

todas as linhas da coluna 1


todas as colunas da linha 1
todas as colunas das linhas 1 e 3

As operaes de adio, subtrao, multiplicao e


diviso (+ - * / ) seguem as regras de operaes
matriciais, enquanto que o operador ponto antecedendo
as operaes de multiplicao e diviso, faz com que a
mesma seja realizada elemento a elemento.

eval(S)

avalia a string S como uma


expresso do MATLAB

str2num(7) converte a string 7 no nmero 7

[2 3; 4 5] .* [1 2; 3 4]
ans =
[2 6
12 20]

num2str(7)

converte o nmero 7 em string

strcat(S,T)

concatena as strings S e T

strcmp(S,T)

compara as strings S e T

Outras funes podem ser encontradas no help strfun.

Alm destas operaes bsicas, ainda pode-se aplicar


funes trigonomtricas, exponenciais e logartmicas a
matrizes, as quais retornaro uma matriz com os
elementos da matriz original avaliados pela funo
aplicada ponto a ponto. No caso da operao potncia
(^), a soluo segue regra da multiplicao matricial,
enquanto que a operao ponto antecedendo (.^),
elevar elemento a elemento na potncia dada.

6. Grficos
Os grficos so considerados pelo MATLAB como
figuras, nas quais pode-se visualizar de vrias formas
diferentes um conjunto de dados. Como so figuras, para
manipul-los, pode-se utilizar comandos de linha
(diretamente atravs da barra de ferramentas da janela
criada para o grfico) ou ento utilizando o GUIDE, como
ser visto mais adiante.

[2 3; 4 5] .^2
ans =
[4 9
16 25]

O MATLAB apresenta uma srie de funes prontas para


montar grficos 2D, 3D, de barras, de disperso, e outros.
Para ver detalhadamente estas funes, basta dar um help
graph2d, graph3d ou specgraph, enquanto que os
comandos de linha para manipul-los podem ser
encontrados no help graphics.

Outras operaes e funes geralmente utilizadas so:


: transposta conjugada
eig(A) : auto valores/vetores da matriz A
norm(A): norma da matriz A
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, devese especificar os vetores das ordenadas e das abcissas.

Para manipular matrizes ainda pode-se utilizar funes


especficas, como por exemplo:

x = [1:10] ; y = x;
plot(x,y);

MATLAB Ferramenta matemtica para Engenharia


title(Funo co-seno);
xlabel(X); ylabel(Y=cos(X));

10
9
8

hold on; ezplot(sin(x) , [0,pi]); hold off;

7
6

Outros comandos muito utilizados so:

5
4
3

2
1

10

Este comando faz o grfico de uma reta y = x. No caso


da entrada ser apenas um vetor coluna, o comando plot
o considera como ordenada e gera a abcissa
automaticamente. As cores da linha, bem como seu
estilo, podem ser acrescentados como argumentos
desta funo da seguinte forma:

axes: gera eixos


axis: controla a escala dos eixos
legend: adiciona legenda
grid on/off: adiciona/retira as linhas de grade do
grfico
ginput: permite clicar no grfico para pegar pontos
gtext: adiciona textos em qualquer posio especfica
na figura.

Ainda possvel fazer mais de um grfico na mesma


figura com o comando subplot.

plot(x, x, r, x, 2 * x, --b');

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

20
18
16

10

10

12

10

14

4
2
0

10

2
1

Este comando gera um grfico com duas retas, y=x e


y= 2x, a primeira em linha contnua vermelha e a
segunda descontnua azul.

cor
amarelo
magenta
ciano
vermelho
verde
azul
branco
preto

.
o
x
+
*
s
d
v

marcador
ponto
crculo
x-marca
cruz
estrela
quadrado
diamante
tringulo

:
-.
--

10

10

Desta forma o grfico da reta com o marcador * ser o


primeiro de uma figura que permite apresentar dois
grficos,
em
uma
linha
e
duas
colunas:
subplot(linha,coluna,posio)

As opes que podem ser utilizadas no comando plot


so as seguintes:
y
m
c
r
g
b
w
k

tipo de linha
slido
ponto
trao-ponto
tracejada

3D PLOTS
Para gerar grficos 3D preciso montar uma malha com
os vetores das trs dimenses envolvidas. O comando que
gera esta malha com facilidade o mesgrid que toma dois
vetores como argumento para gerar uma malha que ser
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


bidimensionais o ezplot, ele tem como argumento
uma funo na forma de string e um intervalo de
variao. Neste caso no preciso definir os vetores
das ordenadas e abcissas.

[X,Y] = meshgrid (x,y);


Z = X.^2 + Y.^2;
mesh (Z);

200

ezplot(cos(x) , [0,pi]);

150
Funo co-seno

100

50

0
10

0.5

Y=cos(X)

10
8

6
4

2
0

-0.5

O comando mesh cria um grfico 3D na forma de uma


malha. Outros comandos, como o surf e o surfl criam um
grfico com os elementos da malha preenchidos,
permitindo ainda a possibilidade de uma representao
contnua, atravs do comando shading interp. Para
representar linhas e pontos no espao, o comando utilizado
o plot3, que toma trs vetores como argumento.

-1
0

0.5

1.5
X

2.5

Para adicionar um ttulo ao grfico utiliza-se o


comando title, enquanto que para nomear os eixos,
utiliza-se o comando xlabel / ylabel. Para adicionar
mais de um grfico na mesma figura, utiliza-se o
comando hold. Este comando funciona como uma
chave liga-desliga, adicionando outras funes no
mesmo grfico enquanto no for executado o hold off.

MATLAB Ferramenta matemtica para Engenharia

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




plot3(x , y , z);


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

10
200

150

100

50

0
10

0
10

10

6
4
2
0

Faz um grfico de disperso dos dados. Equivale ao


plot(x,y,o).

Para alterar as cores, pode-se utilizar o comando


colormap, que toma como argumento um vetor RGB
(red green blue), ou ento vetores pr definidos como
na tabela a seguir:
hot
vga

gray
jet

bone

copper

pink

white

prism

autumn

cool

hsv

Outros comando de manipulao utilizados em grficos


2D e 3D esto na barra de ferramentas das prprias
figuras.

flag
winter
abre uma figura nova
abre uma figura
salva a figura
imprime a figura

Grficos especiais (line, barplot...)


Dentre os grficos especiais, os mais utilizados so:
x=[1:10];y = [x 1.5*x];


bar(x,y);


15

10

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

10

Neste caso, as colunas da matriz y so apresentadas


como reas preenchidas.


pie(x);
4% 2%
5%

18%

7%

9%
16%

11%

13%

15%

Faz um grfico pizza dos valores do vetor x, que


normalizado e apresentados como propores.
6

seleciona objetos
insere texto
insere seta
insere reta

zom + / zoom gira o objeto

MATLAB Ferramenta matemtica para Engenharia

Aula 2 Programao
critrio de convergncia do bloco de deciso interrompa o
ciclo.

1. Algoritmos Noes Bsicas de


Programao

Para implementar esta rotina em qualquer linguagem de


programao, basta atribuir os comandos devidos, de
forma que o programa execute o algoritmo passo a passo.

Um programa nada mais do que uma seqncia de


comandos (rotina) estabelecida de acordo com um
objetivo pr-estabelecido, ou seja, imprescindvel
que, antes de iniciar-se um programa, o usurio esteja
completamente ciente do que ele deseja que a rotina
realiza.

2. M-FILES
A linguagem de programao do MATLAB utiliza
exatamente os mesmos comandos descritos na aula
anterior, do mesmo modo que eles seriam utilizados se
digitados no workspace, porm os comandos ficam
agrupados e a execuo de todos eles, em seqncia, pode
ser realizada digitando-se apenas o nome atribudo
seqncia, que pode ser salva em um arquivo de texto com
a extenso .m. Os arquivos contendo rotinas de execuo
para o MATLAB so denominados m-files.

O primeiro passo para o desenvolvimento de uma


rotina a construo de um algoritmo para o programa,
onde todos os comandos devem ser explicitados. Uma
boa maneira para a construo do algoritmo a
utilizao de um fluxograma. A partir do fluxograma, o
nico trabalho do usurio traduzir o esquema para a
linguagem de programao, qualquer que seja esta.
Uma simbologia para o desenho do fluxograma
apresentada a seguir:
Entrada
de dados

Exibir
valor

Deciso

Processo

Para inserir comentrios no texto, usa-se o smbolo %. O


uso de comentrios permite um melhor entendimento da
rotina por qualquer usurio.
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
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
vapor de um lquido para uma dada temperatura
utilizando a equao de estado de Peng Robinson.
Tc , Pc e , T, P0

2 2

Resolver A e B

[ (

0 ,46 R Tc
1 + m 1 Tr
Pc
0 ,078 RTc
b=
Pc
a=

H duas opes de utilizao dos m-files pelo MATLAB:


usando os chamados script-files ou usando as functions.
Ambas consistem da utilizao das funes bsicas do
aplicativo na seqncia desejada, sendo que o que as
diferencia so o local onde as variveis so armazenadas
durante os clculos e a forma de entrada e sada de dados.

)]

Script-files

m = 0 ,37 + 1,54 0 ,27 2


A=

Resolver equao
de estado,
obtendo zL e zV

Calcular f V e fL

P=P

No

fV

1 < tol ?

aP
R 2T 2

B=

A utilizao de um script-file funciona exatamente da


mesma forma que a execuo direta de comandos no
prompt do MATLAB. Quando um script-file dodado,
cada comando presente no arquivo de texto executado.

bP
RT

Z 3 + Z 2 ( B 1 ) + Z A 3B 2 2 B +
B 3 + B 2 AB = 0
bP

ln = ( z 1 ) ln z

RT

bP

z + 1 + 2 RT
a
ln

2bRT 2 z + 1 2 bP
RT

f
=
P

Os script-files podem operar com variveis presentes no


workspace ou com dados criados durante a execuo. Uma
vez que este tipo de m-file no possui argumentos de
entrada e sada, as variveis criadas so armazenadas no
workspacedo MATLAB.

Escrever
P=Psat

Os script-files podem, inclusive, retornar elementos


grficos, usando comandos como plot.

(
(

Sim

)
)

No exemplo, as equaes utilizadas so mostradas ao


lado de cada bloco de processo, o que tambm ajuda na
implementao. As entradas do processo so
constantes do componente (temperatura e presso
crtica e fator acntrico), a temperatura desejada e uma
estimativa inicial para a presso de vapor. A partir
destes dados, utilizando a equao de estado de PengRobinson a rotina resolvida iterativamente at que o

A seguir proposto um exemplo de script-file para


determinar a frmula molecular de um composto orgnico
a partir da sua frmula centesimal e do peso molecular do
composto. O m-file pode ser escrito em qualquer editor de
texto, sendo armazenado com a extenso .m. Para ser
executado, deve-se digitar no prompt do MATLAB o
nome do arquivo (sem a extenso), sendo que o arquivo
deve estar situado no diretrio de trabalho ou ento estar
no caminho (path) do MATLAB.
7

MATLAB Ferramenta matemtica para Engenharia

Variveis globais versus variveis locais

% Programa:
% Frmula centesimal --> Frmula molecular

A definio de variveis locais vem exatamente da


possibilidade de utilizao de variveis que esto presentes
apenas no workspace de trabalho. So variveis locais
todas aquelas que podem ser utilizadas quando se trabalha
em um workspace. Por exemplo, na execuo de uma
function podem ser utilizadas as variveis utilizadas como
argumentos de entrada e as variveis criadas pela rotina,
ento estas so as variveis locais do f-workspace em
questo.

% Inicializao
clc, clear all , clear global
% Pesos moleculares dos elementos
pm=[ 12.01 1.01 16 14.01 ];
% Entrada de dados
comp=input('Entre com o vetor de composies
percentuais (C,H,O,N) ');
pmc=input('Entre com o peso molecular do composto
); '
% Execuo
prorp=pmc*comp/100;
formula=round(prorp./pm)

Alguns comandos utilizados


comentados a seguir:

no

script-file

Existem variveis que podem ser declaradas como sendo


globais e, deste modo, podem ser utilizadas como
variveis locais em diferentes workspaces. Para declarar
uma varivel como global deve-se utilizar o comando

so

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


comandos repetidas vezes para a resoluo do algoritmo,
como o caso do primeiro exemplo mostrado nesta aula, o
clculo da presso de vapor de um lquido utilizando uma
equao de estado. Neste exemplo, de acordo com a
resposta do bloco de deciso, a rotina deve ser encerrada
ou os clculos devem ser reiniciados, com um valor
atualizado de um dos parmetros (no caso a prpria
presso de vapor). Para realizar este loop se utilizam os
chamados comandos de fluxo, que realizam esta funo. A
deciso de qual caminho seguir executada pelos
denominados operadores lgicos, que indicam rotina
qual seqncias de comandos deve ser seguida de acordo
com a avaliao de algum parmetro.

Functions
As rotinas escritas como functions so tambm
executadas a partir do prompt do MATLAB, e ento
criam um workspace (a partir de agora denominado
f-workspace) prprio, onde apenas algumas (ou mesmo
nenhuma) variveis do workspace do MATLAB
entram, onde todas as variveis geradas so
armazenadas e de onde apenas as variveis desejadas
retornam. A forma de execuo das functions segue a
seguinte sintaxe:
[sadas] = funcao(entradas)

Deste modo, apenas as variveis descritas no grupo


entradas entram no f-workspace e apenas as descritas
em sadas retornam ao workspace do MATLAB.
funcao o nome do m-file que contm a rotina que
determina sadas a partir de entradas. Tanto um
grupo quanto o outro podem ser qualquer tipo de
varivel do MATLAB (escalares, vetores, matrizes,
estruturas, strings, cell arrays, ...).

O comando de fluxo mais geralmente utilizado nas rotinas


do MATLAB o lao for e os operadores lgicos mais
comuns so o if e o switch. A seguir apresentamos uma
breve descrio destes e do comando while, que opera ao
mesmo tempo como comando de fluxo e operador lgico.

Lao FOR

A utilizao de functions bastante til por permitir a


execuo da mesma rotina para vrios conjuntos de
entrada sem a necessidade de alterar o arquivo de texto
e por no poluir o workspace do MATLAB com as
variveis utilizadas em clculos intermedirios da
rotina.

O lao for executa uma seqncia de operaes por um


determinado nmero de vezes.
O comando for define o incio do lao, determinando o
intervalo em que uma varivel vai ser avaliada. Esta
varivel pode ser usada em uma seqncia de operaes,
definidas pelas linhas de comando do m-file que ficam
entre os comandos inicial e final do lao (end).

A seguiu um exemplo de function, utilizando o mesmo


algoritmo do exemplo anterior:

Para quebrar o lao em determinado ponto pode-se utilizar


o comando break (normalmente utilizado aps um
operador lgico).

function [formula] = analise_f(comp,pmc)


% [formula] = analise_f(comp,pmc)
% Frmula centesimal --> Frmula molecular
% Esta function determina a formula centesimal
% de um composto orgnico a partir do vetor de
% composies percentuais comp=[C,H,O,N] e do
% peso molecular do composto (pmc)

A seguir um exemplo que demostra a utilizao do


comando for:
for i=1:4;
A(i,1)=i;
A(i,2)=i^2;
end

% Pesos moleculares dos elementos


pm=[ 12.01 1.01 16 14.01 ];
% Execuo
prorp=pmc*comp/100;
formula=round(prorp./pm);

MATLAB Ferramenta matemtica para Engenharia


A
A=
1
2
3
4

determina-se qual seqncia de comandos deve ser


seguida, sendo esta terminada com um novo case, com um
otherwise (equivalente ao comando else do operador if) ou
ainda com o terminador da operao de avaliao lgica
end.

1
4
9
16

A seguir um exemplo, utilizando o resultado do anterior.

Operador lgico IF

for i=1:3;
for j=1:3;
switch B(i,j)
case 0
C{i,j}='zero';
case {1,-1}
C(i,j)={'nonzero'};
end
end
end

O operador if funciona como um condicional,


avaliando uma operao relacional* e determinando
uma seqncia de comandos a ser seguida, definida a
partir do ponto onde a expresso avaliada pela
operao relacional se torna verdadeira.
Vrias expresses podem ser avaliadas para a definio
da seqncia de comandos a ser seguida, para isso se
utilizam os operadores elseif ou else. O comando elseif
determina uma nova condio a ser avaliada, enquanto
o comando else determina a seqncia de operaes
caso nenhuma das condies anteriores tenha sido
satisfeita.

C
C=
'zero'
'nonzero'
'nonzero'

Para indicar o trmino de uma operao lgica if devese inserir o comando end rotina.

'nonzero'
'zero'
'nonzero'

'nonzero'
'nonzero'
'zero'

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
clculo e se deseja utilizar uma ferramenta de loop, onde o
objetivo calcular uma expresso diversas vezes, muito
mais eficiente trabalhar utilizando o conceito de operaes
matriciais ou vetoriais.

for i=1:3;
for j=1:3;
if i == j
B(i,j)=0;
elseif i>j
B(i,j)=-1;
else
B(i,j)=1;
end
end
end
B
B=
0 1 1
-1 0 1
-1 -1 0

Para demonstrar o que queremos dizer, vamos apresentar


uma rotina simples, implementada de dois modos, onde se
evidencia a diferena de eficincia entre uma
implementao utilizando loops sua verso vetorial.
&

'

&

'

0
6

Operador while

&

.
6

<

&

O operador while combina as funes de operador


lgico do if e de lao do for.

>

?
+

&

>

'

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


seqncia de operaes compreendida entre o incio e o
final do intervalo (determinada pelo end) seja realizada
at que uma determinada condio seja satisfeita.
A

Utilizando a forma vetorizada, para este exemplo, tem-se


uma reduo de 70 % no tempo computacional.

5. Utilizao do DEBUGGER

Operador lgico SWITCH

O MATLAB possui um editor de textos que est


configurado para trabalhar com sua linguagem de
programao, o DEBUGGER.

O operador switch trabalha de maneira muito parecida


ao if, porm a sintaxe e o modo de implementao so
diferentes. Com este comando pode-se avaliar apenas
uma expresso por vez, porm ela mais
eficientemente avaliada para diferentes condies.

Para rodar o editor, digite edit na linha de comando, um


documento em branco ser aberto. Case se deseje rodar o
editor e abrir um documento de texto, basta digitar edit
seguido do nome do arquivo.

O comando switch inicia o operador, indicando a


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
editor.

As possveis operaes relacionais so mostradas


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,


existem outras maneiras de guardar informaes e
acess-las proporcionando ao programador uma grande
versatilidade em termos de construo do rotinas.

As listas (ou disposio em clulas) so uma classe


especial de matrizes, cujos elementos, ou clulas, contm
matrizes do MATLAB, permitindo que matrizes de
diferentes dimenses possam ser armazenadas em uma
nica varivel. A sintaxe para criar uma lista (Cell Array)
a seguinte:

A seguir sero apresentados trs destas maneiras,


Multidimensional Arrays, Structures e Cell Arrays, ou
seja, Matrizes Multidimensionais, Estruturas e Listas.
Cada uma destas formas possui uma sintaxe especfica
para sua construo e manipulao, permitindo assim a
escolha da maneira mais adequada ao programa de
guardar e manipular informaes.

z = { A B C ... }
onde A, B,C,etc., podem ser matrizes, outras listas, uma
estrutura ou um string, por exemplo.
a=1:3; b=[5 6;7 8]; c={a b}; d.a=a; d.b=b; z={a b c d};
a
a=
1 2 3
b
b=
5 6
7 8
c
c=
[1x3 double] [2x2 double]
d
d=
a: [1 2 3]
b: [2x2 double]
z
z=
[1x3 double] [2x2 double] {1x2 cell} [1x1 struct]

MULTIDIMENSIONAL ARRAYS
Matrizes multidimensionais so uma extenso do
conceito de matrizes bidimensionais, que so acessadas
utilizando apenas dois ndices (linha, coluna); para o
caso de uma matriz tridimensional, o nmero de
ndices necessrios para localizar um elemento
especfico na matriz passa a ser igual a trs. Desta
forma, para uma matriz com dimenso igual a n, um
elemento especfico estar definido por n ndices. A
figura a seguir apresenta uma forma visual de
interpretar matrizes multidimensionais.

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
comando utilizados para matrizes bidimensionais,
como ones, rand, e outros, porm agora com mais de
dois argumentos que especificam as dimenses.

Para manipulao dos elementos de uma lista tambm se


utiliza as chaves, que serve para indicar em que clula se
encontra determinado objeto.
z{2}
ans =
5 6
7 8

rand(2,2,3)
ans(:,:,1) =
0.5466 0.6946
0.4449 0.6213
ans(:,:,2) =
0.7948 0.5226
0.9568 0.8801
ans(:,:,3) =
0.1730 0.2714
0.9797 0.2523

Desta forma, pode-se capturar a matriz b que est


armazenada na lista z, mas se queremos capturar um
elemento da matriz (p.ex.: o nmero 6), uma das
possibilidades a seguinte:
z{2}(1,2)
ans =
6

Uma matriz tridimensional, por exemplo, pode


representar a temperatura em pontos de uma malha
retangular em um espao tridimensional.

Ou seja, vai especificando cada vez mais para poder


capturar o elemento desejado, sempre seguindo a sintaxe
referente objeto que se est trabalhando, por exemplo:

A maneira pela qual as matrizes multidimensionais so


manipuladas equivalente s matrizes bidimensionais,
porm agora deve-se utilizar um nmero de ndices
compatvel com o nmero de dimenses para
referenciar as posies desejadas na matriz.

z{3}{2}(1,2)
ans =
6

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


e = struct('Disciplina','controle','Nota',9.5)
e=
Disciplina: 'controle'
Nota: 9.5000

posio dois, que por sua vez ocupa a posio trs da


lista z.
Para criar uma lista de matrizes vazias pode-se utilizar
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
"

O subsistema

1. Idia Bsica do funcionamento do


Simulink


SIMULINK uma ferramenta interativa, baseada em


estrutura de diagrama de blocos, voltada para a
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
(blocklibrary) ou ento criar blocos que executam
funes editadas pelo usurio.

"

U
!

"

"

"

"

i
j

"

"

"

"

na barra de ferramentas. Deve surgir, ento, o library


browser, onde esto armazenados os blocos bsicos do
aplicativo.

Antes de tudo deve-se iniciar o aplicativo, digitando


simulink no prompt do MATLAB ou clicando no cone

Vamos montar um modelo para simulao dinmica da


funo x2, de sua primeira derivada e de sua integral,
mostrando na tela os resultados.

Este exemplo demonstra como utilizar comandos e aes


para construir modelos prprios.

O exemplo utiliza subsistemas para simplificar o


modelo. Um subsistema um bloco que representa um
conjunto de blocos. Este exemplo contm cinco
subsistemas, um representando o termostato
(


"

O termostato controla o funcionamento do aquecedor,


que procura manter a temperatura da casa em 70 F
(setpoint). A temperatura externa mdia de 50 F,
tendo variao modelada como um seno de amplitude
15 F e perodo de 24 horas.

Construo de um modelo simples

simulao, clique em
janela do SIMULINK.

O exemplo modela a termodinmica de uma casa


utilizando um equacionamento simples. Para rodar a

"

"

na barra de ferramentas da

"

"

No MATLAB, em todos os pontos, existem exemplos


demonstrativos (demos) que mostram exemplos de
utilizao de cada tpico. Um destes demos, referente
ao SIMULINK, a simulao de um modelo termodinmico de uma casa. O exemplo pode ser explorado
digitando-se thermo no prompt do MATLAB. O
diagrama de blocos do exemplo ser mostrado na tela.

Demonstrao do potencial do aplicativo

Para mostrar o potencial do aplicativo, vamos utilizar


um exemplo.

"

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
integral e o bloco Slope para plotar os grficos. Para
controlar o incremento na funo pode-se usar o bloco
Ramp. Todos os blocos podem ser encontrados com a
ferramenta de procura, e ento devem ser arrastados para a
janela de trabalho.

Para iniciar um novo modelo, deve-se clicar no


cone
do library browser. Ento deve surgir um
documento em branco do SIMULINK, intitulado
Untitled.
Agora o usurio deve buscar no library browser os
blocos que deseja utilizar em seu modelo. Os blocos
so agrupados de acordo com o toolbox ao qual esto
vinculados (Simulink, Comunications Blockset, ...) e
ento divididos por tipos.

Uma vez que quer-se plotar 3 grficos, pode-se copiar


mais duas vezes o bloco Slope na janela de trabalho
(usando 'Ctrl+C / Ctrl+V') ou ento alterando as
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, pressionando 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


alterando parmetros como o polinmio, as funes de
trabalho, o intervalo de simulao.

'menor que' no nome da corrente e ento pressionar


Ctrl+D.

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:
- Criando subsistemas
A criao de subsistemas objetiva despoluir modelos que
possuem um grande nmero de blocos. Em um subgrupo,
como visto no exemplo da termodinmica de uma casa,
pode possuir vrias entradas e sadas, de acordo com as
entradas e sadas do subsistema. Pode-se adicionar um
subsistema colocando-se o bloco Sub System na janela de
trabalho ou selecionando-se um conjunto de blocos e,
ento, agrupando-os usando o comando Create Subsystem
no menu Edit ou usando o atalho Ctrl+G.

- Desenhar e/ou alterar malha grfica auxiliar para a


criao do modelo:
Para inserir uma malha auxiliar, digitar no path do
MATLAB o comando
set_param('<model name>','showgrid','on')

onde <model name> o nome do modelo do


SIMULINK.
Para alterar a malha, digitar:
set_param('<model name>','gridspacing',<number of
pixels>)

- Duplicando blocos em um modelo:


Para duplicar um bloco, selecione o bloco com o
mouse e, pressionando Ctrl, leve a cpia do bloco at o
local desejado.

2. Mscaras
O uso de mscaras permite a criao de caixas de dilogo e
cones especficos para subsistemas. Algumas vantagens
do uso de mscara so listados a seguir.

- Mudando a orientao de blocos:


Para rodar um bloco no SIMULINK pode-se usar os
comandos do menu Format: Rotate block (roda 90 ) ou
Flip block (roda 180 ). As teclas de atalho Ctrl+R e
Ctrl+F tambm podem ser usadas. Para blocos com
mais de uma entrada ou sada, a ordem destas segue o
exemplo da figura a seguir.

Simplificao na utilizao do modelo pela simplificao na entrada de parmetro, uma vez que em um
subsistema mascarado o usurio pode inserir todos os
parmetros de um conjunto de blocos em uma nica
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
caixa de dilogo para um bloco que retorna a soluo de
uma equao de reta do tipo y = m.x + b.

- Vetores versus escalares


A maioria dos blocos do SIMULINK pode trabalhar
tanto com vetores quanto com escalares. Quando, em
blocos com mais de uma entrada, utilizam-se os dois
tipos de expresso, o bloco faz uma combinao deles,
como mostra o exemplo.

Primeiramente necessrio montar o modelo, como j


descrito. O modelo deve ser semelhante ao esquema a
seguir:

- Propagao de um sinal e nomes de correntes


Um sinal pode ser levado de um ponto a outro da
janela de trabalho usando os blocos Goto e From. O
nome de uma corrente tambm pode ser levada,
evitando confuses, para tanto deve-se digitar o sinal

Posteriormente deve-se criar um subsistema para este


modelo, selecionando todos os blocos e clicando em
Create Subsystem no menu Edit (ou utilizando o atalho
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.


No campo Block description deve ser inserido um texto
comentrio que explica ao usurio o que o bloco faz e no
campo Block help pode ser inserido um texto de ajuda,
com informaes mais detalhadas, uma vez que estas s
sero exibidas a pedido do usurio.

Os blocos In1 e Out1 representam a entrada e a sada


do modelo, que coincidem com a entrada e a sada do
bloco Subsystem.
Agora possvel mascarar o subsistema, para isso
clique em Mask Subsystem no menu Edit (Ctrl+M).
Abrir ento a janela de edio de mscaras, que
permite a criao do cone e da caixa de dilogo para o
subsistema, podendo ser aberta usando novamente o
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.

A figura abaixo mostra o resultado obtido seguindo as


instrues acima:

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
equaes matemticas ao invs de utilizar a lgebra de
blocos
Utilizao de animaes grficas (ver penddemo).

A segunda pasta contm os parmetros de inicializao


da mscara, onde a caixa de dilogo definida. Para
inserir um campo da caixa de dilogo, clicar em Add,
ento um novo campo ser adicionado lista. Este
campo deve ser definido, escolhendo-se o tipo
(editvel, caixa de checagem ou lista de opes) em
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
uso do menu popup mostrado a seguir.

Todos blocos do SIMULINK trabalham com entradas (u),


sadas (y) e elementos internos, ou estados (x). O esquema
a seguir demonstra cada elemento do bloco:

A relao matemtica entre os elementos pode ser


sintetizada por
16

MATLAB Ferramenta matemtica para Engenharia


y = f (t , x , u )

sys = ['n de estados contnuos, n de estados discretos', 'n


de sadas', 'n de entradas', 'flag para utilizao da entrada
para determinao do prximo passo', 'nmero de tempos
de amostragem']

=
t

x = g( t, x, u )

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


as posies 1, 3 e 4 da matriz. As demais posies so
substitudas por zero.

Nos arquivos de S-functions os vetores de estado so


divididos em duas partes, uma primeira que contm
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
informadas as equaes de sada da S-function.

O SIMULINK faz vrias chamadas de cada bloco do


modelo durante fases especficas de simulao,
executando tarefas como clculo das sadas,
atualizao de estados, ou determinao de derivadas.
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
SIMULINK executa uma simulao. Primeiro, o
realizada a inicializao de cada bloco, inclusive das Sfunctions. Ento o SIMULINK entra no loop de
simulao, onde cada passagem pelo loop chamado
um passo de simulao. Durante cada passo da
simulao, o SIMULINK executa seu bloco S-function.
Isto continua at o simulao esteja completa.

Para melhor compreender o funcionamento das S-functions


vamos utilizar dois exemplos simples.

Criao de uma S-function simples para


integrao do sinal de entrada
Vamos criar uma S-function que realiza a integrao do
sinal de entrada. Nesta simples implementao utilizamos
o conceito de flags e a seqncia do fluxograma.
O modelo a ser construdo, ento,
n

x = x

Determina condies iniciais

dt = u dt

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

Atualiza estados discretos

if flag == 0,
x0 = 0;
sys = [1 0 1 1 0 0]';

Integrao

Passo de simulao

Para escrever a S-function, ento, devemos abrir o


Debugger e digitar a rotina:

Calcula sadas

Calculata derivadas

=u

y = x = x

Calcula tamanho do prximo passo


(apenas para blocos com passo varivel)

Recalcula sadas

elseif abs(flag) == 1,
sys = u;
elseif flag == 3,
sys = x;
else
sys = [];

Terminao, executa
qualquertarefa exigida

O SIMULINK informa s S-functions o estgio atual


da simulao, ou seja, qual parte da rotina deve ser
executada, atravs das flags. Deste modo cada parte da
rotina deve ser iniciada com um controlador de fluxo
(if, case) A tabela a seguir mostra cada estgio da
Rotina da S-Function Flag

Inicializao

mdlInitializeSizes

flag = 4

Clculo das sadas

mdlOutputs

flag = 3

Atualizao dos estados


discretos

mdlUpdate

flag = 2

Clculo das derivadas

mdlDerivatives

flag = 1

Trmino da simulao

mdlTerminate

flag = 9

% y = x
% No utilizar
% demais flags

Para testar a rotina implementada, montar o seguinte


modelo no SIMULINK. No campo S-function name, do
bloco S-function, entre o nome do arquivo .m (sfint). O
resultado obtido tambm mostrado abaixo:

flag = 0

Clculo do prximo passo mdlGetTimeOfNext


(opcional)
VarHit

% dx/dt = u

end

simulao, a respectiva rotina na S-function e o valor da flag.


Estgio da simulao

% Condies iniciais
% Definio do
% tamanho dos vetores

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);
ro = par(2);
A = par(3);
h0 = par(4);

%kg m^-0,5 s^-1


%kg/m^3
%m^2
%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
um modelo do SIMULINK como o mostrado na figura a
seguir, que possibilita a verificao do comportamento
dinmico do sistema frente a perturbaes na alimentao.

Criao de uma S-function simples para a


modelagem no linear de um tanque
Deseja-se fazer a modelagem no linear de um tanque
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
h

Ab

FO

Considerando que o lquido possui massa especfica


constante, que o tanque isotrmico e de mistura
perfeita, o balano mssico do tanque pode ser descrito
por
FO FI =

Com o modelo construdo pode-se simular o comportamento de um ou mais tanques com diferentes dimenses,
condies iniciais e disposio (em srie ou em paralelo).
Pode-se ainda criar uma mscara para o bloco, construindo
um cone prprio e uma caixa de dilogo para a entrada
dos parmetros.

dV
dt

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
dh FI K h
=
dt
A b

Nesta seo so mostrados os nomes e funes de alguns


blocos do SIMULINK.

h ( t , FI )

Table 1: Sources Library Blocks


Band Limited
W hite Noise
Chirp Signal

h (t 0 ) = h 0
Agora podemos implementar este modelo como
S-function. Um modo de implementao apresentado
a seguir:

Clock
Constant

function [sys, x0] = sftank(t,x,u,flag,par)

18

Introduce white noise into a continuous


system.
Generate a sine wave with increasing
frequency.
Display and provide the simulation
time.
Generate a constant value.

MATLAB Ferramenta matemtica para Engenharia

Digital Clock
Digital Pulse
Generator
From File
FromWorkspa
ce
Pulse
Generator
Ramp
Random
Number
Repeating
Sequence
Signal
Generator
Sine Wave
Step
Uniform
Random
Number

Generate simulation time at the


specified sampling interval.
Generate pulses at regular intervals.

Abs
Algebraic
Constraint
Combinatorial
Logic
Complex to
MagnitudeAngle
Complex to
Real-Imag
Derivative
Dot Product
Gain
Logical
Operator
MagnitudeAngle to
Complex
Math
Function
Matrix Gain
MinMax

Read data from a file.


Read datafrom amatrixdefined in the
workspace.
Generate pulses at regular intervals.
Generate a constantly increasing or
decreasing signal.
Generate normally distributed random
numbers.
Generate a repeatable arbitrary signal.
Generate various waveforms.
Generate a sine wave.
Generate a step function.
Generate uniformly distributed random
numbers.

Table 2: Sinks Library Blocks


Display
Show the value of the input.
Scope
Display signals generated during a
simulation.
Stop
Stop the simulation when the input is
Simulation
nonzero.
To File
Write data to a file.
To Workspace Write data to a matrix in the
workspace.
XY Graph
Display an XY plot of signals using a
MATLAB figure window.

Product
Real-Imag to
Complex
Relational
Operator
Rounding
Function
Sign
Slider Gain
Sum
Trigonometric
Function

Table 3: Discrete Library Blocks


Discrete
Filter Implement IIR and FIR filters.
Discrete
Implement a discrete state-space
State-Space
system.
Discrete-Time Perform discrete-time integration of
Integrator
asignal.
Discrete
Implement a discrete transfer function.
Transfer Fcn
Discrete Zero- Implement a discrete transfer
Pole
functionspecified in terms of poles and
zeros.
First-Order
Implement a first-order sample-andHold
hold.
Unit Delay
Delay a signal one sample period.
Zero-Order
Implement zero-order hold of one
Hold
sampleperiod.

Output the absolute value of the input.


Constrain the input signal to zero.
Implement a truth table.
Output the phase and magnitude of a
complex input signal.
Output the real and imaginary parts of
a complex input signal.
Output the time derivative of the input.
Generate the dot product.
Multiply block input.
Perform the specified logical operation
on the input.
Output a complex signal from
magnitude and phase inputs.
Perform a mathematical function.
Multiply the input by a matrix.
Output the minimum or maximum
input value.
Generate the product or quotient of
block inputs.
Output a complex signal from real and
imaginary inputs.
Perform the specified relational
operation on the input.
Perform a rounding function.
Indicate the sign of the input.
Vary a scalar gain using a slider.
Generate the sum of inputs.
Perform a trigonometric function.

Table 6: Functions & Tables Library Blocks


Fcn
Apply a specified expression to the
input.
Look-Up
Perform piecewise linear mapping of
Table
the input.
Look-Up
Perform piecewise linear mapping of
Table (2-D)
two inputs.
MATLAB
Apply a MATLAB function or
Fcn
expression to the input.
S-Function
Access an S-function.
Table 7: Nonlinear Library Blocks
Backlash
Model the behavior of a system with
play.
Coulomb &
Model discontinuity at zero, with linear
Viscous
gain elsewhere.
Friction
Dead Zone
Provide a region of zero output.
Manual
Switch between two inputs.
Switch
Multiport
Choose between block inputs.
Switch
Quantizer
Discretize input at a specified interval.
Rate Limiter
Limit the rate of change of a signal.
Relay
Switch output between two constants.
Saturation
Limit the range of a signal.
Switch
Switch between two inputs.

Table 4: Continuous Library Blocks


Derivative
Output the time derivative of the input.
Integrator
Integrate a signal.
Memory
Output the block input from the
previous time step.
State-Space
Implement a linear state-space system.
Transfer Fcn
Implement a linear transfer function.
Transport
Delay the input by a given amount of
Delay
time.
Variable
Delay the input by a variable amount
Transport
of time.
Delay
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.
Configurable Represent any block selected from a

Table 5: Math Library Blocks

19

MATLAB Ferramenta matemtica para Engenharia

Subsystem
Data Store
Memory
Data Store
Read
Data Store
Write
Data Type
Conversion
Demux
Enable
From
Goto
Goto Tag
Visibility
Ground
Hit Crossing
IC
Inport
Merge
Model Info
Mux
Outport
Probe
Subsystem
Terminator
Trigger
Width

specified library.
Define a shared data store.
Read data from a shared data store.
Write data to ashareddatastore.
Convert a signal to another data type.
Separate a vector signal into output
signals.
Add an enabling port to a subsystem.
Accept input from a Goto block.
Pass block input to From blocks.
Define the scope of a Goto block tag.
Ground an unconnected input port.
Detect crossing point.
Set the initial value of a signal.
Create an input port for a subsystem or
an external input.
Combine several input lines into a
scalar line.
Display revision control information in
a model.
Combine several input lines into a
vector line.
Create an output port for a subsystem
or na external output.
Output an input signals width, sample
time, and/or signal type.
Represent a system within another
system.
Terminate an unconnected output port.
Add a trigger port to a subsystem.
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
estudante de graduao e ps-graduao no decorrer do
curso e tambm as potencialidades desta grande
ferramenta: o MATLAB. Portanto no o objetivo
desta seo entrar em maiores detalhes, os quais podem
ser obtidos em manuais gigantescos que existem para
cada um dos toolboxes que sero apresentados ou ento
uma ajuda razovel que pode ser obtida no help on
line.

limit (F, x, a, right ou left);


Esta expresso calcula o limite da funo F (string) para
x a pela direita ou pela esquerda.
Antes de executar esta funo, deve-se transformar as
variveis envolvidas no clculo em objetos simblicos
atravs da funo syms.
syms x
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
problemas. De um modo geral, existem duas formas de
se trabalhar com expresses simblicas; a primeira
utilizando strings enquanto que a outra utilizando
objetos simblicos. Os objetos simblicos so uma
classe definida pelo MATLAB que permite sua
manipulao atravs de funes especficas do
symbolic toolbox.

Resolve simbolicamente equaes algbricas. As equaes


e as variveis desconhecidas devero ser expresses
simblicas ou strings.
solve('p * sin(x) = r','x')
ans =
asin(r/p)
[x,y] = solve('x^2 + x * y + y = 3','x^2 - 4*x + 3 = 0')
x=
[ 1]
[ 3]
y=
[ 1]
[ -3/2]

A seguir so apresentadas algumas das funes mais


utilizadas neste toolbox. Para mais detalhes sobre estas
funes ou para procurar outras funes existentes,
pode-se utilizar o help on line do MATLAB
procurando por symbolic.
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
a varivel a ser diferenciada em relao a varivel
independente antecedida pela letra D. No caso da ordem
ser maior que um, utiliza-se a notao: D2, D3, etc. Por
definio, a varivel independente t, mas pode ser
alterada na chamada da funo colocando a nova varivel
na ltima posio da chamada da funo. As condies
iniciais so especificados por equaes do tipo: y(a)=b
ou Dy(a)=b , onde y uma das variveis dependentes
enquanto a e b so constantes. Se o nmero de condies
iniciais for menor que o de variveis dependentes, sero
colocadas constantes arbitrrias (C1, C2,...) na soluo
final.

diff('sin(a)','a')
ans =
cos(a)

No caso do argumento desta funo ser um vetor, ela


retornar a diferena entre os elementos i+1 e i. E no
caso de matrizes, pode-se definir a ordem (o) da
diferena em se ela ser aplicada sobre as linhas (1) ou
colunas(2). A sintaxe neste caso a seguinte:
diff (X, o, 1 ou 2);

int
Calcula a integral de uma funo. Esta funo pode
fazer diferentes tipos de clculos de acordo com os
argumentos de entrada:

dsolve('Dx = - a * x')
ans =
C1*exp(- a * t)

int(S) calcula a integral definida de S em relao


varivel definida pela funo findsym. S uma string
ou uma varivel sym.
int (S,v) calcula a integral indefinida de S e, relao a
string v.
int (S,a,b) calcula a integral definida de S em relao a
sua varivel simblica para o intervalo [a b].
int (S,v,a,b) calcula a integral definida de S em relao
v para o intervalo [a b].

x = dsolve('Dx = - a * x', 'x(0) = 1','s')


x=
exp(- a * s)
y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0')
y=
[ sin(t)]
[ - sin(t)]
o

21

MATLAB Ferramenta matemtica para Engenharia


S = dsolve('Df = f + g', 'Dg = -f + g', 'f(0) = 1','g(0) = 2')
S=
f: [1x1 sym]
g: [1x1 sym]
[S. f S. g]
ans =
[ exp(t)*(cos(t)+2*sin(t)), - exp(t)*(sin(t)-2*cos(t))]

A lista de todas as opes disponveis pode ser encontrada


no help on line procurando por optimset.
fzero
Este comando calcula os zeros de uma funo escalar.
Tem como argumentos bsicos a funo que se deseja
determinar os zeros e um vetor com os intervalos da regio
onde ser feita a busca (sign(f(x1)) sign(f(x2))).
Geralmente a funo um M-file criado especificamente
para este problema, que deve pegar valores reais como
argumento e retornar valores reais. Outra opo
utilizando o comando inline, que cria uma funo objeto
para ser utilizada pelo comando fzero.

laplace
Calcula a transformada de Laplace de uma funo em
relao a varivel t (padro). Se a funo for dada em
termos de s, ento laplace retorna a sua inversa em t.
As variveis utilizadas nesta funo devem ser objetos
simblicos, portanto sempre devem ser declaras antes
atravs do comando syms.

f=inline('x^2-6*x+5');
fzero(f,[0 2])
Zero found in the interval: [0, 2].
ans =
1
fzero(f,7)
Zero found in the interval: [4.76, 8.5839].
ans =
5

syms a s t w x
laplace(t^5)
ans =
120/s^6
laplace(exp(a * s))
ans =
1/(t - a)
laplace(sin(w * x),t)
ans =
w/(t^2+w^2)
laplace(diff(sym('F(t)')))
ans =
s * laplace(F(t), t, s)-F(0)

fsolve
Resolve equaes no lineares do tipo: F(X) = 0,
utilizando o mtodo dos mnimos quadrados, onde F e X
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
otimizao, ou seja, problemas minimizao com ou
sem restries, minimizao de funes multiobjetivos, mtodo dos mnimos quadrados linear e no
linear, clculo de zeros, etc. Todos estes algoritmos
possuem opes especficas inerentes aos mtodos
utilizados, a tolerncia permitida, dentre outras. Para
definir quais sero estas opes, o MATLAB utiliza
uma estrutura que guarda todas as informaes
necessrias que sero utilizadas por uma funo
especfica. Esta estrutura pode ser definida utilizando o
comando optimset, que apresentado em seguida.

X = fsolve(funo.m, X0, opes, P1, P2, ...);

Maiores detalhes sobre algumas das funes


apresentadas ou para procurar outras funes, pode-se
utilizar o help on line do MATLAB procurando por
optim.

onde X o valor do mnimo local pertencente ao intervalo


(x1 , x2) da funo FUN que em geral um M-file. A outra
forma de resolver utilizando o comando inline.

onde X0 a matriz com os valores para inicializar o


problema, opes o conjunto de opes definidas com o
optimset e P1, P2,... so os parmetros que so passados
para a funo.
fminbnd
Resolve o problema de minimizao de uma funo
escalar no linear com restrio. A sua sintaxe geral a
seguinte::
X = fminbnd(FUN, x1, x2, opes, P1, P2, ..)

f =inline('(x-2)^3+5*(x-2)^2+13');
x = fminbnd(f,0,6)
Optimization terminated successfully:
the current x satisfies the termination criteria using
OPTIONS.TolX of 1.000000e-004
x=
2.0000

optimset
Cria uma estrutura com as opes que sero utilizadas
pelas funes do Optimization Toolbox. A sua sintaxe
a seguinte:
options = optimset(par1,valor1,par2,valor2,...)

lsqnonlin

Outra forma de definir os parmetros utilizar os


parmetros padres utilizados pela funo que se
deseja utilizar. Para isso, deve-se entrar uma string
com o nome da funo como argumento para optimset.

Resolve problemas no lineares de mnimos quadrados


com a seguinte forma:
min{sum[FUN(X).^2]}

optimset ( fzero );

onde X e os valores retornados pela funo FUN podem


ser vetores ou matrizes. A sintaxe geral a seguinte:

Para fazer uma cpia das opes antigas e alterando


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


UB so os limites inferiores e superiores,
respectivamente, das variveis desejadas. A funo
FUN que em geral um M-file, deve retornar um vetor
com as funes objetivos. A outra forma de resolver
utilizando o comando inline.

s+1
s2 +s+1
Entrada(Step)
u(t)

sada
y(t)

A seguir sero apresentadas algumas funes do control


toolbox que permitem uma anlise rpida e clara das
caractersticas principais de um sistema qualquer. A
seqncia na qual elas so apresentadas, segue
aproximadamente a ordem de uma anlise real. Para
maiores detalhes sobre algumas das funes apresentadas
ou para procurar outras funes, pode-se utilizar o help on
line do MATLAB procurando por control.

x = lsqnonlin(inline('sin(x . * x)'),0.3,-0.5, 0.5)


Optimization terminated successfully:
Relative function value changing by less than
OPTIONS.TolFun
x=
0.0139

Control System Toolbox


Este toolbox apresenta uma srie de funes destinadas
a facilitar quem trabalha na rea de controle de
processos. Os comandos que sero apresentados fazem
parte do conhecimento da teoria de controle bsica, que
deve estar no sangue de quem um dia pretende
passar pela disciplina de Controle de Processos
ministrada pelo Prof. Jorge O. Trierweiler (UFRGS).

tf
Gera um objeto do modelo LTI que possui como uma das
suas informaes a funo de transferncia, tendo como
argumentos os coeficientes do numerador e o
denominador. Um objeto LTI uma das formas de
representao para modelos lineares invariantes no tempo,
que pode ser manipulado pelas diversas ferramentas
disponveis no control toolbox. A sintaxe geral a
seguinte:

Antes de iniciar a apresentao dos comandos, convm


dar uma breve introduo do que vem a ser uma funo
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
correspondente aquela entrada. A sua origem vem da
modelagem de um processo qualquer (linear ou no), o
qual se deseja controlar. Como o a modelagem
geralmente consiste de um conjunto de equaes
diferenciais lineares ordinrias em relao ao tempo,
pode-se aplicar a transformada de Laplace, a qual reduz
o problema de se resolver um sistema de equaes
diferencias a um problema algbrico relativamente
simples. Na resoluo deste problema que as
variveis de interesse (entrada/sada) so relacionadas
por uma funo, a qual recebe o nome de funo de
transferncia. Convm salientar que no caso do modelo
ser no linear, pode-se, utilizando a expanso em srie
de Taylor, linearizar este modelo um ponto qualquer,
geralmente o ponto de interesse o correspondente ao
estado estacionrio do sistema, onde a planta
operada.

No caso de haver uma entrada e uma nica sada (SISO),


NUM e DEN so vetores com os coeficientes do polinmio
do numerador e do denominador, respectivamente. Para o
caso de mais de uma entrada e mais de uma sada
(MIMO), NUM e DEN devem ser colocados em uma lista
(cell array) em posies especficas determinadas pelas
entradas e sadas que a funo relaciona.
num=[1 1];den=[1 1 1];
G = tf(num, den)
Transfer function:
s+1
--------------s^2 + s + 1

step
Esta funo aplica um sinal degrau na entrada do sistema,
que representado por uma funo de transferncia, por
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
usual a designao num(numerador, cujas razes
eqivalem aos zeros do sistema) e den (denominador,
cujas razes eqivalem aos plos do sistema, e que por
sua vez esto relacionados com a dinmica do
processo). Portanto, uma funo de transferncia tem a
seguinte aparncia:

Para sistemas MIMO, esta funo mantm aplica a funo


degrau em uma das entradas mantendo constante as
demais, avaliando seu efeito nas sadas. Existem inmeras
opes que esta funo permite utilizar, portanto
conveniente dar uma olhada no help on line do MATLAB,
procurando por step.
Se fizermos:

K ( o S + 1)
2
1 2 S + 1 + (1 + 2 )S + 1

Funo de Transferncia
G(s)

step(G);

ou
step(num,den);

Os polinmios so colocados desta forma pois pode-se


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:

O resultado ser o seguinte:

23

MATLAB Ferramenta matemtica para Engenharia

Step Response

pade

From: U(1)
1.4

1.2

Faz a aproximao de Pad, muito utilizada para


representar o tempo morto. Tem como argumento o valor
do tempo morto e a ordem da aproximao, retornando
uma funo do tipo NUM/DEN. Quando executado sem os
argumentos de retorno da esquerda, este comando compara
a aproximao feita com a resposta exata do tempo morto
de um sinal degrau e da defasagem. Para um tempo morto
igual a 4, fazendo a aproximao de Pad de ordem 8, o
resultado o seguinte:

To: Y(1)

Amplitude

0.8

0.6

0.4

0.2

0
0

10

12

Time (sec.)

zpkdata
Este comando pega de um objeto LTI e retorna os
valores dos zeros, plos e ganho do sistema, que so
informaes teis na anlise de estabilidade do modelo
e posterior construo do controlador.

pade(4,8);
q

Step response of 8th-order Pade approximation


1.5

Amplitude

[z,p,k] = zpkdata(G)
z=
[-1]
p=
[2x1 double]
k=
1

4
5
Time (secs)
Phase response

0
Phase (deg.)

-500
-1000
-1500
-2000
-1

10

p{1}
ans =
-0.5000 + 0.8660i
-0.5000 - 0.8660i
p

0.5

-0.5

10
Frequency (rad/s)

10

bode
Apresenta o diagrama de Bode. Tem como argumento o
objeto criado do modelo LTI. Neste grfico possvel se
obter muitas informaes sobre o sistema referentes a sua
estabilidade.

pole
Retorna os valores dos plos do sistema. Toma como
argumento um objeto LTI. Este comando eqivale a
calcular os autovalores da matriz A na representao
no espao de estado utilizando o comando eig.

bode(G)
r

Bode Diagrams
From: U(1)
5
0

-10
-15
-20
0
-20
To: Y(1)

Phase (deg); Magnitude (dB)

-5

pole(G)
ans =
-0.5000 + 0.8660i
-0.5000 - 0.8660i
p

-40
-60
-80
-100
10-1

100

zero

101

Frequency (rad/sec)

nyquist

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


retornar o valor do ganho se no vetor de sada tiver
mais de duas variveis.

Faz o grfico de Nyquist tomando como argumento o


objeto criado do modelo LTI. A anlise deste grfico
permite fazer inferncias sobre a estabilidade do modelo
em malha fechada a partir da observao da sua resposta
em malha aberta.

[Z,K] = zero(G)
Z=
-1
K=
1

nyquist(G);

pzmap

Nyquist Diagrams
From: U(1)
1.5

Apresenta graficamente a localizao dos zeros e dos


plos, permitindo uma anlise visual sobre a
estabilidade de um sistema, por exemplo. Este
comando usa como argumento um objeto do modelo
LTI.

To: Y(1)

Imaginary Axis

0.5

-0.5

-1

-1.5
-1

-0.5

0.5

1.5

Real Axis
q

pzmap(G);

margin

Resulta na seguinte figura:

Este comando retorna a margem de ganho e a margem de


fase de um sistema tendo como entrada o objeto gerado
para o modelo LTI. Quando executados sem os argumentos
de retorno dos valores esquerda, ele apresenta
graficamente como estes valores so obtidos atravs do
diagrama de Bode.

Pole-zero map
1
0.8
0.6

Imag Axis

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

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

Real Axis

24

MATLAB Ferramenta matemtica para Engenharia


[K,P]=margin(G)
K=
Inf
P=
109.4712
[K,P]=margin(G)

forma amigvel, ou seja, utilizando uma interface grfica,


o Graphical User Interface (GUI), para criar outras.

Conceitos Bsicos
O Handle Graphics uma estrutura orientada para objeto
que permite a criao e manipulao de grficos e
imagens. Os Object Handles podem ser considerados
como indicadores nicos atribudos pelo MATLAB para
cada objeto, permitindo desta maneira referenciar estes
objetos para manipul-los. Existem 3 formas de se obter
um handle:

Bode Diagrams
Gm = Inf, Pm=109.47 deg. (at 1.4142 rad/sec)
5
0

Phase (deg); Magnitude (dB)

-5
-10
-15
-20
0
-50
-100
-150
-200
10-1

100

a)

101

Frequency (rad/sec)

na criao do objeto

rlocus

b) atravs de comandos utilitrios

Retorna os valores e faz um grfico com o lugar das


razes para um modelo SISO, tendo como argumento
um objeto do modelo LTI. O grfico dos lugares das
razes utilizado para analisar o sistema em malha
fechada, apresentando tambm as trajetrias dos plos
em malha fechada quando o ganho varia de zero a
infinito.

c)

utilizando o findobj

Para o caso de se desejar obter o handle do objeto na sua


criao (a), basta armazen-lo um uma varivel, pois os
handles so retornados automaticamente pelas suas
funes de criao.
s

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

Neste caso o handle do grfico da funo seno ficar


armazenado na varivel p, portanto se desejar-mos fazer
qualquer modificao no grfico utilizando seu handle,
basta utilizar p.

rlocus(G);
1
0.8
0.6
0.4

Imag Axis

0.2

A segunda forma de se obter um handle via comandos


utilitrios (b):

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

-2.5

-2

-1.5

-1
Real Axis

-0.5

0.5

b.1) gcf

retorna o handle da figura corrente

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


anlises apresentadas anteriormente em uma nica
janela. Ele utiliza como argumentos um modelo LTI
criado previamente e o tipo de anlise que se deseja
realizar.

b.4) gcbf

obtm handle para CallBack Figure

b.5) gcbo

obtm handle para CallBack Object

A terceira forma atravs do comando findobj (c), que


procura na figura o objeto atravs de propriedades
especficas do objeto de interesse (como o TAG do objeto,
por exemplo) e retorna o seu handle.

ltiview('step',G);
Step Response
From: U(1)
1.4

Este comando ir procurar atravs de toda a hierarquia de


objetos na figura at encontrar o objeto que possua as
propriedades especificadas, porm, esta busca pode ser
mais rpida se tambm for informado o objeto a partir do
qual se deve iniciar a busca. A sua sintaxe a seguinte:

1.2

To: Y(1)

Amplitude

0.8

0.6

0.4

0.2

0
0

var_handle = findobj(ponto_incio,propriedade,valor)

Time (sec.)

Este grfico foi obtido selecionand o estudo da resposta


do sistema quando sugeito a uma entrada degrau, que
pode ser selecionada clicando com o boto direito do
mouse sobre a figura e escolhendo o tipo de grfico
(plot type). Pode-se ainda obter caractersticas do
sistema, como tmpo de subida, estado estacionrio,
tempo de assentamento, etc. de forma interativa
utilizando o mouse.

exemplo:
plot([1:10]);
h = findobj(gca, 'Color',[0 0 1]);
set (h, Color, [1 0 0]);

Neste exemplo, o handle da linha do grfico identificado


pela sua cor azul e armazenado em h, e em seguida,
atribuda a cor vermelha para a mesma.
Como visto no exemplo, uma das formas de manipularmos objetos grficos atravs do comando set, enquanto
que para pegarmos valores especficos de uma propriedade
de um objeto, utiliza-se o comando get, em ambos os casos
o handle funciona como endereo onde ser feita a ao.

2. GUIDE
Esta uma mais uma das ferramentas poderosas do
MATLAB, que permite a construo de uma interface
amigvel para o usurio e o que melhor, de uma
25

MATLAB Ferramenta matemtica para Engenharia

Uma maneira mais simples de trabalhar com os objetos


grficos atravs do Graphical User Interface que
executado atravs do comando guide.

f)

Ainda com o boto da figura selecionado, clique no


boto Callback Editor do GCP e uma janela para
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.

Exemplo 1:

g) Aps concludas estas operaes, salva-se a figura e


no GCP torna a figura ativada da mesma maneira que
ela foi tornada controlada anteriormente.

Apresentar a hora cada vez que um boto que apresenta


a hora pressionado.

h) Para execut-la no MATLAB, basta digitar o seu


nome no workspace.

Exemplos Simples de construo

a)

Abra o Guide Control Panel (GCP) digitando


t

guide

Exemplo 2:

b) Este comando j cria abre uma figura


automaticamente caso no haja nenhuma figura
aberta. No caso de j haver, gere uma nova figura,
para tanto, basta digitar figure no whorkspace que
uma figura nova se abrir.
c)

Criar uma interface grfica na qual pode-se entrar uma


funo e os limites da varivel independente para gerar seu
grfico, permitindo a opo de apresentar ou no as linhas
de grade.
a)

Se a figura ainda no estiver marcada como


controlada pelo GCP, ento selecione a figura
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.

Abrir uma figura e acrescentar um, um eixo para


apresentao de um grfico, duas caixa de texto,
outras duas caixas editveis e um check box.

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
que desejas que aparea no boto quando da
execuo do mesmo. Lembrando que o texto
dever estar entre aspas simples.

c)

26

Abra o Callback Editor com o boto plot selecionado


e digite as seguintes linhas de comando:

MATLAB Ferramenta matemtica para Engenharia

CommandString = get(gcbo,'String');
EditHandle = findobj(gcbf,'Tag','EditText1');
ZString = get(EditHandle,'String');
eval(ZString);
eval(CommandString);
A primeira linha pega a o que est na propriedade
String do objeto corrente, enquanto que a Segunda
linha armazena o handle do objeto que possui o Tag
EditText1. A terceira linha pega o que est no campo
String do objeto identificado na linha anterior e
armazena em ZString, que executado na linha
seguinte e por fim, executa o comando que foi pego na
primeira linha.

f=findobj(gcf,'style','edit','Tag','func');
xl=findobj(gcf,'style','edit','Tag','xlim');
xl =eval(get(xl,'String'));
f = get(f,'String');
fplot(f,xl);
d) A primeira linha de comando ir pegar o handle na
caixa de texto editvel que possui o Tag func,
enquanto que a segunda ir atribuir a xl o handle
da caixa de texto editvel que possui o Tag xlim.
Na linha seguinte, o valor que foi digitado nesta
caixa, e que est armazenado na propriedade
String pego pelo comando get e em seguida
convertido em um valor e armazenado em xl. A
Quarta linha pega o valor da propriedade String da
caixa de textos da funo, que neste momento
possui o identificador (handle) f, e armazena este
valor na prpria varivel f. A ltima linha utiliza o
comando fplot que faz um grfico de uma funo
apenas tomando como argumento uma string da
funo e um vetor com os limites da varivel
independente.
e)

c)

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:
Value = get(gcbo,'Value');
String = get(gcbo,'String');
colormap(String{Value});
A primeira linha armazena em Value a posio
referente s opes da lista, enquanto que na segunda
linha armazenado em String o cell array que est
no campo String do objeto corrente. Na terceira linha
executado o comando colormap com a opo
escolhida

A primeira linha armazena em Hgrid o handle do


objeto que possui como Tag o nome gridflag. Na
Segunda linha, avaliado se existe algum valor na
propriedade deste objeto agora identificado por
Hgrid, no caso afirmativo, grid on executado,
caso contrrio executado o grid off.

e)

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)

cmaps={hsv ; hot; gray; cool};

Com esta lista armazenada no workspace, seleciona-se


o List box na figura e no Property Editor e no campo
String, digita-se cmaps sem as aspas simples. Desta
maneira, o cell array com as opes armazenado em
string para ser utilizado.

Hgrid=findobj(gcbf,'Tag','gridflag');
if get(Hgrid,'Value')
grid on;
else
grid off;
end
f)

Para colocar elementos um abaixo do outro no List


box, deve-se entrar no workspace um cell array com
as opes desejadas. Neste caso, pode-se fazer o
seguinte:

Montar uma figura que tenha a seguinte estrutura


bsica:

b) Slecione os 3 botes push e no Callback Editor


digite as seguintes linhas:
27

Salvar a figura e torn-la ativa.

MATLAB Ferramenta matemtica para Engenharia

Lista de Exerccios
Montar uma funo ( m-file)

1. AULA 1

Arquivo: a2_e2
Em um laboratrio de pesquisas so preparadas
periodicamente solues de sulfato de alumnio para
pesquisas sobre o tratamento de gua potvel. Os pedidos
de soluo so realizados ao laboratrio de preparo de
reagentes em concentraes sempre variveis.
Tarefas:
a) Desenvolver um programa para automatizar os
clculos necessrios para o preparo das solues. O
programa deve receber a quantidade de soluo
necessria (ml) e a concentrao desejada (molaridade),
gerando a quantidade de sal que deve ser utilizada (g). As
solues so preparadas a partir de gua destilada e
sulfato
de
alumnio
hexadecahidratado
(Al2(SO4)3.16H2O).
S=32.06 O=16
Massas molares: Al=26,98
H=1

Comandos no Workspace
Arquivo: a1_ew
1. Criar uma matriz A 20x2 com os elementos da
primeira coluna variando de 1 a 20, com um
intervalo unitrio, e dados aleatrios para os
elementos da segunda coluna.
2. Atribuir ao vetor X os valores da primeira coluna da
matriz A at a linha 15. Fazer o mesmo para a
Segunda coluna, armazenando os dados no vetor Y.
3. Fazer um grfico com os vetores (X,Y). Colocar um
ttulo e nomear os eixos.
4. Sobre o mesmo grfico anterior, apresentar uma
parbola (x2 - 15x + 60) com linha tracejada
vermelha.

Exemplo de Programao utilizando mais de


uma funo

2. AULA 2

Arquivos: a2_e3, funcao


A determinao da soluo de uma equao algbrica
um problema muito comum nos clculos de engenharia.
Muitas vezes a soluo pode ser obtida atravs de
tcnicas simples de manipulao algbrica, no entanto,
em certas equaes, este procedimento no pode ser
aplicado, ou seja, no possvel isolar a incgnita do
problema. Para resolver este problema, foram
desenvolvidos mtodos numricos que permitem
determinar a raiz de uma equao a partir de um
algoritmo adequado. O Mtodo da Bisseco um dos
representantes mais simples desta classe de mtodos.
Este mtodo se baseia na definio inicial de um
intervalo de busca da raiz e medida que o mtodo se
desenvolve, este intervalo seqencialmente reduzido at
atingir a preciso desejada.

Montar um script-file
Arquivo: a2_e1
O dixido de titnio (TiO2) um pigmento branco muito
utilizado na indstria de tintas.
Em uma planta h dois tanques contendo dixido de
titnio misturado com resina. Estes tanques possuem
diferentes concentraes de pigmento:
Identificao do tanque
TQ-101 TQ-102
Concentrao ( % peso/peso) 15
5
Uma certa quantidade das misturas contidas em cada um
destes tanques, ser adicionada em um terceiro tanque
(TQ-103) para a produo de tintas:
Tarefas:
a) Para auxiliar o departamento de produo deve ser
preparado um grfico que relacione a concentrao de
pigmento (% p/p) no tanque TQ-103 com a razo entre a
quantidade de massa adicionada proveniente do tanque
TQ-101 e a quantidade de massa adicionada proveniente
do tanque TQ-102. Traar o grfico entre as razes 0 e
10.
b) Estimar atravs do grfico, a razo entre as massas
adicionadas para a produo de
uma tinta com
concentrao de pigmento branco de 12 % p/p.

Descrio do Mtodo da Bisseco:


O problema original determinar a soluo da equao,
isto , determinar x 0 tal que:

f (x 0 ) = 0

(1)
O Mtodo da Bisseco se inicia com a determinao de
um intervalo [a,b] onde a raiz desejada esteja situada.
Para que o mtodo funcione adequadamente, deve existir
apenas uma raiz no intervalo [a,b] e a funo f(x) deve
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)
xs b
(3)
O primeiro passo do algoritmo determinar o ponto
mdio do intervalo de busca [xi,xs] :
xi + xs
xm =
(4)
2
So formados ento dois intervalos [xi,xm] e [xm,xs]. No
prximo passo deve-se comparar os sinais dos valores da
funo nos extremos destes intervalos. Esta comparao
permitir indicar em qual dos intervalos est a raiz
desejada.
Em funo do resultado desta comparao, o algoritmo
pode seguir duas alternativas possveis:
Alternativa 1:
f(xi) e f(xm) possuem o mesmo sinal e f(xm) e f(xs)
possuem sinais contrrios.
Isto significa que a raiz est no intervalo [xm,xs]. O
intervalo de busca ento estreitado da seguinte forma,
xi xm
(5)
Alternativa 2:
f(xi) e f(xm) possuem sinais contrrios e f(xm) e f(xs)
possuem o mesmo sinal.
Isto significa que a raiz est no intervalo [xi,xm]. O
intervalo de busca ento estreitado da seguinte forma,
xs xm
(6)
A motivao dos procedimentos associados s duas
alternativas pode ser melhor compreendida atravs da
visualizao do grfico da prxima figura:

xi

xm

Observao:
claro que se durante o algoritmo f(xm) = 0, o
procedimento imediatamente interrompido pois a raiz
o prprio valor de xm.
Tarefas:
a) Descrever o algoritmo do Mtodo da Bisseco passo
a passo, montando o fluxograma.
b) Criar uma rotina computacional para a aplicao do
mtodo.
c) Um trocador de calor um equipamento destinado a
permitir a transferncia de calor entre dois fluidos. Em
um determinado modelo de trocador de calor, gua deve
ser aquecida utilizando-se para isto uma corrente de leo.
A equao abaixo relaciona a carga trmica (taxa de
transferncia de calor entre os fluidos) com as
temperaturas de entrada e sada do leo e da gua no
equipamento:
( Toleo1 Tagua1 ) ( Toleo2 Tagua2 )
=0
Q UA
Toleo1 Tagua1
ln(
)
Toleo2 Tagua2
onde,
Q - Carga trmica do trocador, 160.103 W
U - Coeficiente global de transferncia de calor,
320 W/m2K
A - rea do trocador de calor, 16 m2
Toleo1 - Temperatura de entrada do leo no trocador,
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
equipamento (Tagua2), utilizando como regio de busca
inicial o intervalo 35,1 C at 79,9 C e tolerncia de
0,1 C.

xs

Figura - Procedimento de eliminao de intervalo

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
contrrios. O procedimento deve ento seguir a
alternativa 1, com a eliminao do intervalo [xi,xm],
onde j se sabe, a raiz no est presente.
Aps a eliminao do intervalo, segundo a alternativa 1
ou 2, o algoritmo deve recalcular o ponto mdio e repetir
a seqncia de procedimentos. importante observar que
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.

3. AULA 3
Agenda de endereos usando estruturas
Arquivo: a3_e1
Montar uma lista de endereos simples armazenando os
dados em uma estrutura. Este programa deve permitir a
localizao de telefones apenas dando o nome da pessoa.

29

MATLAB Ferramenta matemtica para Engenharia


(d) Na existncia da presa, o predador tem o suprimento
de alimento que lhe permite sobreviver e reproduzir a
uma taxa especfica proporcional a quantidade de presa,
isto :
1 dN 2
= + N 1
N 2 dt
Deste modo o modelo matemtico deste problema
descrito pelas equaes diferenciais ordinrias:
dN 1
= N1 N1 N 2
dt
dN
1 = N 2 + N 1 N 2
dt
Alm do conhecimento dos valores numricos dos
parmetros do modelo (os valores de , , e ), para se
resolver este sistema de equaes diferenciais ordinrias
deve-se conhecer os valores de N1 e N2 em um
determinado tempo (estas so as condies iniciais do
problema).

4. AULA 4
Exemplo de S-function, mscaras e resoluo
de sist. De equaes dif. no simulink
Arquivo: a4_e1.mdl, prexpre (s-function)
Devido ao fato de grande parte dos biorreatores operarem
em regime de batelada ou de semi-batelada sua operao
inerentemente transiente, isto todas suas variveis
[concentraes de clulas, de produtos(s) e de
substrato(s); a temperatura (caso o biorreator for no
isotrmico) mudam com o tempo. Os mtodos de anlise
dinmica de processos, geralmente utilizados em controle
de processos, sero de extrema utilidade nestas
apresentaes, em especial sero apresentados conceitos
iniciais de dinmica no linear que justificam vrios
fenmenos inerentes a este tipo de processo. Como
ilustrao de modelos dinmicos, o exemplo clssico o
modelo dinmico da presa-predador.
O modelo de Lotka-Volterra, desenvolvido no final da
dcada de 1920!] que constitudo por um sistema de
duas equaes diferenciais ordinrias fundamentadas em:

Tarefa: Construir no SIMULINK (S-function) para o


modelo de Lotka-Volterra e rodar simulaes para vrias
condies iniciais utilizando os parmetros:
= 0,3/ano
= 1/90 [1/(ano)/(nmero de espcies do predador];=
0,2106/ano
= 0,00026325[1/(ano)/(nmero de espcies de presa];

o modelo descreve a interao entre duas espcies


selvagens ( sendo : N1 o nmero de componentes da
espcie 1 - presa - N2 o nmero de componentes da
espcie 2 - predador), a presa herbvora e o predador
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
exclusivo suprimento alimentar as indefesas presas.
Originalmente o modelo foi desenvolvido por LotkaVolterra para uma situao mais complexa e realista, isto
: mais de duas espcies coexistindo e onde os
predadores alimentam-se de mais de uma espcie de
presa. Este caso simplificado tem seu modelo matemtico
desenvolvido a partir das informaes:
(a) Na ausncia do predador, a presa tem uma taxa
natural de nascimento b e uma taxa natural de
falecimento d. Uma vez que o suprimento de alimentos
para esta espcie ilimitado, a taxa de nascimento
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

5. AULA 5
Utilizando o GUIDE
Arquivo: a5_e1
Tarefa:
Montar um programa que determine os coeficientes de
um polinmio de grau n para um conjunto de dados
experimentais. Este programa deve ter uma interface
grfica amigvel.

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

Você também pode gostar