Escolar Documentos
Profissional Documentos
Cultura Documentos
Matlab - Pet-Ee PDF
Matlab - Pet-Ee PDF
CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELTRICA
PROGRAMA DE EDUCAO TUTORIAL
Apostila de
Fortaleza CE
Maio / 2014
Apostila de Matlab 8.1
Responsveis
Page 2 of 132
Apostila de Matlab 8.1
SUMRIO
1. PREFCIO .......................................................................................................................................... 6
2. APRESENTAO .............................................................................................................................. 7
3. FORMATAO.................................................................................................................................. 9
4. MATRIZES ....................................................................................................................................... 10
5. VETORES ......................................................................................................................................... 19
5.2. Operaes.................................................................................................................................. 20
6. M-FILE .............................................................................................................................................. 25
8. GRFICOS ........................................................................................................................................ 38
Page 3 of 132
Apostila de Matlab 8.1
8.3. Configurao ............................................................................................................................. 47
9. MATEMTICA SIMBLICA.......................................................................................................... 58
11.3. Integrao.................................................................................................................................. 65
Page 4 of 132
Apostila de Matlab 8.1
15.4. Modelagem de Sistemas ......................................................................................................... 110
Page 5 of 132
Apostila de Matlab 8.1
1. PREFCIO
Esta apostila foi desenvolvida por alunos do Programa de Educao Tutorial (PET) do curso de
Engenharia Eltrica da Universidade Federal do Cear (UFC) para a realizao do Curso de MATLAB.
Com o intuito de promover uma introduo ao MATLAB que viesse a facilitar o desempenho dos
estudantes da graduao na realizao de seus trabalhos e na sua vida profissional, o PET elaborou este
Curso de MATLAB que est atualmente na dcima quinta edio. Durante as quinze edies foram
contemplados aproximadamente 700 estudantes dos mais variados cursos de Engenharia do Centro de
Tecnologia da UFC.
Devido sua boa repercusso o Curso de MATLAB foi premiado no XVII Encontro de Iniciao
Docncia nos Encontros Universitrios de 2008.
Page 6 of 132
Apostila de Matlab 8.1
2. APRESENTAO
O MATLAB (MATrix LABoratory) uma linguagem de alto desempenho para computao tcnica.
Integra computao, visualizao e programao em um ambiente de fcil uso onde problemas e solues
so expressos em linguagem matemtica. Usos tpicos:
Matemtica e computao;
Desenvolvimento de algoritmos;
Aquisio de dados;
Modelagem, simulao e prototipagem;
Anlise de dados, explorao e visualizao;
Construo de interface visual do usurio.
Indubitavelmente, a melhor apostila tutorial sobre o MATLAB que possa existir o HELP do
prprio MATLAB. Todas as informaes possveis h no HELP, principalmente sobre as toolboxes,
sobre funes, SIMULINK e entre outros.
O HELP pode ser aberto de vrias formas. A primeira atravs da barra de menu, como mostrado na
Fig. 1.
Outra forma pela tecla de atalho F1. Uma terceira forma pelo boto da barra de acesso rpido,
posicionado logo acima da barra de Menu, de acordo com a Fig. 2.
Page 7 of 132
Apostila de Matlab 8.1
Dando continuidade, quando se deseja obter informaes sobre uma dada funo, possvel
consultar diretamente no HELP ou pelo COMMAND WINDOW. Para isso, basta digitar help e em seguida
a funo requerida, de acordo com o exemplo abaixo:
Veja que as informaes sobre a funo dirac aparecem no prprio COMMAND WINDOW. Se for
necessrio consultar a pgina do HELP, basta utilizar o comando doc e em seguida o nome da funo. Por
exemplo:
Depois de efetuado este comando, ir aparecer a janela do HELP com o seguinte, Fig. 3.
Page 8 of 132
Apostila de Matlab 8.1
3. FORMATAO
Page 9 of 132
Apostila de Matlab 8.1
4. MATRIZES
4.1. Declarao
>> a = [4 1; 3 4];
>> b = [2 3; 4 5];
>> c = [a b]
%c =
% 4 1 2 3
% 3 4 4 5
Obs.: bom lembrar que o MATLAB tem como primeiro ndice do vetor o nmero 1, diferente de
outras linguagens que usam o primeiro ndice como 0.
4.2. Soma
A soma de todos os elementos de uma matriz com um nmero feita da seguinte maneira:
>> c = [4 1 2 3; 3 4 4 5];
>> c+1
%ans =
% 5 2 3 4
% 4 5 5 6
>> d = [ 1 2 7 8; 4 7 5 8];
>> e = [ 5 -4 7 0; 3 -1 6 -4];
>> d+e
%ans =
% 6 -2 14 8
% 7 6 11 4
Page 10 of 132
Apostila de Matlab 8.1
4.3. Multiplicao
>> a = [1 4 2; 7 8 5; 9 5 4];
>> b = [4 2 -5; 0 1 3; 8 -2 1];
>> c = a*b
%c =
% 20 2 9
% 68 12 -6
% 68 15 -26
Obs.: Se for desejado realizar outra operao matemtica (exceto a soma e a subtrao) entre os
elementos com mesmo ndice das matrizes deve-se colocar um ponto antes do operador. Observe os
exemplos abaixo:
>> a = [1 4 2; 7 8 5; 9 5 4];
>> b = [4 2 -5; 0 1 3; 8 -2 1];
>> c = a.*b
%c =
% 4 8 -10
% 0 8 15
% 72 -10 4
>> b./a
%ans =
% 4.0000 0.5000 -2.5000
% 0 0.1250 0.6000
% 0.8889 -0.4000 0.2500
>> a.^2
%ans =
% 1 16 4
% 49 64 25
% 81 25 16
A 1 2 3 4 5 6 7 B 3 6 9 12 15 18 21
0 5 10 15 10 5 0
C
1 2 3 4 5 6 7
Atravs das matrizes acima, determine as matrizes a seguir utilizando os comandos j mencionados.
D 4 5 6 7 4 5 12 0 5 10 0 24 99
7 J L
G
6
H
15 1 2 3 2 5 10
E 7 6 5 4 6 7 18
24 99
5 4 21 K 0 25 100 0
M
4 5 6 7 1
F 4 9
2 5 10
7 6 5 4 5
I
6
Page 11 of 132
Apostila de Matlab 8.1
4.4. Matrizes pr-Definidas
ones
Sintaxe:
>> ones(2)
%ans =
% 1 1
% 1 1
zeros
Sintaxe:
>> zeros(2)
%ans =
% 0 0
% 0 0
eye
Sintaxe:
eye(m,n) Gera uma matriz de ordem m x n cujos termos que possuem i=j so unitrios.
>> eye(2)
%ans =
% 1 0
% 0 1
vander
Sintaxe:
Page 12 of 132
Apostila de Matlab 8.1
vander(A) Calcula a matriz de Vandermonde a partir de A
>> A = [1 2 3 4];
>> vander(A)
%ans =
% 1 1 1 1
% 8 4 2 1
% 27 9 3 1
% 64 16 4 1
rand
Sintaxe:
>> rand(2)
%ans =
% 0.9501 0.6068
% 0.2311 0.4860
(apstrofo)
Sintaxe:
>> A = [1 1; 2 3];
>> A'
%ans =
% 1 2
% 1 3
Sintaxe:
>> A = [1 1; 2 3];
>> det(A)
%ans =
% 1
Page 13 of 132
Apostila de Matlab 8.1
trace
Definio: Retorna um vetor com a soma dos elementos da diagonal principal de uma matriz.
Sintaxe:
>> A = [1 4; 2 1];
>> trace(A)
%ans =
% 2
inv
Sintaxe:
>> A = [5 8; 4 9];
>> inv(A)
%ans =
% 0.6923 -0.6154
% -0.3077 0.3846
eig
Sintaxe:
[a, b] = eig(A) Retorna em a uma matriz com os autovetores e, em b, uma matriz com os autovalores
associados.
Page 14 of 132
Apostila de Matlab 8.1
4.6. Trabalhando com matrizes
size
Sintaxe:
>> A = [1 1; 2 3];
>> [m,n]=size(A)
%m =
% 2
%n =
% 2
find
Definio: Procura os elementos em uma matriz de tal modo a respeitar a lgica fornecida, retornando os
ndices que descrevem estes elementos.
Sintaxe:
[row,col] = find(X, ...) Retorna, em row, uma matriz coluna com os ndices das linhas dos elementos
da matriz X e, em col, a matriz coluna contendo os ndices correspondentes s colunas dos elementos da
matriz X.
[row,col,v] = find(X, ...) Retorna, em row, uma matriz coluna com os ndices das linhas dos elementos
da matriz X , em col, uma matriz coluna contendo os ndices que descrevem as colunas dos elementos da
matriz X e, em v, uma matriz contendo os elementos de X.
Page 15 of 132
Apostila de Matlab 8.1
sort
Definio: Retorna o vetor dado ou elementos de uma matriz em ordem crescente ou decrescente.
Sintaxe:
sort(A,dim) Retorna os elementos das colunas (dim = 1) ou da linha (dim = 2) da matriz A em ordem
crescente.
sort(A,mode) Retorna os elementos das colunas da matriz A em ordem crescente (mode = ascend) ou
em ordem decrescente (mode = descend).
fliplr
Sintaxe:
flipud
Sintaxe:
Exerccio 3 - Crie um vetor A de 50 elementos aleatrios e em seguida crie a partir deste, outro vetor B
obedecendo aos seguintes critrios:
Page 16 of 132
Apostila de Matlab 8.1
Exerccio 4 - Realize as seguintes operaes no MATLAB, a partir das matrizes dadas, e interprete o
resultado.
a. E = det ( A .I ) com = 6
b. F = A-1 . B
c. A\B
d. A.F
e. BT . C
f. D.BA/A
Page 17 of 132
Apostila de Matlab 8.1
Os resultados obtidos podem ser confirmados por intermdio da Fig. 5.
Page 18 of 132
Apostila de Matlab 8.1
5. VETORES
5.1. Declarao
possvel trabalhar com vetores no MATLAB, cuja representao feita baseando-se numa matriz
linha. Por exemplo, para obter o vetor (1,3,8), basta iniciarmos com:
>> R = [1 3 8]
%G =
% 1 3 8
Portanto, todas as operaes se tornam possveis a partir do uso de funes apropriadas. importante
salientar que certas funes exigem a declarao de vetores por matriz coluna, entretanto, nada que uma
consulta no help para ajudar.
Uma operao bsica com vetores na determinao do nmero de elementos, a partir da funo
length, assim como no clculo do seu mdulo, usando a funo norm, ambas definidas abaixo. Logo
depois, sero dadas algumas funes que trabalham com vetores.
length
Sintaxe:
>> A = [8 9 5 7];
>> length(A)
%ans =
% 4
norm
Sintaxe:
>> x = [0 5 1 7];
>> sqrt(0+5^2+1^2+7^2) %Forma Euclidiana
%ans =
% 8.6603
>> norm(x) %Usando norm
%ans =
% 8.6603
Page 19 of 132
Apostila de Matlab 8.1
5.2. Operaes
Quando se deseja calcular o produto vetorial (ou cruzado) de vetores, utiliza-se a funo cross,
apresentada a seguir:
cross
Sintaxe:
De modo anlogo, define-se a funo dot como a responsvel pelo produto escalar de dois vetores
dados, conforme definio a seguir.
dot
Sintaxe:
>> a = [1 7 3];
>> b = [5 8 6];
>> c = cross(a,b)
%c =
% 18 9 -27
>> d = dot(a,b)
%d =
% 79
Alm disso, qualquer outra operao possvel, como soma e subtrao, mas se deve atentar-se ao
fato de que ambos os vetores devem possuir a mesma dimenso.
Dando continuidade, sero definidas algumas funes que podero ser teis quando se trabalha com
vetores ou at mesmo com matrizes.
min
Sintaxe:
min(A,B) Retorna uma matriz com os menores valores de cada posio correspondente de ambas as
matrizes
Page 20 of 132
Apostila de Matlab 8.1
[a,b] = min(A) Retorna, em a, os menores valores de cada coluna e, em b, a posio dos mesmos nas
suas respectivas colunas.
max
Sintaxe:
max(A,B) Retorna uma matriz com os maiores valores de cada posio correspondente de ambas as
matrizes.
[a,b] = max(A) Retorna, em a, os maiores valores de cada coluna e, em b, a posio dos mesmos nas
suas respectivas colunas.
sum
Definio: Calcula o somatrio dos elementos de um vetor ou o somatrio das colunas de uma matriz.
Sintaxe:
sum(A) Retorna a soma dos elementos de um vetor ou a soma das colunas de uma matriz.
prod
Definio: Calcula o produtrio dos elementos de um vetor ou o produtrio das colunas de uma matriz.
Sintaxe:
prod(A) Retorna o produto dos elementos do vetor A ou o produto das colunas da matriz A.
Page 21 of 132
Apostila de Matlab 8.1
>> A=[0 3; 2 4];
>> prod(A)
%ans =
% 0 12
6 2 45
Exerccio 6 - Declare a matriz X no MATLAB e determine: X 65 32 9
3 8 1
cart2pol
Sintaxe:
[theta,rho] = cart2pol(x,y) Converte o ponto de cartesianas (x,y) para coordenadas polares (theta,rho).
Page 22 of 132
Apostila de Matlab 8.1
pol2cart
Sintaxe:
cart2sph
Sintaxe:
sph2cart
Sintaxe:
Um exemplo para o uso destas funes na utilizao das equaes de potenciais eltricos para
determinadas distribuies de carga que so simtricos a um sistema de coordenadas. Vejamos o exemplo
abaixo.
Exemplo 2 - Um dipolo eltrico formado colocando uma carga de 1 nC em (1,0,0) e uma outra carga de
-1 nC em (-1,0,0). Determine as linhas equipotenciais geradas a partir dessa configurao.
Page 23 of 132
Apostila de Matlab 8.1
>> [x,y,z] = meshgrid(-0.5:.012:0.5);
>> [teta,fi,r] = cart2sph(x,y,z);
>> v = (1e-9*0.2*cos(teta))./(4.*pi.*8.85e-12.*r.^2);
>> contourslice(x,y,z,v,[ -0.5:0.5],[-0.5:0.5],[-0.5:0.5]);
>> colormap hsv
>> grid on
Page 24 of 132
Apostila de Matlab 8.1
6. M-FILE
6.1. Definio
O M-File uma ferramenta do MATLAB que auxilia na criao de funes e scripts. Para criar um
novo M-File deve-se entrar na aba Home no menu New e escolher a opo script, Fig. 9, ou clicar em
New Script na aba Home:
Page 25 of 132
Apostila de Matlab 8.1
ser necessrio digit-los um a um na Command Window, basta digitar os comandos no M-File, salvar o
arquivo e execut-lo. Segue um exemplo de script para calcular a distncia entre dois pontos:
p=[1 2];
q=[4 5];
temp=((p(1)-q(1))^2+(p(2)-q(2))^2);
distancia=sqrt(temp);
O primeiro passo para executar um script salv-lo. O M-File salva os arquivos do M-File no seu
diretrio padro, com a extenso .m. Para salvar deve-se entrar no menu File e escolher a opo Save.
Existem duas opes para se executar o script, a primeira clicar no boto Run, que est localizado na
Barra de Ferramentas Run do M-File, Fig. 10, em verde:
A outra opo usar o atalho F5. As conseqncias da execuo so as mesmas que seriam
observadas se os comandos tivessem sido executados na Command Window: as variveis declaradas
estaro todas disponveis no Workspace e os resultados de cada operao estaro presentes na tela.
O M-FILE um ambiente de programao, portanto existem algumas funes, bem parecidas com as
da linguagem C, por exemplo, que podem ser utilizadas.
6.2. Organizao
Para uma melhor organizao podemos fazer comentrios utilizando o smbolo %, ou selecionando
o texto inteiro e teclando Crtl+R, ou %{ para abrir o comentrio por bloco e %} para fechar.
Podemos ainda utilizar o smbolo %% para que, no mesmo M-File, o usurio possa rodar apenas
algumas partes do programa, Fig. 11. Para rodar somente a parte selecionada, tecle Ctrl+Enter e para
rodar o programa inteiro clique em F5 ou no cone da Fig. 12.
Page 26 of 132
Apostila de Matlab 8.1
if
Definio: Operao condicional. Executa as funes contidas no comando. Pode ser utilizado com else,
que executa caso a condio declarada for falsa, e com elseif, que executa a funo caso outra condio
posteriormente declarada for verdadeira.
Para mais de uma condio, utiliza-se para e, &&, e para ou, ||.
Sintaxe:
if <condio>
[Comandos]
elseif <condio>
Page 27 of 132
Apostila de Matlab 8.1
[Comandos]
else
[Comandos]
end
for
Definio: Comando de iterao. Permite que um conjunto de instrues seja executado at que a
condio seja satisfeita.
Sintaxe:
for <condio>
[Comandos]
end
while
Definio: Comando de iterao. Executa um bloco de instrues enquanto a condio for verdadeira.
Sintaxe:
while <condio>
[Comandos]
end
switch
Definio: Operao condicional. Testa sucessivamente o valor da expresso dada e direciona para o caso
especificado. Funciona como um bloco de ifs
Sintaxe:
switch <condio>
case caso1
[Comandos]
[Comandos]
Page 28 of 132
Apostila de Matlab 8.1
otherwise (Caso no seja nenhuma das outras condies)
[Comandos]
end
>> a = 3;
>> switch a
>> case {2}
>> disp('Resposta um')
>> case {3}
>> disp('Resposta dois')
>> case '5'
>> disp('Resposta tres')
>> otherwise
>> disp('Resposta ?')
>> end
disp
Definio: Escreve no command window um texto ou o valor de um vetor, sem escrever seu nome.
Sintaxe:
disp(x)
input
Sintaxe:
Command Window:
Entre um nmero
23
X =
23
num =
230
break
Sintaxe:
break
Page 29 of 132
Apostila de Matlab 8.1
>> for i = 0:5
>> i
>> if i == 1
>> break
>> end
>> end
Command Window:
i =
0
i =
1
continue
Sintaxe:
continue
Command Window:
i =
0
i =
3
Operadores Lgicos
Funes em M-File
Page 30 of 132
Apostila de Matlab 8.1
Outra importante funo do M-File a criao de funes. A declarao inicial da seguinte forma:
Segue um exemplo:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Funo exemplo
% A funo recebe um vetor qualquer e retorna dois valores
% vetor2 = vetor multiplicado por 2
% e v1 = o valor do primeiro elemento do vetor
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Para chamar a funo, basta digitar na janela de comando o nome da funo com as entradas entre
parnteses. importante lembrar de salvar o arquivo com mesmo nome da funo!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>> A = [2 5 -8 4 1 6]
%A =
% 2 5 -8 4 1 6
>> [x,y]=funcao(A)
%x =
% 4 10 -16 8 2 12
%y =
% 2
function [vetor2, v1]= funcao(vetor)
vetor2=vetor*2; % multiplica o vetor por 2
v1=vetor(1); % retorna o primeiro elemento do vetor de entrada...
Page 31 of 132
Apostila de Matlab 8.1
7. FUNES MATEMTICAS
Funo Descrio
log(X) Determina o logartmo natural de X
log10(X) Determina o logartmo de X na base 10
log2(X) Calcula o logartmo de X na base 2
exp(X) Determina a exopresso de ex
sqrt(X) Retorna a raiz quadrada de X
O MATLAB possui tambm funes que possibilitam os clculos elementares de matemtica, tais
como mmc, mdc e entre outros. Por exemplo, as funes gcd e lcm retornam o mximo divisor comum e
o mnimo mltiplo comum, respectivamente. Vejamos abaixo essas e outras funes similares:
gcd
Sintaxe:
lcm
Sintaxe:
factorial
Sintaxe:
Page 32 of 132
Apostila de Matlab 8.1
factorial(N) Calcula o fatorial de N.
nchoosek
Sintaxe:
primes
Definio: Devolve uma lista com uma quantidade desejada de nmeros primos.
Sintaxe:
mod
Sintaxe:
rem
Sintaxe:
perms
Sintaxe:
P = perms(v) v pode ser uma matriz com os nmeros nos quais deseja permut-los.
Page 33 of 132
Apostila de Matlab 8.1
>> a = 5 +8i
%a =
% 5.0000 + 8.0000i
>> a = 5 + 8j
%a =
% 5.0000 + 8.0000i
H outra forma de definir um nmero complexo no MATLAB, atravs da funo complex. A sua
vantagem est na maior liberdade que se tem para alterar a parte imaginria, real, mdulo ou at mesmo a
fase do nmero, no ponto de vista computacional. A definio dessa funo descrita como:
complex
Definio: Retorna um nmero complexo a partir da sua parte real e da sua parte imaginria.
Sintaxe:
Quando se deseja trabalhar com mdulo, ngulo de fase, conjugado, ou entre outros, tornam-se fceis
de serem calculados quando se utiliza a funo adequada. Na Tabela 4 sero denotadas algumas funes
que possibilitam isso.
Funo Descrio
abs(X) Retorna o mdulo do nmero complexo x
angle(X) Retorna a fase do comlexo X
conj(X) Calcula o conjugado do nmero complexo X
imag(X) Determina a parte imaginria de X
real(X) Determina a parte real de X
Quando trabalhamos com trigonometria, o MATLAB dispe de funes que operam neste ramo
matemtico. Tabela 5 resume bem algumas funes que possuem este fim.
Page 34 of 132
Apostila de Matlab 8.1
Tabela 5 - Funes trigonomtricas.
Funo Descrio
cos(X) Cosseno do argumento X em radianos
sin(X) Seno do argumento X em radianos
tan(X) Tangente do argumento X em radianos
sec(X) Secante do argumento X em radianos
csc(X) Cossecante do argumento X em radianos
cot(X) Cotangente do argumento X em radianos
Veja acima que estas funes retornam um valor correspondente a um argumento em radianos.
Quando for desejado entrar com um argumento em grau, basta utilizar o sufixo d em cada funo. Por
exemplo, o seno de 30:
>> sind(30)
%ans =
% 0.5000
Entretanto, quando deseja calcular o arco correspondente a um valor pra uma dada funo, basta
utilizar o prefixo a diante as funes. Como exemplo, determinemos o arco-tangente de 1 em radianos:
>> atan(1)
%ans =
% 0.7854
>> atand(1)
%ans =
% 45
Por fim, quando se deseja determinar a funo hiperblica, basta utilizar o sufixo h na funo dada.
Vejamos no comando a seguir:
>> cosh(3)
%ans =
% 10.0677
>> (exp(3)+exp(
%ans =
% 10.0677
Page 35 of 132
Apostila de Matlab 8.1
A Tabela 6 resume bem o uso de sufixo e prefixo em funes trigonomtricas:
round
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro mais prximo desses
elementos. Tambm vlido para nmeros complexos.
Sintaxe:
ceil
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro imediatamente maior que
os respectivos elementos.
Sintaxe:
floor
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro imediatamente menor
que os respectivos elementos.
Sintaxe:
Page 36 of 132
Apostila de Matlab 8.1
fix
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro mais prximo de tal
modo que esteja em direo ao zero.
Sintaxe:
Page 37 of 132
Apostila de Matlab 8.1
8. GRFICOS
ezplot
Definio: Plota a expresso simblica f(x) no domnio padro -2<x<2. Observe a Fig. 13.
Sintaxe:
>> ezplot('sin(x)')
Page 38 of 132
Apostila de Matlab 8.1
plot
Definio: Plota as colunas de um vetor versus os ndices de cada elemento, se o vetor for real. Se for
complexo, plota a parte real pela parte imaginria de cada elemento. Observe a Fig. 14.
Sintaxe:
plot(X) Se X for complexo, plota a parte real pela parte imaginria de cada elemento. equivalente a
plot(real(X),imag(X)).
>> t = 0:pi/50:10*pi;
>> plot(t,sin(t
Page 39 of 132
Apostila de Matlab 8.1
line
Sintaxe:
>> x= -2:0.01:5;
>> line(x,exp(x))
Page 40 of 132
Apostila de Matlab 8.1
stem
Sintaxe:
>> x = -4:4;
>> y = exp(x);
>> stem(y(
Page 41 of 132
Apostila de Matlab 8.1
compass
Definio: Plota vetores de componentes cartesianas a partir da origem de um grfico polar. Observe a
Fig. 17.
Sintaxe:
>> compass(2,3)
Page 42 of 132
Apostila de Matlab 8.1
8.2. Grficos Tridimensionais
ezplot3
Definio: Plota uma curva espacial de trs equaes paramtricas no domnio padro 0 < t < 2. Observe
a Fig. 18.
Sintaxe:
>> ezplot3('cos(t)','sin(t)','t')
Page 43 of 132
Apostila de Matlab 8.1
plot3
Sintaxe:
Plot3(X,Y,Z) Plota uma ou mais linhas no espao tridimensional atravs de pontos cujas coordenadas
so elementos dos vetores ou matrizes X,Y e Z.
Page 44 of 132
Apostila de Matlab 8.1
ezsurf
Definio: Plota a superfcie de um grfico de uma funo de duas variveis no domnio padro -2 < x <
2 e -2 < y < 2. Observe a Fig. 20.
Sintaxe:
ezsurf(X,Y,Z) Plota a superfcie paramtrica x = x (s, t) , y = y (s, t) e z = z (s, t) no domnio -2 < s <
2 e -2 < t < 2
Page 45 of 132
Apostila de Matlab 8.1
meshgrid
Sintaxe:
surf
Definio: Plota a superfcie de um grfico de uma funo de duas variveis cujo domnio determinado
pelo usurio. Observe a Fig. 21.
Sintaxe:
>> surf(X,Y,Z)
Page 46 of 132
Apostila de Matlab 8.1
8.3. Configurao
text
Definio: Cria objetos de texto em locais especficos do grfico. Observe a Fig. 22.
Sintaxe:
text(x,y,string) Escreve string no local (x,y). Pode-se modificar string das mais diversas formas.
>> plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))
>> text(pi,0,'\leftarrow sin(\pi)','FontSize',18)
Figura 22 - Grfico sin(x) gerado pela funo plot com texto gerado pela funo text.
Page 47 of 132
Apostila de Matlab 8.1
title
Sintaxe:
>> compass(2,3)
>> title('Grfico Polar')
Figura 23 - Grfico polar gerado pela funo compass com ttulo gerado pela funo
Page 48 of 132
Apostila de Matlab 8.1
axis
Sintaxe:
axis([xmin xmax ymin ymax zmin zmax]) define o eixo X de xmin a xmax, o eixo Y de ymin a yimax e
o eixo Z de zmin a zmax.
>> t = 0:pi/50:10*pi;
>> plot3(cos(t),sin(t),t)
>> axis([-1.5 1.5 -1.5 1.5 -1 34])
Figura 24 - Grfico cos(t), sin(t), t gerado pela funo plot3 com eixos ajustados pela funo axis.
Page 49 of 132
Apostila de Matlab 8.1
grid
Sintaxe:
>> t = 0:pi/50:10*pi;
>> plot3(cos(t),sin(t),t)
>> grid on
Figura 25 - Grfico cos(t), sin(t), t gerado pela funo plot3 com linhas de grade geradas pela funo grid.
Page 50 of 132
Apostila de Matlab 8.1
hold
Sintaxe:
>> x = -6:0.01:6;
>> y = sin(x);
>> plot(x,y)
>> hold on
>> t = -6:0.01:2;
>> k = exp(t);
>> plot(t,k)
Figura 26 - Grficos sin(x) e ex gerados pela funo plot e ezplot respectivamente e colocados na mesma janela de grfico pela
funo hold.
Page 51 of 132
Apostila de Matlab 8.1
legend
Sintaxe:
>> x=-6:0.01:6;
>> y=sin(x);
>> plot(x,y)
>> hold on
>> t=-6:0.01:2;
>> k=exp(t);
>> plot(t,k)
>> legend('Grfico 1: y=sen(x)','Grfico 2: y=exp(x)')
Page 52 of 132
Apostila de Matlab 8.1
xlabel, ylabel, zlabel
Sintaxe:
>> t = 0:pi/50:10*pi;
>> plot3(cos(t),sin(t),t)
>> xlabel('x=cos(t)')
>> ylabel('y=sin(t)')
>> zlabel('z=t')
Figura 28 - Grfico cos(t), sin(t), t gerado pela funo plot3 com ttulos nos eixos coordenados.
Page 53 of 132
Apostila de Matlab 8.1
xlim, ylim, zlim
Sintaxe:
>> t = 0:pi/50:10*pi;
>> plot3(cos(t),sin(t),t)
>> xlim([-1.5 1.5])
>> ylim([-1.5 1.5])
>> zlim([-1 34])
Figura 29 - Grfico cos(t), sin(t), t gerado pela funo plot3 com eixos ajustados pelas funes xlim, ylim e zlim.
Page 54 of 132
Apostila de Matlab 8.1
figure
Sintaxe:
figure Abre uma nova janela de grfico, definindo-a como janela atual.
subplot
Definio: Divide a janela do grfico em uma matriz definida pelo usurio, podendo trabalhar com
qualquer um. Observe a Fig. 30.
Sintaxe:
>> subplot(2,1,1),ezplot('sin(x)')
>> subplot(2,1,2),ezplot('exp(x)')
Page 55 of 132
Apostila de Matlab 8.1
Exerccio 8 - Plote as funes a seguir com os respectivos comandos e de acordo com cada item: 5sin (x)
plot; 4sin(x) stem.
aviobj=avifile('Filme Seno.avi','fps',50);
hold on;
grid on;
x = -4*pi:0.1:4*pi;
for k = 1:1:size(x,2)-1
xx = [x(k) x(k+1)];
yy = [sin(x(k)) sin(x(k+1))];
h = plot(xx,yy);
set(h,'EraseMode','xor');
axis ([-10 10 -1.5 1.5]);
frame = getframe(gca);
aviobj = addframe(aviobj,frame);
end
aviobj=close(aviobj);
Page 56 of 132
Apostila de Matlab 8.1
Aviobj = avifile('Complexo.avi','fps',50);
hold off;
grid on;
t = 0:0.01:4*pi;
x = cos(t);
y = sin(t);
for k = 1:1:length(t)
c = x(k)+i*y(k);
h = compass(c);
set(h,'EraseMode','xor');
frame = getframe(gca);
aviobj = addframe(aviobj,frame);
end
aviobj = close(aviobj);
Page 57 of 132
Apostila de Matlab 8.1
9. MATEMTICA SIMBLICA
syms
Sintaxe:
sym
Sintaxe:
S = sym(A)
x = sym('x')
Em alguns casos, quando se desejar determinar quais as variveis simblicas numa expresso, usa-se
a funo findsym, que retorna os parmetros que so simblicos. Uma outra funo a subs, que substitui
a varivel declarada inicialmente simblica por uma outra ou mesmo por um nmero. Suas definies
esto listadas abaixo:
findsym
Sintaxe:
findsym(S)
findsym(S,n)
Page 58 of 132
Apostila de Matlab 8.1
subs
Sintaxe:
R = subs(S)
R = subs(S, new)
R = subs(S,old,new)
R = subs(S,{old1,old2},{new1,new2})
y = 3;
w = 30;
syms a b n t x z
f = x^n+y;
g = sin(a*t + b)-cosd(w);
Exerccio 10 - Implemente o mtodo das bissees sucessivas para a resoluo de equaes no lineares,
Fig. 33.
Page 59 of 132
Apostila de Matlab 8.1
10. OPERAES MATEMTICAS BSICAS
Uma curiosidade que o MATLAB dispe de um conjunto de funes que contribuem para a
fatorao, expanso, simplificaes e entre outros. A Tabela 6 resume bem cada funo.
Funo Definio
collect Reescreve a expresso como um polinmio
expand Expande a expresso em produtos e somas
horner Determina o fator em comum da expresso
factor Fatora o polinmio, se os coeficientes so racionais
simplify Simplifica as expresses, de forma mais geral.
compose Calcula a composio das funes
finverse Encontra a inversa funcional da funo.
x ( x ( x - 6 ) + 11 ) - 6
Para agrup-la de tal modo que possa ter uma organizao em relao ao grau do polinmio, faz:
>> syms x
>> collect(x*(x*(x-6)+11)-6)
%ans =
%x^3 - 6*x^2 + 11*x 6
Exerccio 11 - Verifique a relao trigonomtrica fundamental utilizando a funo simplify, logo aps,
determine a forma expandida de tan( x + y).
a. f(g(x))
b. g(f(x))
10.2. Polinmios
Agora trataremos com os polinmios. Para definir um polinmio no MATLAB, basta entrar com
uma matriz linha, nos quais os elementos dela representam os coeficientes do maior para o menor grau.
Page 60 of 132
Apostila de Matlab 8.1
Por exemplo, o polinmio 5x3 - 9x2 + + representado como p=[5 -9 8/5 4/7]. bom lembrar que o
poly
Definio: Determina os coeficientes do polinmio a partir de suas razes. Caso a entrada seja uma
matriz, este calcula o polinmio caracterstico da matriz.
Sintaxe:
p = poly(A)
p = poly(r)
roots
Sintaxe:
r = roots(c)
polyval
Definio: Determina o valor do polinmio para uma determinada entrada. Se a entrada for uma matriz, a
funo retorna o valor do polinmio para cada elemento.
Sintaxe:
Page 61 of 132
Apostila de Matlab 8.1
>> polinomio = [1 3 2]; % polinmio=x4+5x3-2x2+8x+3.2
>> a = [1 -1; 3 2.83];
>> valores=polyval(polinomio,a)
%valores =
% 15.2000 -10.8000
% 225.2000 187.2906
%valores(1,1) = a(1,1)4+5a(1,1)3-2 a(1,1)+8 a(1,1)+3.2
polyfit
Definio: Determina o polinmio interpolador com os pontos dados por x e y com o grau n. Os
coeficientes so retornados numa matriz linha.
Sintaxe:
p = polyfit(x,y,n)
>> x=[0:0.1:2.5];
>> y = sqrt(x);
>> polinomio_interpolador = polyfit(x,y,3)
>> pontos_interpoladores = polyval(polinomio_interpolador,x)
>> plot(x,y,'color','r')
>> hold on
>> plot(x,pontos_interpoladores)
Quando voc tiver um emaranhado de equaes, resultando em um sistema, o MATLAB poder ser
uma tima soluo. Ao utilizar a funo solve, voc ser capaz de economizar tempo e evitar resolver um
tedioso sistema braalmente. A declarao desta funo segue abaixo:
solve
Definio: Determina o valor do polinmio para uma determinada entrada. Quando a soluo
armazenada em uma varivel, o retorno dado em uma estrutura de dados.
Sintaxe:
Page 62 of 132
Apostila de Matlab 8.1
solve(eq1,eq2,...,eqn) Resolve um sistema de equaes definidas.
Partindo para um mbito mais complexo, quando se trata de equaes diferenciais, a funo
destinada para este caso a dsolve, definida abaixo:
dsolve
Sintaxe:
r = dsolve('eq1,eq2,...', 'cond1,cond2,...','v')
r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v')
dsolve('eq1,eq2,...','cond1,cond2,...', 'v')
Exerccio 17 - Eu tinha o triplo da idade que tu tinhas, quando eu tinha a idade que tu tens. Quando tu
tiveres a minha idade, a diferena de nossas idades ser de duas dcadas. Determine nossas idades
utilizando a funo solve.
unidades no S.I.
Page 63 of 132
Apostila de Matlab 8.1
11. CLCULO DIFERENCIAL
O MATLAB disponibiliza funes que facilitam a operao de certos clculos que so difceis para o
usurio. Por exemplo, a funo diff(), int() e limit() so algumas delas, nas quais diferenciam, integram ou
calculam o limite de uma funo de acordo com os parmetros oferecidos, respectivamente.
11.1. Limites
limit
Sintaxe:
>> limit('(abs(x^2)-1)/(x^2-1)',x,1,'right')
%ans =
% 1
11.2. Diferenciao
diff
Sintaxe:
Page 64 of 132
Apostila de Matlab 8.1
diff(S,n) diferencia, para um n inteiro positivo, S por n vezes;
>> syms x;
>> f = sqrt(log(x)+exp(x));
>> diff(f)
%ans =
%(exp(x) + 1/x)/(2*(exp(x) + log(x))^(1/2))
>> pretty(ans)
11.3. Integrao
int
Sintaxe:
Indefinida
>> syms x
>> y=sqrt(x^2+5);
>> f=int(y,x)
%f =
%(5*asinh((5^(1/2)*x)/5))/2 + (x*(x^2 + 5)^(1/2))/2
Definida de 2 a 5
>> g = int(y,x,2,5)
%g =
%(5*log(5^(1/2) + 6^(1/2)))/2 - (5*log(5))/4 + (5*30^(1/2))/2 - 3
Caso a visualizao de f no seja satisfatria, usa-se a funo pretty, que transforma a sada de
acordo com a representao matemtica, conforme ilustra abaixo:
>> pretty(g)
Page 65 of 132
Apostila de Matlab 8.1
Como a integral calculada de forma simblica, no calculado o valor numrico da funo g.
Entretanto, o MATLAB no deixa a desejar neste ponto, como ao utilizar a funo eval. Por exemplo,
fazendo a instruo abaixo, voc obtm:
>> eval(g)
um mtodo utilizado quando a rea sob uma curva representada por trapzios entre um intervalo
[a,b] pr-definido, sendo o nmero de divises n. Em representao matemtica, tem-se:
em que xi representa o ponto no final de cada trapzio, sendo x0 = a e xn = b . No MATLAB a funo que
possibilita integrao a partir deste mtodo o trapz, definida abaixo:
trapz
Sintaxe:
Z = trapz(Y)
Z = trapz(X,Y)
O mtodo de Simpson baseado, dado trs pontos sobre a curva da funo, na aproximao desses
pontos em uma parbola. Ento, tomados n subintervalos, onde n par, e cuja extremidade da curva
delimitada por f (a) e por f (b) , logo, a integral de uma funo denotada por:
A maioria das calculadoras programadas utiliza esta regra, que mais utilizada em termos
computacionais. No MATLAB, a funo encarregada para esse fim a quad, mostrada abaixo:
quad
Sintaxe:
Page 66 of 132
Apostila de Matlab 8.1
q = quad(fun,a,b)
q = quad(fun,a,b,tool) tool corresponde o erro que a integral retornar, sendo o default de 10-3.
bom destacar que fun deve ser uma funo do tipo arquivo.m. Por exemplo, para calcular a integral
de y = e-x no intervalo de 0 a 3, faz-se o seguinte:
function y=funcao(x)
y=exp(-x^2);
>> quad('funcao',0,3)
%ans =
% 0.8862
O MATLAB possui a funo dblquad que determina a integral dupla de uma funo, conforme
definio abaixo:
dblquad
Sintaxe:
q = dblquad(fun,xmin,xmax,ymin,ymax)
Tambm possvel calcular a integral tripla de uma funo no MATLAB, utilizando neste caso a
funo triplequad, cuja definio segue abaixo:
triplequad
Sintaxe:
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax)
Page 67 of 132
Apostila de Matlab 8.1
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol) tol a preciso que deseja calcular, sendo o
default 10-6 .
gradient
Sintaxe:
divergence
Sintaxe:
Exemplo 8 - Um exemplo clssico para o uso de gradiente seria na determinao do Campo Eltrico
devido ao efeito de uma carga pontual de 18 C. O cdigo segue abaixo.
Veja que a funo quiver plota o que representaria o campo eltricodevido carga, Fig. 34.
Page 68 of 132
Apostila de Matlab 8.1
Page 69 of 132
Apostila de Matlab 8.1
12. SRIES NUMRICAS
12.1. Somatrio
Uma funo muito utilizada em Sries Numricas a symsum, que encontra o somatrio simblico
de uma expresso. A sua descrio segue abaixo:
symsum
Sintaxe:
a.
b.
Considerando P(x) como sendo o polinmio de Taylor, de ordem n, em torno do ponto x0, ento P(x)
o nico polinmio de grau no mximo n que aproxima localmente f em volta de x0 de modo que o erro
E(x) tenda a zero mais rapidamente que (x-x0)n, quando x x0.
taylor
Sintaxe:
Page 70 of 132
Apostila de Matlab 8.1
taylor(f) faz a aproximao pelo polinmio de Taylor at a quinta ordem para a funo simblica f.
taylor(f,n,v) retorna o polinmio de Taylor para a funo simblica f at o grau n-1 para a varivel
especificada por v.
taylor(f,n,v,a) retorna a aproximao de Taylor de f em torno do ponto a, que pode ser simblica ou
um valor numrico.
>> syms x
>> f = 1/(5+4*cos(x))
%f =
%1/(5+4*cos(x))
>> T = taylor(f)
%T =
%1/9+2/81*x^2+5/1458*x^4+49/131220*x^6
>> pretty(T)
Page 71 of 132
Apostila de Matlab 8.1
13. ANLISE DE SINAIS
x(t) x(t + )
|| < 1 Expanso
|| > 1 Compresso
< 0 Reflexo
0 Deslocamento
Deslocamento no tempo:
Page 72 of 132
Apostila de Matlab 8.1
Reflexo:
Escalonamento:
Page 73 of 132
Apostila de Matlab 8.1
Impulso
[n] = 0, n 0
1, n 0
(t) = 0, t 0
1, t 0
Page 74 of 132
Apostila de Matlab 8.1
Command Window:
>> x = -2:7;
>> y = impulso(x,3);
>> stem(x,y)
Degrau
u [n] = 0, n < 0
1, n 0
u (t) = 0, t < 0
1, t 0
Page 75 of 132
Apostila de Matlab 8.1
Command Window:
>> n = -2:7;
>> y = degrau(n,3);
>> stem(n,y)
Exerccio 21 - Determine:
>> n = -20:20;
>> y = degrau(n,-10)-2*degrau(n,-5)+degrau(n,6);
>> stem(n,y)
Page 76 of 132
Apostila de Matlab 8.1
b. y[n] = - u[n-3]
>> n = -20:20;
>> y = ((1/2).^(n)).*degrau(n,3);
>> stem(n,y)
>> n = -20:20;
>> y = cos(0.5*pi*n).*degrau(n,4);
>> stem(n,y)
Page 77 of 132
Apostila de Matlab 8.1
d. y[n] = e2sen(n)
>> n = -20:20;
>> y = exp(2*(sin(n)));
>> stem(n,y)
e. y[n] = sen
>> x = -20:1:20;
>> y = sinc(x/2);
>> stem(x,y)
Page 78 of 132
Apostila de Matlab 8.1
bom salientar que nos exemplos anteriores foram dados exemplos de programas no qual se obtm
as funes impulso e degrau. Entretanto, o MATLAB tambm possui funes que possibilitam isso de
forma mais rpida, que so as funes dirac e a heaviside, conforme veremos a seguir:
dirac
Definio: Obtm a funo delta de dirac, ou seja, a funo impulso no intervalo determinado por x.
Sintaxe:
dirac(x)
>> x = -10:10;
>> y = dirac(x-5); %Impulso no instante 5
>> stem(x,y)
heaviside
Sintaxe:
heaviside(x)
Page 79 of 132
Apostila de Matlab 8.1
>> x = -10:10;
>> y = heaviside(x-5); %Degrau no instante 5
>> stem(x,y)
Exemplo 9 - Sabe-se que a funo impulso a derivada da funo degrau. Determina este fato utilizando
o MATLAB.
>> syms x
>> diff(heaviside(x),x)
%ans =
%dirac(x)
13.3. Convoluo
A convoluo uma ferramenta matemtica que expressa a sada de um sistema de tempo, seja este
discreto ou contnuo, em funo de uma entrada pr-definida e da resposta ao impulso do sistema.
O MATLAB possui uma funo chamada de conv que realiza a convoluo de sinais de durao
finita. Por exemplo, sejam dois vetores x e h representando sinais. O comando y = conv(x, h) gera um
vetor y que denota a convoluo dos sinais x e y.
Page 80 of 132
Apostila de Matlab 8.1
Veja que o nmero de elementos em y dado pela soma do nmero de elementos em x e y menos
um, devido ao processo de convoluo. O vetor ny dado pelo espao de tempo tomado pela convoluo
definido pelo intervalo entre a soma dos primeiros elementos de nx e nh e a soma dos ltimos elementos
de nx e nh, sendo nx o espao tempo definido para o vetor x e nh o espao de tempo definido para o vetor
h.
conv
Sintaxe:
w = conv(u,v)
>> h = [1 2 1];
>> x = [2 3 -2];
>> y = conv(x,h)
%y =
% 2 7 6 -1 -2
>> a = [3 3 0];
>> b = [2 2];
>> y = conv(a,b);
%y =
% 6 12 6 0
Exemplo 11 - Determine a resposta de um sistema com a entrada x[n] = u[n - 2] - u[n - 7] , sabendo que a
resposta desse sistema ao impulso h[n] = u[n] - u[n - 10] .
>> h = ones(1,10);
>> x = ones(1,5);
>> n = 2:15;
>> y = conv(x,h);
>> stem(n,y);
Page 81 of 132
Apostila de Matlab 8.1
Exerccio 23 - Use o MATLAB para determinar a sada do sistema com entrada x[n] = 2{u[n + 2] - u[n -
12]} sabendo que a resposta ao impulso desse sistema h[n] = 0,9n {u[n - 2] - u[n - 13]}.
As Equaes de Diferenas uma forma de expressarmos um sistema na forma recursiva que permita
que a sada do sistema fosse computada a partir do sinal de entrada e das sadas passadas.
Um comando que possvel realizar uma funo similar seria o filter, definida a seguir:
filter
Definio: Expressa a descrio em equao de diferenas de um sistema em uma forma recursiva que
permita que a sada do sistema seja computada a partir do sinal de entrada e das sadas passadas.
Sintaxe:
y = filter(b,a,X)
y = filter(b,a,X,zi)
Veja acima que apareceu o parmetro zi, que determina a condio inicial de y. Este zi uma matriz
com as condies iniciais, sendo os valores passados de y.
Page 82 of 132
Apostila de Matlab 8.1
Exemplo 12 - Um exemplo clssico no uso de filter determinar a seqncia de Fibonacci, definida
como o nmero atual ser igual a soma dos dois nmeros anteriores. Em linguagem matemtica, tem-se
y[n] - y[n - 1] - y[n - 2] = 0 em que y a sada do sistema.
Veja que ele no depende de uma entrada, mas ao usarmos o filter, necessrio usar a entrada apenas
para definir o nmero de elementos da seqncia no qual se deseja obter, assim como um parmetro
indispensvel para o uso da funo filter.
Ser dado como condio inicial a matriz [1 0], correspondente a entrada no desejada y[-1] e y[-2],
indispensvel para obter os outros valores.
O cdigo do programa que pode ser implementado no M-file segue abaixo. Neste caso, se deseja
adquirir 20 valores.
Quando se trabalha com sistemas de equaes de diferenas, no qual precisa determinar a resposta
desse sistema ao impulso, o comando impz se torna bastante til. A sua sintaxe segue abaixo:
impz
Sintaxe:
[h,t] = impz(b,a)
[h,t] = impz(b,a,n)
O comando [h,t] = impz(b,a,n) avalia n valores da resposta ao impulso de um sistema descrito por
uma equao de diferenas. Os coeficientes da equao de diferenas esto contidos nos vetores b e a no
que se refere a filter. O vetor h contm os valores da resposta ao impulso e t contm os ndices de tempo
correspondentes.
A Transformada de Fourier leva uma funo no domnio do tempo para o domnio da freqncia, no
qual podemos analisar as freqncias mais importantes (com maior amplitude) de uma funo. A
transformada inversa de Fourier faz o processo inverso, passa uma funo do domnio da frequncia para
o domnio do tempo.
Page 83 of 132
Apostila de Matlab 8.1
A Transformada de Fourier e sua inversa podem ser calculadas a partir das expresses abaixo,
respectivamente:
Exemplo 13 - Dado o circuito RC da Fig. 47, determine a resposta ao impulso e a corrente no capacitor
iC (t) quando a entrada x(t) igual a e-t.
Resoluo:
Lei dos ns
i = iR + iC
i = iR + C
Em t = 0, i = (t) e iR = 0
Page 84 of 132
Apostila de Matlab 8.1
.(t) = V(0) = V(0+) =
i(t) = h(t) = C =-
-
iC(t) = y(t) = ()h(t-)d = d
.
= d =
Page 85 of 132
Apostila de Matlab 8.1
O MATLAB possui inmeras funes que permitem ao usurio descobrir a funo transferncia de
diferentes tipos de filtros digitais:
A funo de transferncia digital definida por H(z) onde forma geral a funo de transferncia H(z)
a seguinte:
H(z) =
H(z) =
butter
Definio: Determina os coeficientes de um filtro Butterworth. Esse filtro pode ser passa baixa, passa
alta, passa banda, rejeita banda.
Sintaxe:
Page 86 of 132
Apostila de Matlab 8.1
[B,A] = butter(N, Wn, tipo) Determina os coeficientes da funo transferncia dada a freqncia de
corte e o tipo de filtro. Caso nada seja posto em tipo, o MATLAB interpreta filtro passa baixa como
padro.
freqz
Sintaxe:
Exemplo 14 -
%Exemplo de filtros
>> fs=200; %Freqncia de amostragem
>> t=0:1/fs:1; %Tempo de amostragem
>> T=1/fs;
>> x=sin(2*pi*5*t)+sin(2*pi*80*t); %sinal de entrada
>> figure(4)
>> plot(t,x)
>> title('Sinal de Entrada')
>> xlabel('tempo (s)')
>> ylabel('amplitude')
>> [B,A]=butter(2,20/(fs/2)); %Determinar os coeficientes
>> B %Mostrar coeficientes B
>> A %Mostrar coeficientes A
%Plotagem da resposta em freqncia
>> h1 = freqz(B,A,100);
>> figure(1)
>> plot(abs(h1))
>> grid
>> title('Resposta em freqncia')
>> xlabel('freqnca (Hz)')
>> ylabel('amplitude')
% Filtragem
>> figure(2)
>> y = filter(B,A,x);
>> plot(t,y,'k-')
>> title('Sinal de Entrada')
>> xlabel('tempo (s)')
>> ylabel('amplitude')
Page 87 of 132
Apostila de Matlab 8.1
Page 88 of 132
Apostila de Matlab 8.1
Exerccio 26 - Projete um filtro passa-alta de Butterworth de ordem 6, com freqncia de corte de 10 Hz.
Use fs=400 Hz. Sinais a serem filtrados: senides de 1 e 20 Hz. Use as funes butter, filter e freqz.
Page 89 of 132
Apostila de Matlab 8.1
14. CONTROLE
tf
Sintaxe:
ss
Sintaxe:
zpk
Definio: cria funes de transferncia de tempo contnuo na forma de zeros, plos e ganhos
Sintaxe:
>> z = -1;
>> p = -3;
>> k = 2;
>> zpk(z,p,k)
Page 90 of 132
Apostila de Matlab 8.1
tf2ss
Sintaxe:
[A,B,C,D] = tf2ss(num,den)
ss2tf
Sintaxe:
[num,den] = ss2tf(A,B,C,D)
zp2ss
Sintaxe:
[A,B,C,D] = zp2ss(z,p,k)
>> z = -3;
>> p = [-2 1 1];
>> k = 1;
>> [A,B,C,D] = zp2ss(z,p,k);
>> G = ss(A,B,C,D)
ss2zp
Sintaxe:
[z,p,k] = ss2zp(A,B,C,D)
Page 91 of 132
Apostila de Matlab 8.1
>> A = [0, 3, -2; 1, 0, 0; 0, 1, 0];
>> B = [1; 0; 0];
>> C = [0, 1, 3];
>> D = [0];
>> [z,p,k] = ss2zp(A,B,C,D);
>> G = zpk(z,p,k)
tf2zp
Sintaxe:
[z,p,k] = tf2zp(num,den)
zp2tf
Definio: converte os zeros, plos e ganho nos coeficientes de uma funo de transferncia
Sintaxe:
[num,den] = zp2tf(z,p,k)
>> z = -3;
>> p = -5;
>> k = 5;
>> [num,den] = zp2tf(z,p,k)
tfdata
Sintaxe:
[num,den] = tfdata(sys)
>> z = -1;
>> p = -3;
>> k = 2;
>> sys =zpk(z,p,k)
>> [num,den] = tfdata(sys)
zpkdata
Sintaxe:
Page 92 of 132
Apostila de Matlab 8.1
[z,p,k] = zpkdata(sys)
c2d
Definio: converte uma FT em tempo contnuo (s) para tempo discreto (z).
Sintaxe:
d2c
Definio: converte uma FT em tempo discreto (z) para tempo contnuo (s).
Sintaxe:
d2c(sys, metodo) Onde mtodo corresponde ao mtodo de converso de contnuo para discreto.
impulse
Sintaxe:
step(sys)
Page 93 of 132
Apostila de Matlab 8.1
step
Sintaxe:
step(sys)
Page 94 of 132
Apostila de Matlab 8.1
Page 95 of 132
Apostila de Matlab 8.1
series
Sintaxe:
series(sys1,sys2)
parallel
Definio: calcula a funo de transferncia equivalente de duas FTs em paralelo. Equivalente a soma das
duas funes.
Sintaxe:
parallel(sys1,sys2)
feedback
Sintaxe:
feedback(sys1,sys2)
Page 96 of 132
Apostila de Matlab 8.1
lsim
Sintaxe:
lsim(sys,u,t) U representa o vetor com os valores de entrada e t o vetor com os valores de instante de
tempo.
>> t = 0:0.1:5;
>> u = ones(1,length(t));
>> G = tf(1, [0.5 1]);
>> lsim(G,u,t)
Page 97 of 132
Apostila de Matlab 8.1
pzmap
Sintaxe:
pzmap(sys)
Page 98 of 132
Apostila de Matlab 8.1
rlocus
Sintaxe:
rlocus(sys)
Page 99 of 132
Apostila de Matlab 8.1
nyquist
Sintaxe:
nyquist(sys)
>> num = 1;
>> den = [0.5 1.5 1];
>> G = tf(num,den);
>> nyquist(G)
Sintaxe:
bode(sys)
Sintaxe:
sigma(sys)
Definio: plota o diagrama de bode de uma funo de transferncia indicando as margens de ganho e de
fase.
Sintaxe:
marginsys)
stepinfo
Sintaxe:
stepinfo(sys)
>> num = 1;
>> den = [0.5 1.5 1];
>> G = tf(num,den);
>> stepinfo(G)
%ans =
% RiseTime: 2.5901
>> simulink
Uma janela ser aberta, Fig. 62, que a biblioteca de blocos do Simulink:
Para a criao de um novo modelo necessrio abrir uma nova janela de modelo. Para isso basta
abrir o menu File e escolher a opo New Model, Fig. 63.
Uma janela ser ento aberta. Essa a janela de modelos do Simulink. Toda a montagem,
modificao e testes dos sistemas so feitas nessa janela. O MATLAB salva esse arquivo de simulao
com a extenso .mdl e, assim como no M-File, para que o sistema seja executado necessrio que ele
esteja salvo. Como um primeiro exemplo, pode-se mostrar na tela uma onda senoidal. Para montar esse
sistema so necessrios dois dispositivos: primeiro algum dispositivo que seja capaz de mostrar a onda e
tambm a prpria onda.
Para adicionar uma onda senoidal seleciona-se a biblioteca Source na janela de bibliotecas do
Simulink, Fig. 64. Quando selecionamos essa biblioteca, aparece no lado direito um conjunto de sinais
que podem ser usados como entrada do sistema, tais como sinal de Rampa, sinal de Degrau, onda
senoidal, etc. O bloco referente onda senoidal se chama Sine Wave. Para adicionar o bloco janela basta
clicar com o boto direito do mouse e escolher a opo Add to nome_da_janela.
O bloco ser adicionado na janela de modelos aberta. Tendo a forma de onda de entrada, basta ter o
dispositivo capaz de mostrar a onda na tela. Esse dispositivo est presente na biblioteca Sink, o nome do
bloco Scope. Para adicionar esse bloco o procedimento o mesmo. Depois dos blocos serem
adicionados necessrio interlig-los. Para isso basta clicar na seta presente na lateral de um dos blocos,
manter o boto pressionado e levar a linha tracejada at a seta presente no outro bloco. Se a cor da linha
que liga os dois blocos ficar preta e o tracejado se manter contnuo, a operao foi realizada corretamente.
O sistema est pronto, para execut-lo basta clicar no boto Start Simulation, na barra superior. Para
controlar o tempo de simulao, basta digitar o mesmo na janela Simulation stop time: 10.0, Fig. 65.
O sistema foi simulado. Para visualizar a onda, d-se um duplo clique no Scope. Surgir na tela a
forma de onda de Sine Wave. O resultado final pode ser visto na Fig. 66:
Um das modificaes importantes que podem ser feitas a do prprio mtodo de resoluo das
equaes diferencias. O MATLAB oferece algumas opes de Mtodos:
ODE45 - Excelente mtodo de propsito geral de passo simples. baseado nos mtodos de
Dormand-Prince e de Runge-Kutta para Quarta/Quinta ordem. ODE45 o mtodo padro do Simulink.
ODE15S - Sistema de ordem varivel de multi passos para sistemas inflexveis. baseado em
pesquisas recentes que utilizam frmulas numricas de diferena. Se a simulao executar lentamente
utilizando ODE45, tente ODE15S.
ODE23S - Ordem fixa de passo simples para sistemas inflexveis. Devido ao fato de ser um mtodo
de passo simples, em muitas das vezes mais rpido do que ODE15S. Se um sistema parecer inflexvel
uma boa idia tentar ambos os mtodos para este tipo de sistema para se determinar qual dos dois tem
melhor performace.
ODE23t - Implementao do mtodo trapezoidal utilizando uma interpolao livre. Usar quando se
quer soluo sem um amortecimento.
Sistema Massa-Mola
O primeiro sistema fsico a ser modelado ser o sistema massa-mola apresentado na Fig, 69, que
possui um equacionamento simples baseado na Fsica Bsica.
A partir dessas equaes um escopo geral do sistema j pode ser iniciado. Ser utilizado o bloco
Integrator, pertencente biblioteca Continuous. Partindo da acelerao, Fig. 70, teremos:
F = - k.x , fora restauradora exercida pela mola no bloco ao se aplicar uma deformao nesta.
a = = - x, foi achada ento uma relao entre a acelerao do sistema e o deslocamento. Essa
O bloco Gain, se no for modificado, ter o ganho 1. Para modificar o ganho deve-se clicar duas
vezes no bloco. Aparecer na tela a janela de configurao dos parmetros do bloco, onde o ganho pode
ser modificado, Fig. 72:
Como foi colocado um valor literal no ganho, quando a simulao for executada as variveis k e
m devem estar presentes no workspace. Antes de realizar a simulao pode-se definir as variveis no
command window:
>> k=500;
>> m=20;
x= + x0
Quando a condio inicial modificada para um valor maior que zero, estamos modificando o valor
do deslocamento da mola no instante inicial do sistema, assim o que aconteceu foi que aplicamos uma
entrada no sistema. Para modificar a condio inicial da integral da velocidade, necessrio se modificar
os parmetros da integral. O procedimento realizado o mesmo que o do bloco Gain: d-se um duplo-
clique no bloco Integrator, o que far aparecer na tela uma janela onde os parmetros da integral possam
ser modificados. Em Initial condition, pode-se colocar a condio inicial 2, Fig. 73:
Para evidenciar o comportamento do sistema massa-mola clssico, pode ser traado tambm a curva
da energia potencial x energia cintica do bloco. Para isso tem-se que realizar outro equacionamento:
A energia potencial do sistema depender do deslocamento instantneo, assim ser necessria a sada
do sistema, que o prprio x. Como se observa na equao, o primeiro passo ser elevar o
deslocamento ao quadrado. Uma opo para realizar essa operao o bloco Product, presente em Math
Operations. Esse bloco tem como configurao padro, duas entradas e uma sada que resultante da
multiplicao das duas entradas. Assim ligamos a sada do sistema (deslocamento) simultaneamente s
O procedimento para se obter a energia cintica anlogo. Primeiro preciso obter o sinal v2 e
depois preciso dar um ganho de m/2 nesse sinal, resultando assim na energia cintica, Fig. 76. Para
traar os dois sinais em um s grfico, utiliza-se apenas um Scope. Em conjunto utiliza-se tambm o
bloco Mux, presente na biblioteca Signal Routing, Fig. 77:
Atravs do grfico pode-se observar uma caracterstica tpica dos sistemas conservativos, que a
complementaridade das duas energias ao longo do tempo. Pode-se observar que no incio a energia
potencial (em amarelo) mxima, enquanto que a energia cintica (em roxo) nula, devido a ausncia de
movimento. Situao oposta quando o bloco passa pela origem, em que a energia potencial nula e a
cintica mxima.
Amortizao de Financiamento
Um sistema como esse tambm pode ser modelado principal diferena que ele um sistema
discreto, enquanto massa-mola era um sistema contnuo.
Considerando um emprstimo feito por um petiano do curso de Engenharia Eltrica para a compra de
um jatinho, no valor de R$ 5.000.000,00. Considere um regime amortizado segundo o modelo descrito
acima, taxa de juros mensal fixa de 1%. O pagamento mensal realizado pelo petiano de R$ 100.000,00.
Calcule ento a quantia que o petiano dever ao banco ao final de 2 anos.
O primeiro passo para a modelagem do sistema definir a sua sada. Como o petiano deseja saber
quanto ele dever ao banco no final dos dois anos, a soluo desejada o valor numrico de
balano(24), j considerando a unidade temporal como o ms.
O que se conclui a partir desse smbolo que este bloco tem duas entradas e uma sada, que retorna a
soma das entradas. Se for dado um duplo-clique, pode-se perceber na configurao dos parmetros do
bloco o parmetro List of Sign, que conter |++. Estes smbolos definem as configuraes possveis para
o somador. Existem vria configuraes, mas a requerida no problema do petiano a diferena entre os
termos da entrada. Trocando |++ por |-+, o bloco ter um novo aspecto, Fig. 79.
O bloco Sum ser responsvel por retornar o balano equivalente do ms. Como observado na
equao so entradas sero o pagamento mensal e o balano do ms anterior. O pagamento, por ser de
uma quantia fixa, pode ser representado por uma constante. O bloco Constant, presente em Source pode
representar bem o pagamento. Ao se adicionar o bloco, d-se duplo modo a trocar o valor da constante, de
1 para 100000, Fig. 80.
O outro termo do somado ser o balano do incio do ms com os juros, ou seja, ser necessrio o
balano atrasado. Para se obter esse balano necessrio realizar uma operao de atraso no balano
atual. O bloco que define a operao de atraso denominado Unit Delay, est presente na biblioteca
Discrete. Esse bloco atrasa o sinal de entrada em uma unidade. Como o sinal a ser atrasado o prprio
balano, ento a entrada desse bloco tem que ser colocada na sada do somador, Fig. 81.
A outra entrada do somador ser o balano atrasado (sada de Unit Delay) multiplicado pelos juros,
Fig. 82. Como o juro mensal de 1%, ser usado um bloco Gain com ganho de 1,01:
Para uma melhor visualizao dos clculos feitos, ser utilizado um Scope e um bloco chamado
Display, presente na biblioteca Sinks. Esse bloco mostra o valor de uma determinada varivel no instante
em questo. A quantia inicial do financiamento posta no sistema atravs do valor inicial do Unit Delay,
que ser nesse caso de R$ 5.000.000,00. O sistema est ento pronto para ser simulado. Sempre
recomendvel verificar os parmetros de simulao em casos discretos. Primeiro verificar se a opo de
soluo escolhida discrete, para isso, na tela da Fig. 68, clique em Model Configuration Program e
modifique a opo Solver para discrete e o Max step size para 1. E segundo, verificar o tempo de
simulao, presente em Start Time e em Stop Time. Como se quer o valor ao final de dois anos, deve-se
escolher um Stop Time igual a 25 (devido ao atraso). O resultado ser o seguinte, Fig. 84:
O que mostra que ao final dos dois anos, o petiano endividado ter uma dvida de R$ 3.587.840,03
com o banco.
Em computao uma GUI (Graphical User Interface) uma interface grfica que apresenta um
mecanismo mais atraente e mais amigvel ao usurio na utilizao do software. O MATLAB possui uma
ferramenta chamada GUIDE que permite construir interfaces grficas de interao com o utilizador. O
mecanismo auxilia o programador a implementar recursos grficos mais rpida e facilmente. A Fig. 85
mostra um exemplo de GUI.
Para inicializar a ferramenta GUIDE necessrio digitar guide na Command Window do MATLAB,
Fig. 86, posteriormente clicar em Blank GUI (default). A tela inicial mostrada na Fig. 87.
Em conjunto com a tela inicial criado um arquivo .m com o cdigo fonte da GUI criada. Todas as
possveis alteraes no modo de operao sero feitas nesse arquivo. O trabalho grfico ser todo feito
com o auxlio do mecanismo GUIDE.
Push Button
Com essa ferramenta possvel criar um boto que volta ao estado original aps ser ativado. Ao se
clicar no cone Push Button da GUI, aparecer na tela quadriculada uma pequena cruz preta que permite
definir o tamanho do boto retangular. Observe na Fig. 89 (a) como fica a criao de um simples boto.
(a) (b)
Essa ferramenta permite que o usurio selecione uma opo. Observe a criao de um Radio Button,
Fig. 90 (a) e sua interface na Fig. 90 (b).
(a) (b)
Edit Text
Campo que recebe textos inseridos pelo usurio. Observe, na Fig. 91 (a) , a insero de um desses
campos. Observe que antes de executar possvel alterar o texto dentro do quadro branco. Em geral, esse
quadro deixado vazio para que o usurio insira um texto. Aps a execuo, se o quadro tiver sido
deixado em branco, aparecer na interface, Fig. 91 (b), apenas uma pequena tela branca onde o usurio
poder inserir algo.
(a) (b)
Campo que, ao ser clicado, disponibilizada diversas opes criadas pelo programador. A insero de
um Pop-up feita como na Fig. 92 (a) e sua interface est disposta na Fig. 92 (b).
(a) (b)
Toogle Buttons
Semelhante ferramenta Push Button, a Toggle Button tem como funo exibir um boto a ser
ativado. A diferena que o ltimo permanece pressionado depois que o usurio o ativa. Observe a
criao do Toogle Buttons na Fig. 93 (a) e sua interface na Fig. 93 (b).
(a) (b)
Campo que permite a insero de grfico na GUI. Observe a criao do Axes na Fig. 94 (a) e sua
interface na Fig. 94 (b).
(a) (b)
Slider
Campo que permite a insero de uma barra de rolagem. Observe a criao do Slider na Fig. 95 (a) e
sua interface na Fig. 95 (b).
(a) (b)
Boto que permite dentre vrias opes escolher quantas o usurio desejar. Observe a criao do
Check Box na Fig. 96 (a) e sua interface na Fig. 96 (b).
(a) (b)
Static Text
Atravs dessa ferramenta, possvel fazer aparecer um texto que no pode ser modificado pelo
usurio. Observe a criao, Fig. 97 (a), e execuo, Fig. 97 (b), de uma ferramenta Static Text.
(a) (b)
Ferramenta que exibe uma lista de itens que o usurio pode selecionar. Observe a criao do Listbox
na Fig. 98 (a) e sua interface na Fig. 98 (b).
(a) (b)
Table
Campo onde so inseridas tabelas na GUI. Observe a criao do Table na Fig. 99 (a) e sua interface
na Fig. 99 (b).
(a) (b)
(a) (b)
Button Group
Campo onde so agrupados botes diversos. Observe que a nica diferena dessa ferramenta para um
Panel que aqui apenas Toggle Buttons e Radio Buttons so organizadas. Observe a criao do Button
Group na Fig. 101 (a) e sua interface na Fig. 101 (b).
(a) (b)
Uma vez criados os campos o usurio poder suas configurar suas propriedades. Para faz-lo bastar
dar um duplo clique em qualquer uma das ferramentas anteriormente apresentadas. A Fig. 102 mostra um
exemplo:
O GUIDE cria uma funo no arquivo .m da aplicao para cada novo objeto adicionado na GUI.
Dentre essas funes a mais importante a callback. O callback um funo que escrita e associada a
um especfico componente da GUI e que controla seu comportamento e suas diversas funes no
programa. Dentro da rotina callback utilizaremos ainda duas importantes funes:
get
Definio: Recebe dados inseridos pelo usurio em determinado campo da GUI. Tem vrias utilizaes
sendo a mais utilizada da forma:
Sintaxe:
Aps o boto com tag soma ser clicado a funo acima recebe as strings dos campos cujas tag so
numero1 e numero2. feita a converso de string para nmero e ambos so somados. Por fim, o
resultado mostrado na tela, Fig. 103.
set
Definio: Envia dados que so editveis para determinado campo da GUI. a funo complementar ao
get e tambm tem vrias utilizaes sendo a mais utilizada da forma:
Sintaxe:
get(handles.TagDoCampo.TipoDeVarivelUtizada,InformaoEnviada)
Aps o boto com tag boto ser clicado a funo acima recebe/ envia uma mensagem do tipo
string para um objeto com tag texto. Caso o objeto seja um Editable Text a tela da GUI ser similar a
da Fig. 104.
4. Manipule o m-file.
[ 1 ] CARNAHAN, Brice, LUTHER, H. A. & WILKES, James O. Applied numerical methods. John
Wiley & Sons, Inc. Nova Iorque 1969.
[ 2 ] GES, Hilder & TONAR, Ubaldo. Matemtica para Concursos. 6 Edio. ABC Editora. Fortaleza
CE. 2001.
[ 3 ] HAYKIN, Simon & VEEN, Barry Van. Sinais e Sistemas. Editora Bookman. Porto Alegre RS.
2001
[ 4 ] HAYT, William H. Jr. & BUCK, Jonh A. Eletromagnetismo. 6 Edio. Editora LTC. Rio de
Janeiro RJ. 2001.
[ 5 ] LEITHOLD, Louis. O Clculo com Geometria Analtica. 3 Edio. Volume I. Editora Habra. So
Paulo SP. 1994.
[ 6 ] NILSSON, James W & RIEDEL, Susan A. Circuitos Eltricos. 6 Edio. Editora LTC. Rio de
Janeiro RJ. 2003.