Você está na página 1de 84

Apostila de MATLAB 7.

UNIVERSIDADE FEDERAL DO CEAR


DEPARTAMENTO DE ENGENHARIA ELTRICA
PROGRAMA DE EDUCAO TUTORIAL

Apostila de

Decio Haramura Junior


Guilherme Martins Gomes Nascimento
Lus Paulo Carvalho dos Santos
Luiz Fernando Almeida Fontenele
Pedro Andr Martins Bezerra

Fortaleza CE
Abril / 2008
Pgina 1 de 84

Apostila de MATLAB 7.3


SUMRIO

1. APRESENTAO....................................................................................................................4
1.1.

UTILIZANDO O HELP ..................................................................................................5

2. MATRIZES ...............................................................................................................................7
2.1.

DECLARAO .............................................................................................................7

2.2.

SOMA ........................................................................................................................8

2.3.

MULTIPLICAO .........................................................................................................8

2.4.

MATRIZES PR-DEFINIDAS ...........................................................................................9

2.5.

PROPRIEDADES DE MATRIZES....................................................................................11

2.6.

TRABALHANDO COM MATRIZES ..................................................................................13

3. VETORES...............................................................................................................................18
3.1.

DECLARAO ...........................................................................................................18

3.2.

OPERAES ............................................................................................................19

3.3.

SISTEMAS DE COORDENADAS ...................................................................................22

4. FUNES MATEMTICAS ..................................................................................................24


4.1.

FUNES ELEMENTARES ..........................................................................................24

4.2.

PROPRIEDADES FUNDAMENTAIS ................................................................................24

4.3.

NMEROS COMPLEXOS ............................................................................................26

4.4.

FUNES TRIGONOMTRICAS ...................................................................................27

4.5.

APROXIMAO INTEIRA .............................................................................................29

5. GRFICOS .............................................................................................................................30
5.1.

GRFICOS BIDIMENSIONAIS.......................................................................................30

5.2.

GRFICOS TRIDIMENSIONAIS.....................................................................................33

5.3.

CONFIGURAO .......................................................................................................36

6. MATEMTICA SIMBLICA ..................................................................................................46


7. OPERAES MATEMTICAS BSICAS............................................................................47
7.1.

EXPRESSES NUMRICAS ........................................................................................48

7.2.

POLINMIOS.............................................................................................................49

7.3.

SOLUCIONANDO EQUAES OU SISTEMAS.................................................................52

8. CLCULO DIFERENCIAL .....................................................................................................54


8.1.

LIMITES ....................................................................................................................54

8.2.

DIFERENCIAO .......................................................................................................54

8.3.

INTEGRAO ............................................................................................................55

8.4.

INTEGRAIS DEFINIDAS PELA REGRA TRAPEZOIDAL ......................................................56

8.5.

INTEGRAIS DEFINIDAS PELA REGRA DE SIMPSON ........................................................57

8.6.

INTEGRAO DUPLA .................................................................................................58

8.7.

INTEGRAO TRIPLA.................................................................................................58

8.8.

OUTRAS FUNES ....................................................................................................58

Pgina 2 de 84

Apostila de MATLAB 7.3


9. SRIES NUMRICAS............................................................................................................60
9.1.

SOMATRIO .............................................................................................................60

9.2.

SRIE DE TAYLOR.....................................................................................................60

10. M-FILE ....................................................................................................................................61


10.1.

DEFINIO ...........................................................................................................61

10.2.

ORGANIZAO .....................................................................................................62

11. PROGRAMANDO EM MATLAB............................................................................................63


11.1.

VERIFICAO DE ERROS ......................................................................................67

12. ANLISE DE SINAIS .............................................................................................................68


12.1.

TRANSFORMAO DE VARIVEL INDEPENDENTE ....................................................68

12.2.

FUNES PR-DEFINIDAS.....................................................................................70

12.3.

CONVOLUO ......................................................................................................76

12.4.

EQUAES DE DIFERENAS .................................................................................77

12.5.

FFT (TRANSFORMADA RPIDA DE FOURIER) .........................................................79

12.6.

FILTROS DIGITAIS.................................................................................................82

13. REFERNCIAS BIBLIOGRFICAS......................................................................................84

Pgina 3 de 84

Apostila de MATLAB 7.3


1. APRESENTAO

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.

No preciso declarar o tipo das variveis utilizadas no programa, mas


o usurio pode escolher qual o formato que vai ser utilizado. Usam-se os
seguintes comandos:

Comando MATLAB

Varivel

Descrio

Format long

3.141592653589793

Com 16 dgitos

Format short

3.1416

Com 5 dgitos

Format short e

3.1416e+000

Com 5 dgitos notao


cientfica

Format long e

3.141592653589793e+000

Com

16

dgitos

em

notao cientfica
Format +

Retorna + para valores


positivos

para

valores negativos
Format rat

355/113

Aproximao racional

Format hex

400921fb54442d18

Formato hexadecimal

Pgina 4 de 84

Apostila de MATLAB 7.3


1.1. Utilizando o HELP
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, ilustrado abaixo:

Uma outra forma pela tecla de atalho F1. Uma terceira forma pelo
boto START, posicionado logo abaixo do COMMAND HISTORY, de acordo
com a figura abaixo.

Dando continuidade, quando 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:

Pgina 5 de 84

Apostila de MATLAB 7.3


>> help dirac
DIRAC Delta function.
DIRAC(X) is zero for all X, except X == 0 where it is
infinite.
DIRAC(X) is not a function in the strict sense, but rather
a
distribution with int(dirac(x-a)*f(x),-inf,inf) = f(a) and
diff(heaviside(x),x) = dirac(x).
See also heaviside.
Overloaded functions or methods (ones with the same name in
other directories)
help sym/dirac.m
Reference page in Help browser
doc dirac

Veja que as informaes sobre a funo dirac apareceram no prprio


COMMAND WINDOW. Caso queira consultar na pgina do HELP, basta utilizar
doc e em seguida o nome da funo, pois ela encaminhar imediatamente a
pgina no HELP que possui a funo desejada. Por exemplo:

>> doc dirac

Assim, aps efetuado este comando, ir aparecer a janela do HELP


com o seguinte:

Pgina 6 de 84

Apostila de MATLAB 7.3


2. MATRIZES

2.1. Declarao
A declarao de matrizes feita da seguinte maneira:

>> a = [1:10]

%cria o vetor linha [1 2 3 4 5 6 7 8 9

>> b = [0:0.5:3]

%cria o vetor [0 0.5 1 1.5 2 2.5 3]

10]

>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]


A =

16

13

10

11

12

15

14

>>A(1,2);

%Elemento de linha 1 e coluna 2

>>A(:,3);

%Elementos da coluna 3

>>A(1,:);

%Elementos da linha 1

O MATLAB tambm aceita o concatenamento de matrizes, por


exemplo:

>> a=[ 4 1 ; 3 4];


>> b= [ 2

3; 4 5];

>> c=[a b];

c =
4

Obs.: bom lembrar que o MATLAB tem como primeiro ndice do vetor
o nmero 1, diferente da linguagem C que usa o primeiro ndice como 0.

Pgina 7 de 84

Apostila de MATLAB 7.3


2.2. Soma
A soma de todos os elementos de uma matriz com um nmero feita
da seguinte maneira:

>> c =
4

>> c+1
ans =

A soma de matrizes feita da maneira tradicional:

>> d=[ 1 2 7 8 ; 4 7 5 8] ;
>> e=[ 5 -4 7 0; 3 -1 6 -4];
>> d+e
ans =
6

-2

14

11

2.3. Multiplicao
Usa-se o sinal da 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

68

12

-6

68

15

-26

Obs.: Se quisermos realizar outra operao matemtica (exceto a


soma e a subtrao) entre os elementos com mesmo ndice das matrizes
devemos colocar um ponto antes do operador. Observe os exemplos abaixo:

Pgina 8 de 84

Apostila de MATLAB 7.3


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

-10

15

72

-10

>> b./a
ans =
4.0000

0.5000

-2.5000

0.1250

0.6000

0.8889

-0.4000

0.2500

>> a.^2
ans =
1

16

49

64

25

81

25

16

2.4. Matrizes pr-definidas


ones
Def: Esta funo gera uma matriz cujos valores so unitrios
Sintaxe:
ones(n) Gera uma matriz quadrada cujos termos so unitrios
ones(m,n) Gera ma matriz m x n cujos termos so unitrios
>>ones(2)

ans =
1

zeros
Def: Esta funo gera uma matriz cujos valores so nulos
Sintaxe:
zeros(n) Gera uma matriz quadrada cujos termos so nulos
zeros(m,n) Gera ma matriz m x n cujos termos so nulos
Pgina 9 de 84

Apostila de MATLAB 7.3


>>zeros(2)

ans =
0

eye
Def: Gera uma matriz identidade
Sintaxe:
eye(n) Gera uma matriz identidade n x n
eye(m,n) gera uma matriz de ordem m x n cujos termos que
possuem i=j so unitrios .

>>eye(2)

ans =

vander
Def: Calcula a matriz de Vandermonde a partir de um vetor dado
Sintaxe:
Vander(A) Calcula a matriz de Vandermonde a partir de A

A=[1 2 3 4];
>> vander(A)

ans =
1

27

64

16

Pgina 10 de 84

Apostila de MATLAB 7.3


rand
Def: Cria uma matriz com valores aleatrios
Sintaxe:
rand(m) Cria uma matriz m x m com valores aleatrios entre 0 e 1.
rand(m,n) Cria uma matriz m x n com valores aleatrios entre 0 e 1.

rand(2)

ans =
0.9501

0.6068

0.2311

0.4860

2.5. Propriedades de matrizes


(apstrofo)
Def: Calcula a matriz transposta
Sintaxe:
A Gera a matriz transposta de A

>>A=[1 1; 2 3]

>>A =
1

>> A'

ans =

det
Def: Calcula o determinante de uma matriz
Sintaxe:
det(A) Calcula o determinante da matriz A

Pgina 11 de 84

Apostila de MATLAB 7.3


>>det(A)

ans =
1

trace
Def: Retorna um vetor com a soma dos elementos da diagonal
principal de uma matriz
Sintaxe:
trace(A) Retorna a soma dos elementos da diagonal principal da
matriz A

A =
1

>> trace(A)

ans =
2

inv
Def: Determina a matriz inversa dada
Sintaxe:
inv(A) Retorna a soma dos elementos da diagonal principal da matriz
A

>> A = [5 8; 4 9]

A=

>> inv(A)

Pgina 12 de 84

Apostila de MATLAB 7.3

ans =

0.6923 -0.6154
-0.3077

0.3846

eig
Def: Calcula os autovalores e autovetores de uma matriz
Sintaxe:
eig(A) Retorna os autovalores de uma matriz quadrada
[a, b] = eig(A) Retorna em a uma matriz com os autovetores e em b
uma matriz com os autovalores

>> A=[1 -1; 4 1]

A =
1

-1

>> [a,b]=eig(A)

a =
0 - 0.4472i
-0.8944

0 + 0.4472i
-0.8944

b =
1.0000 + 2.0000i
0

0
1.0000 - 2.0000i

2.6. Trabalhando com matrizes


size
Def: Retorna as dimenses de uma matriz
Sintaxe:

Pgina 13 de 84

Apostila de MATLAB 7.3


[m,n] = size(A) Retorna em m o nmero de linhas e em n o nmero
de colunas

>> A=[1 1; 2 3];


>> [m,n]=size(A)

m =
2

n =
2

find
Def: Procura os elementos em uma matriz de tal modo a respeitar a
lgica fornecida, retornando os ndices que descrevem estes elementos.
Sintaxe:
ind = find(X) Retorna os ndices dos elementos no-nulos ma matriz
X.
[row,col] = find(X, ...) Retorna em row uma matriz coluna com os
ndices das linhas dos elementos da matriz e em col a matriz coluna contendo
os ndices correspondentes as 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 e em col a matriz coluna contendo
os ndices que descrevem as colunas dos elementos da matriz X e em v a
matriz contendo os elementos de X.

A=[1 1; 0 3];
>> find(A)

ans =
1
3
4
>> X = [3 2 0; -5 0 7; 0 0 1];
>> [r,c,v] = find(X>2);
>> [r c]

Pgina 14 de 84

Apostila de MATLAB 7.3


ans =

Veja no ultimo caso acima que r e c retornam em os ndices das linhas


e das colunas correspondentes aos elementos que respeitam a expresso
oferecida.
Obviamente, os elementos a11 e a23 so os nicos maiores que 2.
sort
Def: Retorna o vetor dado ou elementos de uma matriz em ordem
crescente
Sintaxe:
sort(A) Retorna os elementos das colunas da matriz A em ordem
crescente

>> sort(A)

ans =
1

fliplr
Def: Espelha as colunas de uma matriz
Sintaxe:
fliplr(A) Espelha as colunas da matriz A

>> A=[1 2;3 4]

A =
1

>> fliplr(A)

ans =

Pgina 15 de 84

Apostila de MATLAB 7.3

flipud
Def: Espelha as linhas de uma matriz
Sintaxe:
flipud(A) Espelha as linhas da matriz A

>> A=[1 2;3 4]

A =
1

>> flipud(A)

ans =
3

Exerccio 1- Gere uma seqncia de nmeros mltiplos de 3 compreendidos


entre 100 e 132, dispostos num vetor por ordem decrescente.
Exerccio 2- Gere uma seqncia a comear em e a acabar em com
um passo de /15.

Exemplo 1- Dado o circuito, calcule as tenses nos ns 1 e 2:


NR3

R1
1
V

N
V

V1
10Vdc

R2
5

R4
10

I1
2Adc

Pgina 16 de 84

Apostila de MATLAB 7.3

1
v
R
i = G v
i=

1 1 1
10 + +
1 = 1 5 2
-1
2
2

-1
-1
G i = G G v

-1
2 v1

1 1 v2
+
2 10

v = G -1 i

>> i=[10/1 ; 2]

i =
10
2

>> G=[1/1+1/5+1/2 -1/2 ; -1/2 1/2+1/10 ]

G =
1.7000

-0.5000

-0.5000

0.6000

>> v=inv(G)*i

v =
9.0909
10.9091

11.0V

10.5V

10.0V

9.5V

9.0V
0s
V(R1:2)

0.1s
0.2s
V(R3:1)

0.3s

0.4s

0.5s

0.6s

0.7s

0.8s

0.9s

1.0s

Time

Pgina 17 de 84

Apostila de MATLAB 7.3


3. VETORES

3.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]

R =
1

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
Def: Retorna o nmero de elementos que compem o vetor.
Sintaxe:
length (A) Calcula o numero de termos do vetor A

>>A=[8 9 5 7];
>> length(A)

ans =
4

Pgina 18 de 84

Apostila de MATLAB 7.3


norm
Def: Retorna o tamanho, ou seja, o mdulo do vetor.
Sintaxe:
norm(A) Calcula o mdulo do vetor A

>> x = [0 5 1 7];

>> sqrt(0+25+1+49)

% Forma Euclidiana

ans =
8.6603

>> norm(x) % Usando norm

ans =
8.6603

Exerccio 3- Tome um nmero inteiro aleatoriamente, entre 0 a 100, e crie


um vetor com o nmero de elementos igual ao nmero escolhido. Determine o
seu mdulo e a sua dimenso.

3.2. Operaes
Quando se deseja calcular o produto vetorial, ou cruzado, de vetores,
utiliza-se a funo cross, apresentada a seguir:
cross
Def: Calcula o produto vetorial entre A e B.
Sintaxe:
C = cross(A,B)
C = cross(A,B,dim)

De modo anlogo, define-se a funo dot como a responsvel pelo


produto escalar de dois vetores dados, conforme definio a seguir.

Pgina 19 de 84

Apostila de MATLAB 7.3


dot
Def: Determina o produto escalar entre dois vetores.
Sintaxe:
C = dot(A,B)
C = dot(A,B,dim)

>> a = [1 7 3];
>> b = [5 8 6];
>> c = cross(a,b)
>> d = dot(a,b)

Alm disso, qualquer outra operao possvel, como soma e


subtrao, mas se deve atentar-se o 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
Def: Retorna os valores mnimos de um vetor ou o das colunas de uma
matriz.
Sintaxe:
min(A) Retorna em um vetor linha os maiores valores de cada linha
da matriz A
min(A,B) Retorna uma matriz com os menores valores de cada
posio correspondente de ambas as matrizes
[a,b]=min(A) Retorna em a os menores valores de cada coluna e
em b a posio dos mesmos nas suas respectivas colunas

>> A=[1 4; 2 4];


>> [a,b]=min(A)

a =
1

b =

Pgina 20 de 84

Apostila de MATLAB 7.3


max
Def: Retorna os valores mximos de um vetor ou o das colunas de
uma matriz.
Sintaxe:
max(A) Retorna em um vetor linha os maiores valores de cada linha
da matriz A
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

>> [a,b]=max(A)

a =

b =

sum
Def: Calcula o somatrio dos elementos de um vetor ou o somatrio
das colunas de uma matriz.
Sintaxe:
sum(x) retorna a(o) soma/produto dos elementos de um vetor ou
a(o) soma/produto das colunas de uma matriz

>> sum(A)

prod
Def: Calcula o produtrio dos elementos de um vetor ou o produtrio
das colunas de uma matriz.

Pgina 21 de 84

Apostila de MATLAB 7.3


Sintaxe:
prod(x) retorna a(o) soma/produto dos elementos de um vetor ou
a(o) soma/produto das colunas de uma matriz

>> prod(A)

Exerccio 4- Os trs vrtices de um tringulo esto em A (6,-1,2), B (-2,3,-4)


e

C (-3,1,5). Determine o vetor unitrio perpendicular ao plano no qual o

tringulo est localizado. Tambm determine o ngulo BAC no vrtice A.


Exerccio 5- Os trs vrtices de um tringulo esto em A (6,-1,2), B (-2,3,-4)
e

C (-3,1,5). Determine o vetor unitrio perpendicular ao plano no qual o

tringulo est localizado. Tambm determine o ngulo BAC no vrtice A.

3.3. Sistemas de Coordenadas


Existem funes no MATLAB que possibilitam as transformadas de
coordenadas, conforme listadas a seguir:
cart2pol
Def: Converte do cartesiano para o polar/cilndrico.
Sintaxe:
[theta,rho,z] = cart2pol(x,y,z)
[theta,rho] = cart2pol(x,y)
pol2cart
Def: Converte do polar/cilndrico para o cartesiano.
Sintaxe:
[x,y] = pol2cart(theta,rho)
[x,y,z] = pol2cart(theta,rho,z)

Pgina 22 de 84

Apostila de MATLAB 7.3


cart2sph
Def: Transforma do cartesiano para o esfrico.
Sintaxe:
[theta,phi,r] = cart2sph(x,y,z)
sph2cart
Def: Transforma do esfrico para o cartesiano.
Sintaxe:
[x,y,z] = sph2cart(theta,phi,r)

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 1nC em


(1,0,0) e uma outra carga de -1nC em (-1,0,0). Determine as linhas
equipotenciais geradas a partir dessa configurao.

>> [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

Pgina 23 de 84

Apostila de MATLAB 7.3


4. FUNES MATEMTICAS

4.1. Funes Elementares


O MATLAB contm um conjunto de funes que executam algumas
funes matemticas elementares, como mdulo e raiz quadrada. A seguir
disponibilizaremos uma lista de funes com uma breve descrio:

Funo
log(X)

Descrio
Determina o logaritmo natural de X

log10(X)

Determina o logaritmo na base 10 de X

log2(X)

Calcula o logaritmo de X na base 2

exp(X)

Determina a expresso de eX

sqrt(X)

Retorna a raiz quadrada de X

4.2. Propriedades Fundamentais


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
Def: Determina o mximo divisor comum entre dois parmetros.
Sintaxe:
G = gcd(A,B)

lcm
Def: Determina o mnimo mltiplo comum entre dois parmetros.
Sintaxe:
G = lcm(A,B)

Pgina 24 de 84

Apostila de MATLAB 7.3

factorial
Def: Retorna o fatorial de um argumento.
Sintaxe:
factorial(N)

nchoosek
Def: Desenvolve a fatorao binomial, isto , retorna o nmero de

combinaes de n tomada k a k.
Sintaxe:
C = nchoosek(n,k)

primes
Def: Devolve uma lista com n nmeros primos.
Sintaxe:
p = primes(n)

mod
Def: Calcula o quociente da diviso de dois argumentos.
Sintaxe:
M = mod(X,Y)

rem
Def: Determina o resto da diviso de dois argumentos.
Sintaxe:
R = rem(X,Y)

perms
Def: Desenvolve todas as permutaes possveis dos argumentos

dados.
Sintaxe:
P = perms(v) v pode ser uma matriz com os nmeros nos quais
deseja permut-los.

Pgina 25 de 84

Apostila de MATLAB 7.3


4.3. Nmeros Complexos
O MATLAB proporciona um conjunto de funes que nos auxiliam no
manuseio de nmeros complexos. Inicialmente, para definir um nmero
complexo utilizam-se os operadores i e j (voltado mais para a engenharia). Por
exemplo, para definirmos a=5+8i , fazemos:

>> X=2+3i
X =
2.0000 + 3.0000i
>> Y=2+3j
Y =
2.0000 + 3.0000i

H uma 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
Def: Retorna um nmero complexo a partir da sua parte real e da sua
parte imaginria.
Sintaxe:
c = complex(a,b)

Exerccio 6- Determina o nmero complexo 5+9i utilizando a funo complex,


Determina tambm a soma de 8+9i com 8e8i.

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 a seguir sero denotadas algumas funes que
possibilitam isso.

Pgina 26 de 84

Apostila de MATLAB 7.3


Funo

Descrio

abs(X)

Retorna o mdulo do nmero complexo X

angle(X)

Retorna a fase do complexo 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

Exerccio 7- Determina todos os parmetros intrnsecos ao nmero complexo


9e(5+3i ) .

4.4. Funes Trigonomtricas


Quando trabalhamos com trigonometria, o MATLAB dispe de funes
que operam neste ramo matemtico. O quadro abaixo resume bem algumas
funes que possuem este fim.

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 deseja entrar com um argumento em grau,
basta utilizar o sufixo d em cada funo. Por exemplo, calculemos o seno de
30 em graus:

>> sind(30)
ans =
0.5000

Pgina 27 de 84

Apostila de MATLAB 7.3


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

Caso queiramos saber em grau, faramos:

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

De fato, o resultado coerente, pois:

>> (exp(3)+exp(-3))/2
ans =
10.0677

A tabela abaixo resume bem o uso de sufixo e prefixo nas funes


trigonomtricas:

Prefixo

Sufixo

Descrio

Exemplo

Determina o arco de um valor

atan

Determina com um argumento em graus

cosd

Determina a funo hiperblica

sinh

Pgina 28 de 84

Apostila de MATLAB 7.3


4.5. Aproximao Inteira
Na biblioteca de funes do MATLAB, h uma variedade que trabalha
no intuito do arredondamento de nmeros. Indubitavelmente, a mais importante
a round, que arredonda para o inteiro mais prximo. Obviamente, esta
importncia depende do ambiente prtico no qual a funo est sendo
submetida.
Algumas dessas funes, alm da round, esto definidas a seguir:
ceil
Def: Arredonda os elementos de A para o inteiro mais prximo e maior
que os elementos de A.
Sintaxe:
B = ceil(A)
floor
Def: Arredonda os elementos de A para o inteiro mais prximo e menor
que os elementos de A.
Sintaxe:
B = floor(A)
fix
Def: Arredonda os elementos de A para o inteiro mais prximo de tal
modo que esteja em direo ao zero.
Sintaxe:
B = fix(A)
round
Def: Arredonda os elementos de A para o inteiro mais prximo desses
elementos. Tambm vlido para nmeros complexos.
Sintaxe:
Y = round(X)

Pgina 29 de 84

Apostila de MATLAB 7.3


5. GRFICOS

5.1. Grficos Bidimensionais


ezplot
Def: Plota a expresso simblica f ( x) no domnio padro
-2p < x < 2p .

Sintaxe:
ezplot(f) Plota a expresso f ( x) .
>> ezplot('sin(x)')
sin(x)

0.5

-0.5

-1

-6

-4

-2

0
x

plot
Def: 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.
Sintaxe:
plot(X) Se X for real, plota as colunas de X pelos ndices de cada
elemento.
plot(X) Se X for complexo, plota a parte real pela parte imaginria de
cada elemento. equivalente a plot(real(X),imag(X)).
plot(X,Y) Plota os elementos de X pelos de Y.
>> t = 0:pi/50:10*pi;

Pgina 30 de 84

Apostila de MATLAB 7.3


>> plot(t,sin(t))

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1

10

15

20

25

30

35

line
Def: Cria uma linha no grfico atual.
Sintaxe:
line(X,Y) Cria uma linha definida nos vetores X e Y no grfico atual.
line(X,Y,Z) Cria uma linha no espao tridimensional.

>> x=-2:0.01:5;
>> line(x,exp(x))

150

100

50

0
-2

-1

Pgina 31 de 84

Apostila de MATLAB 7.3


stem
Def: Plota uma seqncia de dados discretos.
Sintaxe:
stem(Y) Plota a seqncia de dados do vetor Y em um domnio
discreto ao longo do eixo-x
stem(X,Y) Plota X em funo de Y em um domnio discreto. X e Y
devem ser vetores ou matrizes de mesmo tamanho.

>> x=-4:4;
>> y=exp(x);
>> stem(y)

60

50

40

30

20

10

compass
Def: Plota vetores de componentes cartesianas a partir da origem de
um grfico polar.
Sintaxe:
compass(U,V) Plota o vetor de componentes cartesianas U e V
partindo da origem do grfico polar.

>> compass(2,3)

Pgina 32 de 84

Apostila de MATLAB 7.3

90
4
120

60
3

150

30

180

210

330

240

300
270

5.2. Grficos Tridimensionais


ezplot3
Def: Plota uma curva espacial de trs equaes paramtricas no
domnio padro 0 < t < 2p .
Sintaxe:
ezplot3(x,y,z) Plota a curva paramtrica x = x(t ) , y = y (t ) e z = z (t ) .
>> ezplot3('cos(t)','sin(t)','t')
x = cos(t), y = sin(t), z = t

7
6
5

4
3
2
1
0
1
0.5
0
-0.5
-1
y

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

Pgina 33 de 84

Apostila de MATLAB 7.3


plot3
Def: Plota tridimensionalmente um grfico.
Sintaxe:
plot(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.

>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)

35
30
25
20
15
10
5
0
1
0.5
0
-0.5
-1

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

ezsurf
Def: Plota a superfcie de um grfico de uma funo de duas variveis
no domnio padro -2p < x < 2p e -2p < y < 2p .
Sintaxe:
ezsurf(X,Y,Z) Plota a superfcie paramtrica x = x ( s, t ) , y = y ( s, t ) e

z = z ( s, t ) no domnio -2p < s < 2p e -2p < t < 2p .


>> ezsurf('1/sqrt(x^2 + y^2)')

Pgina 34 de 84

Apostila de MATLAB 7.3


1/sqrt(x 2 + y 2)

7
6
5
4
3
2
1
0
6
4

4
0

2
0

-2
-2

-4

-4
-6

-6

meshgrid
Def: Prepara a criao de uma superfcie de um grfico tridimensional.
Sintaxe:
[X,Y] = meshgrid(x,y) Transforma o domnio especificado pelos
vetores x e y em matrizes de vetores X e Y, as quais podem ser usadas para
preparar a plotagem de superfcie de um grfico tridimensional de uma funo
de duas variveis.

>> [X,Y] = meshgrid(-2:.2:2, -2:.2:2);


>> Z = X.* exp(-X.^2 - Y.^2);

surf
Def: Plota a superfcie de um grfico de uma funo de duas variveis
cujo domnio determinado pelo usurio.
Sintaxe:
surf(X,Y,Z) Plota a superfcie paramtrica de z em funo de x e y.

>> surf(X,Y,Z)

Pgina 35 de 84

Apostila de MATLAB 7.3

0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
-0.3
-0.4
-0.5
2
1.5
1

2
1.5

0.5

0.5

-0.5

0
-0.5

-1

-1

-1.5
-2

-1.5
-2

5.3. Configurao
Title
Def: D um ttulo ao grfico
Sintaxe:
Title(string) D o ttulo string ao grfico atual.

>> compass(2,3)
>> title('Grfico Polar')

Grfico Polar
90
4
120

60
3

150

30

180

210

330

240

300
270

Pgina 36 de 84

Apostila de MATLAB 7.3


axis
Def: Determina os limites dos eixos coordenados X, Y e Z.
Sintaxe:
Axis([xmin xmax ymin ymax zmin zmax]) Define o eixo X de xmin a
xmax, o eixo Y de ymin a ymax e o eixo Z de zmin a zmax.

>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> axis([-1.5 1.5 -1.5 1.5 -1 34])

30
25
20
15
10
5
0
1.5
1

1.5
0.5

1
0

0.5
0

-0.5
-0.5

-1

-1
-1.5

-1.5

grid
Def: Adiciona ou remove as linhas de grade em um grfico.
Sintaxe:
grid on Adiciona as linhas de grade em um grfico.
grid off Remove as linhas de grade em um grfico.

>> t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
>> grid on

Pgina 37 de 84

Apostila de MATLAB 7.3

35
30
25
20
15
10
5
0
1
0.5
0
-0.5
-1

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

Hold
Def: Determina se objetos so adicionados ao grfico ou se substituem
o existente.
Sintaxe:
Hold on Adiciona objetos no mesmo grfico
Hold off Substitui os objetos existentes em um grfico pelos atuais.

>> x=-6:0.01:6;
>> y=sin(x);
>> plot(x,y)
>> hold on
>> t=-6:0.01:2;
>> k=exp(t);
>> plot(t,k)

Pgina 38 de 84

Apostila de MATLAB 7.3

-1
-6

-4

-2

Legend
Def: Adiciona uma legenda ao grfico.
Sintaxe:
Legend(string1,string2) Adiciona as legendas string1 e string2 ao
grfico atual.

>> 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)')

Pgina 39 de 84

Apostila de MATLAB 7.3

8
Grfico 1: y=sen(x)
Grfico 2: y=exp(x)
7

-1
-6

-4

-2

xlabel, ylabel, zlabel


Def: D um ttulo aos eixos X, Y e Z.
Sintaxe:
xlabel(string) D o ttulo string ao eixo X.
ylabel(string) D o ttulo string ao eixo Y.
zlabel(string) D o ttulo string ao eixo Z.

>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> xlabel('x=sin(t)')
>> ylabel('y=cos(t)')
>> zlabel('z=t')

Pgina 40 de 84

Apostila de MATLAB 7.3

35
30
25

z=t

20
15
10
5
0
1
0.5
0
-0.5
-1
y=cos(t)

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

x=sin(t)

xlim, ylim, zlim


Def: Estipula os limites dos eixos X,Y e Z.
Sintaxe:
Xlim([xmin xmax]) Define o eixo X de xmin a xmax.
Ylim([ymin ymax]) Define o eixo Y de ymin a ymax.
Zlim([zmin zmax]) Define o eixo Z de zmin a zmax.

>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> xlim([-1.5 1.5])
>> ylim([-1.5 1.5])
>> zlim([-1 34])

Pgina 41 de 84

Apostila de MATLAB 7.3

30
25
20
15
10
5
0
1.5
1

1.5
0.5

1
0

0.5
0

-0.5
-0.5

-1

-1
-1.5

-1.5

figure
Def: Cria uma nova janela para plotar grficos.
Sintaxe:
figure
figure('PropertyName',propertyvalue,...)
figure(h)
h = figure(...)
subplot
Def: Divide a janela do grfico em uma matriz definida pelo usurio,
podendo trabalhar com qualquer um.
Sintaxe:
h = subplot(m,n,p) or subplot(mnp) divide em m linhas, n colunas,
plotando o grfico na posio p. Caso tenha uma matriz retangular, a contagem
inicia-se no sentido anti-horrio do grfico superior esquerdo.
subplot(m,n,p,'replace')
subplot(m,n,p,'v6') subplot(h)
subplot('Position',[left bottom width height])
h = subplot(...)

Pgina 42 de 84

Apostila de MATLAB 7.3


>> subplot(2,1,1),ezplot('sin(x)')
>> subplot(2,1,2),ezplot('exp(x)')

sin(x)
1

0.5

-0.5

-1
-6

-4

-2

0
x

exp(x)
250
200
150
100
50
0
-4

-3

-2

-1

Exerccio 8- Plote as funes a seguir com os respectivos comandos e de


acordo com cada item: 5*sen(x) plot; 4*sen(x+/3) ezplot; 3*sen(2*x)
stem.
a) Todas as funes no mesmo grfico;
b) Cada funo em uma janela diferente;
c) Todas as funes na mesma janela, mas em grficos diferentes.

Pgina 43 de 84

Apostila de MATLAB 7.3

Exemplo 3- Criao de arquivo em formato AVI

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);

Pgina 44 de 84

Apostila de MATLAB 7.3

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);

Pgina 45 de 84

Apostila de MATLAB 7.3


6. MATEMTICA SIMBLICA

H em algumas situaes a necessidade de se trabalhar com variveis


simbolicamente, pois nos possibilita uma viso mais geral sobre o resultado de
um problema. Como de praxe, o MATLAB no nos abandona neste quesito,
reservando funes que possibilitam este mtodo. Uma funo bastante
importante a syms, que declara as variveis como simblica. Uma outra
funo a sym, que transforma uma expresso para a forma literal. Mais
detalhes dessas funes so dadas a seguir:
syms
Def: Determina que os argumentos acompanhados tero carter
simblico .
Sintaxe:
syms arg1 arg2 ...
sym
Def: Define variveis, expresses e objetos como simblicos.
Sintaxe:
S = sym(A)
x = sym('x')

Como exemplo, veja a diferena dessas duas funes executando os


comandos a seguir:

>> rho = sym('(1 + sqrt(5))/2')


>> syms x y
>> f = x^2*y + 5*x*sqrt(y)

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

Pgina 46 de 84

Apostila de MATLAB 7.3


varivel declarada inicialmente simblica por uma outra ou mesmo por um
nmero. Suas definies esto listadas abaixo:
findsym
Def: Determina as variveis simblicas em uma expresso.
Sintaxe:
findsym(S)
findsym(S,n)
subs
Def: Define variveis, expresses e objetos como simblicos.
Sintaxe:
R = subs(S)
R = subs(S, new)
R = subs(S,old,new)

Exemplo: Dado o procedimento abaixo:

y=3;w=30;
syms a b n t x z
f = x^n+y; g = sin(a*t + b)-cosd(w);

Exemplo: Determine os parmetros que so simblicos em f e em g,


assim como, de acordo com a ordem das variveis simblicas que aparecer,
substituir todos pelo valor 2,3 para f e 4,7,1 para g, respectivamente.

7. OPERAES MATEMTICAS BSICAS

Nas variedades de funes que o MATLAB oferece, h algumas


dedicadas para as operaes matemticas elementares, como na fatorao,
calcular a funo inversa, em encontrar m.m.c. ou m.d.c., assim como
determinar as razes de um polinmio.
Por exemplo, para determinar o m.m.c. ou m.d.c. de dois nmeros A e
B, utiliza-se lcm ou gcd, respectivamente (observa-se que a sintaxe a mesma
Pgina 47 de 84

Apostila de MATLAB 7.3


que a declarada na seo 4.2). Isso tambm vlido para polinmios. Quando
se quer determinar a inversa de uma funo, o comando finverse o adequado
para isso.
Exemplo: Calcule o m.m.c. dos polinmios x 2 - y 2 e de x3 - y 3 . Em
seguida, determine a inversa de f = e x e de g = tanh( y ) .

7.1. Expresses Numricas


Uma curiosidade que o MATLAB dispe de um conjunto de funes
que contribuem para a fatorao, expanso, simplificaes e entre outros. O
quadro abaixo resume bem cada funo.
Funo

Definio

collect

Agrupa os coeficientes de acordo com o grau

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.


O dessas funes bastante semelhante, por exemplo, dada a

expresso:
x ( x ( x - 6 ) + 11) - 6

Para agrup-la de al modo que possa ter uma organizao em relao


ao grau do polinmio, faz:

>> syms x
>> collect(x*(x*(x-6)+11)-6)

ans =
-6+x^3-6*x^2+11*x

Pgina 48 de 84

Apostila de MATLAB 7.3


Exerccio 9- Verifique a relao trigonomtrica fundamental utilizando a
funo simplify, logo aps, determine a forma expandida de tan( x + y ) .

7.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. Por exemplo, o
8
4
polinmio 5 x3 - 9 x 2 + x +
representado como p=[5 -9 8/5 4/7]. bom
5
7

lembrar que o seu polinmio pode ter elementos irracionais como, por exemplo,

2 ou p .
As principais funes destinadas para os polinmios so descritas a
seguir.
poly
Def: 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)

>> y=[-2 -1]

% Declara um vetor linha [-2 -1]

y =

-2

-1

>> z=poly(y)

%z o polinmio (x+2)(x+1)=x+3x+2

z =

%que tem como razes -2 e -1

>> A=[1 5 3; 0 -2 9; 2 11 -1]

A =

%Declara matriz

Pgina 49 de 84

Apostila de MATLAB 7.3

-2

11

-1

>> poly(A)

%calcula

seu

polinmio

caracterstico

ans =

1.0000

2.0000 -106.0000

-5.0000

roots
Def: Retorna um vetor coluna com a(s) raiz(es) do polinmio fornecido.
Sintaxe:
r = roots(c)

>> c=[1 3 2]

% declara um vetor correspondente ao polinmio

% x+3x+2
c =

>> x=roots(c)

%Calcula as razes desse polinmio, que so -2

e -1
%Observe a oposio entre as funes roots e poly
x =

-2
-1

polyval
Def: 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:
y = polyval(p,X) y receber os valores do polinmio desenvolvido
para cada elemento da matriz X.
Pgina 50 de 84

Apostila de MATLAB 7.3


>> polinomio=[1 5 -2 8 3.2]

%polinmio=x4+5x3-2x+8x+3.2

polinomio =

1.0000

5.0000

-2.0000

8.0000

3.2000

>> a=[1 -1; 3 2.83]

a =

1.0000

-1.0000

3.0000

2.8300

>> 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
Def: 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)

Pgina 51 de 84

Apostila de MATLAB 7.3


Exerccio 10- So dados os pontos (1;-1), (2;-7), (5;-8) e (8;10). Determine o
polinmio que interpola estes pontos. Em seguida, calcule as suas razes e o
esboce em um grfico, destacando o ponto no qual se tem o valor do polinmio
para x=3.

7.3. Solucionando Equaes ou Sistemas


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
Def: 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:
solve(eq) Resolve a equao eq=0
solve(eq,var) Determina as solues de eq=0, em funo da varivel
var.
solve(eq1,eq2,...,eqn) Resolve um sistema de equaes definidas.
g = solve(eq1,eq2,...,eqn,var1,var2,...,varn) Calcula as solues de
um sistema de solues em funo das variveis pr-definidas.

Partindo para um mbito mais complexo, quando se trata de equaes


diferenciais, a funo destinada para este caso a dsolve, definida abaixo:

dsolve
Def: Soluciona simbolicamente uma equao ou sistema de equaes
diferenciais ordinrias.
Sintaxe:
r = dsolve('eq1,eq2,...', 'cond1,cond2,...','v')
r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v')
Pgina 52 de 84

Apostila de MATLAB 7.3


dsolve('eq1,eq2,...','cond1,cond2,...', 'v')

Exemplo 4- Determine a soluo de

dx
= -ax .
dt

>> dsolve('Dx = -a*x')

Exerccio 11- Determine a soluo de

dx
= -ax .
dt

Exerccio 12- 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.
Exerccio 13- Sabe que a acelerao de um carro em uma estrada a = -4 x ,
em que x representa a posio no instante t . Determine a posio no instante
, sabendo que este carro parte, no instante 0, do ponto 1, sendo que o
motorista parou instantaneamente enquanto estava em

p
. Considere todas as
2

unidades no S.I.

Pgina 53 de 84

Apostila de MATLAB 7.3


8. 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.
Vejamos essas e outras funes a seguir:

8.1. Limites
limit
Def: Determina o limite de uma expresso simblica
Sintaxe:
limit(F,x,a) calcula o limite de uma expresso simblica F com x
tendendo a a;
limit(F,a) determina o limite de F com uma varivel simblica
tendendo a a;
limit(F) determina o limite com a = 0 como default;
limit(F,x,a,'right') calcula o limite com x tendendo a a pela direita;
limit(F,x,a,'left') calcula o limite com x tendendo a a pela esquerda;

Exemplo 5- Faa o seguinte limite pelo MATLAB: lim+


x 1

x2 -1
x2 -1

>> limit('(abs(x^2)-1)/(x^2-1)',x,1,'right')

8.2. Diferenciao
diff
Def: Calcula a diferencial de uma funo/matriz dada.
Sintaxe:
diff(S) diferencia a expresso simblica S em funo de uma
varivel simblica;
diff(S,'v') diferencia S em torno de uma varivel simblica v;
Pgina 54 de 84

Apostila de MATLAB 7.3


diff(S,n) diferencia, para um n inteiro positivo, S por n vezes;
diff(S,'v',n) diferencia em torno de uma varivel v, S por n vezes.

Exemplo 6- Para determinar a derivada de 1 ordem de f ( x) = ln( x) + e x ,


faz-se:

>> syms x;
>>f=sqrt(log(x)+exp(x));
>> diff(f)

ans =

1/2/(log(x)+exp(x))^(1/2)*(1/x+exp(x))

>> pretty(ans)

8.3. Integrao
int
Def: Calcula integral de uma funo simblica dada.
Sintaxe:
int(S) integrao indefinida a funo S em respeito a uma varivel
simblica j definida;
int(S,a,b) integra de forma definida a funo S de a a b;
int(S,v,a,b) integra de a a b em funo de uma varivel v;

Exemplo 7- Dado a funo f ( x) = x 2 + 5 , calcule a integral:


Indefinida
>> syms x
>> y=sqrt(x^2+5);
>> f=int(y,x)
1/2*x*(x^2+5)^(1/2)+5/2*asinh(1/5*5^(1/2)*x)

Definida de 2 a 5
Pgina 55 de 84

Apostila de MATLAB 7.3


>>g = int(y,x,2,5)

5/2*30^(1/2)+5/2*log(5^(1/2)+6^(1/2))-3-5/4*log(5)

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(f)

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)

8.4. Integrais definidas pela Regra Trapezoidal


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:

f ( x)dx =

b-a
( f ( x0 ) + 2 f ( x1 ) + ... + 2 f ( xn-1 ) + f ( xn ) )
2n

em que xi representa o ponto no final de cada trapzio, sendo x0 = a e


xn = b . No MATLAB a funo que possibilita a partir deste mtodo o trapz,

definida abaixo:
trapz
Def: Determina a integrao de uma funo a partir da Regra do
Trapzio.
Sintaxe:
Z = trapz(Y)
Z = trapz(X,Y)

Pgina 56 de 84

Apostila de MATLAB 7.3


8.5. Integrais definidas pela Regra de Simpson
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 f ( x) denotada por:

f ( x)dx

b-a
[ f ( x0 ) + 4 f ( x1 ) + 2 f ( x2 ) + 4 f ( x3 ) + ... + 2 f ( xn-2 ) + 4 f ( xn-1 ) + f ( xn )]
3n

A maioria das calculadoras programadas utiliza esta a regra, que


mais utilizada em termos computacionais. No MATLAB, a funo encarrega
para esse fim a quad, mostrada abaixo:
quad
Def: Determina a integrao de uma funo a partir da Regra de
Simpson.
Sintaxe:
q = quad(fun,a,b)
q = quad(fun,a,b,tool) tool corresponde ao 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
2

seguinte:
Primeiro se cria o arquivo.m correspondente a funo que deseja
integrar, ou seja:

function y=funcao(x)
y=exp(-x^2);

Em seguida, basta utilizar a funo quad, conforme modelo abaixo:

>> quad('funcao',0,3)
ans =
0.8862

Pgina 57 de 84

Apostila de MATLAB 7.3


8.6. Integrao Dupla
O MATLAB possui a funo dblquad que determina a integral dupla de
uma funo, conforme definio abaixo:
dblquad
Def: Determina a integrao dupla de uma funo.
Sintaxe:
q = dblquad(fun,xmin,xmax,ymin,ymax)
q = dblquad(fun,xmin,xmax,ymin,ymax,tol) tol a preciso que
deseja calcular, sendo o default 10-6 .

8.7. Integrao Tripla


Tambm possvel calcular a integral tripla de uma funo no
MATLAB, utilizando neste caso a funo triplequad, cuja definio segue
abaixo:
triplequad
Def: Determina a integrao tripla de uma funo.
Sintaxe:
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax)
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol) tol a preciso
que deseja calcular, sendo o default 10-6 .

8.8. Outras funes


gradient
Def: Determina o gradiente numericamente.
Sintaxe:
FX = gradient(F) retorna o coeficiente do gradiente de F em relao
a x(default).
[FX,FY,FZ,...] = gradient(F) retorna a matriz com os valores de x,
y, z..., respectivamente.
Pgina 58 de 84

Apostila de MATLAB 7.3


divergence
Def: Determina o divergente de um campo vetorial.
Sintaxe:
div = divergence(X,Y,Z,U,V,W) determina o divergente do campo
vetorial 3D

U, V e W. X, Y e Z definem os limites de U, V e W,

respectivamente.
div = divergence(X,Y,U,V) calcula agora para 2D.
div = divergence(U,V,W) usa como default para X, Y e Z o valor de
meshgrid(1:n,1:m,1:p).

Exemplo 8- Um exemplo clssico para o uso de gradiente seria na


determinao do Campo Eltrico devido ao efeito de uma carga pontual de
18C. O cdigo segue abaixo.

>> [x,y,z]=meshgrid(-1:0.3:1);
>> V=(18e-12)./(4.*pi.*8.85e-12.*sqrt(x.^2+y.^2+z.^2));
>> [px,py,pz]=gradient(V,0.3,0.3,0.3);
>> Ex=(-1).*px;
>> Ey=(-1).*py;
>> Ez=(-1).*pz;
>> quiver3(x,y,z,Ex,Ey,Ez)
>> axis([-1 1 -1 1 -1 1])

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

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

Pgina 59 de 84

Apostila de MATLAB 7.3


Veja que a funo quiver plota o que representaria o campo eltrico
devido carga.

9. SRIES NUMRICAS

9.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
Def: Determina o somatrio simblico de uma expresso.
Sintaxe:
r = symsum(s) encontra o somatrio da funo s em funo de uma
varivel simblica pr-definida.
r = symsum(s,v) fornece o somatrio em funo da varivel v.
r = symsum(s,a,b) determina o somatrio de s variando a incgnita
de a at b.
r = symsum(s,v,a,b) determina o somatrio de s variando a incgnita
v de a at b.

Exerccio 14- Determine os seguintes somatrios:

x -1

a)

x2
0

b)

( 2n - 1)

9.2. Srie de Taylor

Pgina 60 de 84

Apostila de MATLAB 7.3


10.M-FILE

10.1. Definio
O M-File uma ferramenta do MATLAB que auxilia a criao de
funes. Atravs dela podemos definir o nome da funo, suas entradas e
sadas. Para criar um novo M-file deve-se clicar em File New M-File. A
declarao inicial a seguinte:
function [saida1, saida2, ...] = nome(entrada1, entrada2, ...)

%declarao do cdigo
...

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

%
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%

function [vetor2, v1]= funcao(vetor)


vetor2=vetor*2; %multiplica o vetor por 2
v1=vetor(1);

%retorna o primeiro elemento do vetor de

entrada

Para chamar a funo basta digitar na janela de comando o nome da


funo com as entradas entre parnteses. Lembrar de salvar o M-File com o
mesmo nome da funo!!
Pgina 61 de 84

Apostila de MATLAB 7.3


Na janela de comandos do MATLAB podemos colocar um vetor como
exemplo:
>> A=[2

5 -8 4 1 6]

A =
2

-8

12

>> [x,y]=funcao(A)
x =
4

10

-16

y =
2

10.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. Para rodar somente
a parte selecionada, tecle Ctrl+Enter e para rodar o programa inteiro clique em
F5 ou em:

Exemplo:

Ao teclar Ctrl+Enter somente a Primeira Parte ser executada

Pgina 62 de 84

Apostila de MATLAB 7.3


11.PROGRAMANDO EM MATLAB

O MATLAB tambm oferece um ambiente para a programao assim


como a linguagem C. As funes so bem parecidas, modificando apenas a
forma de declar-la.
if
Def: 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>
[Comandos]
else
[Comandos]
end
for
Def: Comando de iterao. Permite que um conjunto de instrues seja
executado at que a condio seja satisfeita.
Sintaxe:
for <condio>
[Comandos]
end
while
Def: Comando de iterao. Executa um bloco de instrues enquanto a
condio for verdadeira.
Sintaxe:

Pgina 63 de 84

Apostila de MATLAB 7.3


while <condio>
[Comandos]
end
switch
Def: 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]
case {caso1, caso2, caso3, ...}
[Comandos]
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
Def: Escreve no command window um texto ou o valor de um vetor,
sem escrever seu nome.
Sintaxe:

Pgina 64 de 84

Apostila de MATLAB 7.3


disp(x)
input
Def: Pede uma entrada do usurio pelo command window.
Sintaxe:
entrada = input(O que deseja?)

X = input('Entre um nmero\n')
num = 10*X

Command Window:
Entre um nmero
23
X =
23
num =
230

break
Def: Quebra um lao for ou while.
Sintaxe:
break

for i = 0:5
if i == 1
break
end
i = i + 1
end

Command Window:
i =
0
i =
1

Pgina 65 de 84

Apostila de MATLAB 7.3


continue
Def: Passa para o prximo lao de um for ou while.
Sintaxe:
continue

for i = 0:3
if i == 1 && i == 2
continue
end
i = i + 1
end

Command Window:
i =
1
i =
4

Operadores Lgicos
Def: Operadores lgicos

Entradas
A

and

or

not

Xor

A&

~A

Xor(A,B)

|B

Exerccio 15- Utilizando matemtica simblica, crie um programa que calcule


as razes de uma dada funo atravs dos mtodos abaixo. A entrada deve
conter uma funo simblica e a preciso da raiz.
a) Bisseco
b) Newton-Raphson

Pgina 66 de 84

Apostila de MATLAB 7.3


11.1. Verificao de Erros

muito comum que depois de implementado, um programa apresente


erros de lgica ou de sintaxe. O MATLAB, como em compiladores C, tambm
apresenta uma ferramenta de Debug. Com essa ferramenta possvel se
executar o cdigo do programa passo a passo, de modo a tornar mais fcil a
localizao e de um erro e a sua correo.
Abaixo segue alguns procedimentos para se Debugar:

1. Primeiro se adiciona break points, clicando com o boto direito do


mouse nas linhas em que temos interesse de comear a verificao, e
escolhendo a opo Set/Clear Breakpoint. Quando utilizamos um
breakpoint numa linha, surge um ponto vermelho sua esquerda.
2. Depois de se criar os breakpoints pode-se chamar o m.file digitando o
seu nome no workspace
3. O programa ser rodado at que o primeiro breakpoint seja
encontrado. A partir da pode-se pressionar F10 para a execuo da
linha seguinte do programa.
4. Caso se queira pular para o prximo breakpoint, basta pressionar F5
echo on/off Mostra o cdigo do M-file que est sendo executado no
momento.

Pgina 67 de 84

Apostila de MATLAB 7.3


12.ANLISE DE SINAIS

12.1. Transformao de Varivel Independente

x ( t ) x (a t + b )

a < 1 Expanso
a > 1 Compresso
a < 0 Reflexo

b 0 Deslocamento

Deslocamento no tempo:
clear, clc, clf
x=-2:6;
y=2*x;
n0=input('n0= ');
subplot(2,1,1),stem(x,y), grid on, xlim([-20 20])
hold on
xnovo=x+n0;
subplot(2,1,2),stem(xnovo,y);grid on, xlim([-20 20])
hold off

12
10
8
6
4
2
0
-2
-4
-20

-15

-10

-5

10

15

20

-15

-10

-5

10

15

20

12
10
8
6
4
2
0
-2
-4
-20

Pgina 68 de 84

Apostila de MATLAB 7.3

Reflexo
clear, clc, clf
x=-2:8;
y=x;
subplot(2,1,1),stem(x,y), grid on, xlim([-20 20])
hold on
xl=-x;
subplot(2,1,2),stem(xl,y);grid on, xlim([-20 20])
hold off

-2
-20

-15

-10

-5

10

15

20

-15

-10

-5

10

15

20

-2
-20

Escalonamento
clear, clc, clf
x=-2:6;
y=2*x;
a=input('a= ')
subplot(2,1,1),stem(x,y), grid on, xlim([-20 20])
hold on
xl=x/a;
subplot(2,1,2),stem(xl,y);grid on, xlim([-20 20])
hold off

Pgina 69 de 84

Apostila de MATLAB 7.3


12
10
8
6
4
2
0
-2
-4
-20

-15

-10

-5

10

15

20

-15

-10

-5

10

15

20

12
10
8
6
4
2
0
-2
-4
-20

12.2. Funes Pr-definidas

Impulso:
0, n 0
d [ n] =
1, n = 0
0, t 0
d (t ) =
1, t = 0

function [u] = impulso(n,N)


for k=1:length(n)
if n(k)~=N
u(k)=0;
else
u(k)=1;
end
end

Command Window:
>> x=-2:7;
>> y=impulso(x,3);
>> stem(x,y)

Pgina 70 de 84

Apostila de MATLAB 7.3

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
-2

-1

Degrau
0, n < 0
u [n] =
1, n 0
0, t < 0
u (t ) =
1, t 0

function [u] = degrau(n,N)


for k=1:length(n)
if n(k)<N
u(k)=0;
else
u(k)=1;
end
end

Command Window:
>> n=-2:7;
>> y=degrau(n,3);
>> stem(n,y)

Pgina 71 de 84

Apostila de MATLAB 7.3

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
-2

-1

Exerccio: Determine:
a) y [ n ] = u [ n + 10] - 2u [ n + 5] + u [ n - 6]

>> n=-20:20;
>> y=degrau(n,-10)-2*degrau(n,-5)+degrau(n,6);
>> stem(n,y)

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-20

-15

-10

-5

10

15

20

Pgina 72 de 84

Apostila de MATLAB 7.3


n

1
b) y [ n ] = u [ n - 3]
2
>> n=-20:20;
>> y=((1/2).^(n)).*degrau(n,3);
>> stem(n,y)

0.14

0.12

0.1

0.08

0.06

0.04

0.02

0
-20

-15

-10

-5

10

15

20

10

15

20

1
c) y [ n ] = cos p n u [ n + 4]
2
>> n=-20:20;
>> y=cos(0.5*pi*n).*degrau(n,-4);
>> stem(n,y)
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-20

-15

-10

-5

Pgina 73 de 84

Apostila de MATLAB 7.3


d) y [ n ] = e 2 sen ( n )
>> n=-20:20;
>> y=exp(2*(sin(n)));
>> stem(n,y)
8

0
-20

-15

-10

-5

10

15

20

n
e) y [ n ] = sinc
2
>> x=-20:1:20;
>> y=sinc(x/2);
>> stem(x,y)

0.8

0.6

0.4

0.2

-0.2

-0.4
-20

-15

-10

-5

10

15

20

Pgina 74 de 84

Apostila de MATLAB 7.3


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
Def: Obtm a funo delta de Dirac, ou seja, a funo impulso no
intervalo determionado por x..
Sintaxe:
dirac(x)

>> x=-10:10;
>> y=dirac(x-5);

%Impulso no instante 5

>> stem(x,y)

heaviside
Def: Determina a funo degrau no intervalo determinado por x.
Sintaxe:
dirac(x)

>> x=-10:10;
>> y=dirac(x-5);

%Impulso 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)

Exerccio 16- Verifique a integral de sen( x) d ( x - 5) .

Pgina 75 de 84

Apostila de MATLAB 7.3


12.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.
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.
( ny = [(min(nx) + min(nh)):(max(nx) +max(nh))]; )
. Vejamos a sintaxe de conv abaixo:
conv
Def: Determina a convoluco de dois sinais ou a multiplicao de dois
polinmios.
Sintaxe:
w = conv(u,v)

h=[1,2,1];
x=[2,3,-2];
y=conv(x,y)

Exemplo 10- Determine os coeficientes do polinmio obtido ao multiplicar os


polinmios 5x 2 + 3x com 2x + 2 .

>> a=[3 3 0];


>> b=[2 2];
>> y=conv(a,b)

Pgina 76 de 84

Apostila de MATLAB 7.3


y =
6

12

Logo, o polinmio obtido seria 6x 3 + 12x 2 + 6x .

Exemplo 11- Determine

resposta

de

um

sistema

com

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);

Exerccio 17- 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]} .

12.4. Equaes de Diferenas


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
Def: 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)
Pgina 77 de 84

Apostila de MATLAB 7.3


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.

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], correspondentes 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.

a=[1, -1, -1];


b=[0];
x=ones(1,20);
y=filter(b,a,x,[1 0])

Exerccio 18- Determine, utilizando filter, a seqncia tribonacci.

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
Def: Determina a resposta ao impulso de um sistema de equaes de
diferenas.
Sintaxe:
[h,t] = impz(b,a)
[h,t] = impz(b,a,n)
Pgina 78 de 84

Apostila de MATLAB 7.3


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.

12.5. FFT (Transformada Rpida de Fourier)


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 freqncia
para o domnio do tempo.

A Transformada de Fourier e sua inversa podem ser calculadas a partir


das expresses abaixo, respectivamente:

F (w ) =

S (t )e

- jwt

dt

1
S (t ) =
2p

F (w )e

jwt

dw

Onde w a freqncia fundamental.

A FFT (Transformada rpida de Fourier) um algoritmo computacional


otimizado que calcula a Transformada Discreta de Fourier mais rapidamente. A
FFT tambm pode servir de aproximao para a Transformada de Tempo
Discreto de Fourier, Srie de Fourier e a prpria Transformada de Fourier.

Uma propriedade da Transformada de Fourier que a transformada da


convoluo de duas funes equivale multiplicao das duas no domnio da
freqncia. Portanto para calcular a convoluo de uma funo levamos os
Pgina 79 de 84

Apostila de MATLAB 7.3


dois sinais para o domnio da freqncia, multiplicamos e voltamos para o
domnio do tempo. Veja a expresso abaixo:
y (t ) = x (t ) * h(t ) = IFFT [ FFT ( x (t )).FFT ( h (t ))]

Exemplo 13- Dado o circuito RC abaixo, determine a resposta ao impulso e a


corrente no capacitor iC (t ) quando a entrada x(t ) igual a e- t .

Resoluo:
Clculo da resposta ao impulso:
Lei dos ns:
i = iR + iC
dV
dt
Em t=0, i = d (t ) e iR = 0
i = iR + C

1
dV
1
d (t ) =
V (0) = V (0+ ) =
C
dt
C

Em t = 0+ , i (0+ ) = 0
V
dV
1 -t
Re soluoequao diferencial
(1) 0 = + C

V (t ) = e RC
R
dt
C
dV
1 - t RC
i (t ) = h(t ) = C
=e
dt
RC

Para R=40k W e C=300 m F

h(t ) = -

1 - t 12
e A
12

Clculo da convoluo analiticamente:

Pgina 80 de 84

Apostila de MATLAB 7.3


1 -(t -l )12
-l
x
(
l
)
h
(
t
l
)
d
l
=
e
dl

0 12 e

-
t

iC (t ) = y (t ) =
-t

-t

e 12 -11l 12
e 12 - e-t
=e
d
l
=
12 0
11
t

Clculo da convoluo atravs do MATLAB:


n=[0:0.08:81.84];

%amostragem

x=exp(-n);

%definio da entrada

h=-exp(-n/12)/12;

%definio da sada

fftx=fft(x);

%clculo da fft

ffth=fft(h);
ffty=fftx.*ffth;

%multiplicao

y=ifft(ffty);

%inversa

plot(n,-abs(y)*0.08)
title('Convoluo');
xlabel('t(s)');
ylabel('i(A)');

Convoluo
0

-0.01

-0.02

i(A)

-0.03

-0.04

-0.05

-0.06

-0.07

10

20

30

40

50

60

70

80

90

t(s)

x(t ) = e -5t
Exerccio 19- Calcule a convoluo das formas de onda
h(t ) = cos(2.5t ) - t

Pgina 81 de 84

Apostila de MATLAB 7.3


12.6. Filtros Digitais
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 z = e

jwt

. Na

forma geral a funo de transferncia H(z) a seguinte:


H ( z) =

B( z )
A( z )

H ( z) =

b0 + b1 z -1 + b2 z -2 + ... + bn z -n
a0 + a1 z -1 + a2 z -2 + ... + an z -n

Butter
Def: Determina os coeficientes de um filtro Butterworth. Esse filtro pode
ser passa baixa, passa alta, passa banda, rejeita banda.
Sintaxe:
[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
Def: Calcula os valores de uma funo complexa H(z)
Sintaxe:
Freqz(B,A,n) Utiliza 3 argumentos de entrada. O primeiro um vetor
contendo os coeficientes do polinmio B(z) da Equao (1). O segundo um
vetor contendo os coeficientes do polinmio A(z). O terceiro para especificar
o nmero de valores de freqncias normalizadas que se quer no intervalo de 0
a p.

Exemplo 14

Gerar um sinal com duas senides de freqncias 5 e 80 Hz, com fs=200


Hz.
Projetar um filtro para fs=200 Hz. Usar filtro de 2a ordem, Butterworth.
Filtrar o sinal.
Plotar a resposta em freqncia.

Pgina 82 de 84

Apostila de MATLAB 7.3


% 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

% Mostrar coeficientes B

% 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')

Exerccio 20- 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.

Pgina 83 de 84

Apostila de MATLAB 7.3


13.REFERNCIAS BIBLIOGRFICAS

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

Pgina 84 de 84

Você também pode gostar