8/8/2019 Matlab Apostila Ufc
1/84
Apostila de MATLAB 7.3
Pgina 1 de 84
UNIVERSIDADE FEDERAL DO CEAR
DEPARTAMENTO DE ENGENHARIA ELTRICAPROGRAMA 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
8/8/2019 Matlab Apostila Ufc
2/84
Apostila de MATLAB 7.3
Pgina 2 de 84
SUMRIO
1. APRESENTAO....................................................................................................................4
1.1. UTILIZANDO O HELP ..................................................................................................52. 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.............................................................................................295. 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
8/8/2019 Matlab Apostila Ufc
3/84
Apostila de MATLAB 7.3
Pgina 3 de 84
9. SRIES NUMRICAS............................................................................................................60
9.1. SOMATRIO .............................................................................................................60
9.2. SRIE DE TAYLOR.....................................................................................................60
10.M-FILE....................................................................................................................................61
10.1. DEFINIO...........................................................................................................6110.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
8/8/2019 Matlab Apostila Ufc
4/84
Apostila de MATLAB 7.3
Pgina 4 de 84
1. APRESENTAO
MATLAB (MATrix LABoratory) uma linguagem de alto desempenho
para computao tcnica. Integra computao, visualizao e programao emum 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 e - para
valores negativos
Format rat 355/113 Aproximao racional
Format hex 400921fb54442d18 Formato hexadecimal
8/8/2019 Matlab Apostila Ufc
5/84
Apostila de MATLAB 7.3
Pgina 5 de 84
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 entreoutros.
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:
8/8/2019 Matlab Apostila Ufc
6/84
Apostila de MATLAB 7.3
Pgina 6 de 84
>> 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 rathera
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:
8/8/2019 Matlab Apostila Ufc
7/84
Apostila de MATLAB 7.3
Pgina 7 de 84
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
10]
>> b = [0:0.5:3] %cria o vetor [0 0.5 1 1.5 2 2.5 3]
>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
>>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 1 2 3
3 4 4 5
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.
8/8/2019 Matlab Apostila Ufc
8/84
Apostila de MATLAB 7.3
Pgina 8 de 84
2.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
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 8
7 6 11 4
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 2 9
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:
8/8/2019 Matlab Apostila Ufc
9/84
Apostila de MATLAB 7.3
Pgina 9 de 84
>> 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 -100 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
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 1
1 1
zeros
Def: Esta funo gera uma matriz cujos valores so nulos
Sintaxe:
zeros(n) Gera uma matriz quadrada cujos termos so nuloszeros(m,n) Gera ma matriz m x n cujos termos so nulos
8/8/2019 Matlab Apostila Ufc
10/84
Apostila de MATLAB 7.3
Pgina 10 de 84
>>zeros(2)
ans =
0 0
0 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 =
1 0
0 1
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 1 1 1
8 4 2 1
27 9 3 1
64 16 4 1
8/8/2019 Matlab Apostila Ufc
11/84
Apostila de MATLAB 7.3
Pgina 11 de 84
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 1
2 3
>> A'
ans =1 2
1 3
det
Def: Calcula o determinante de uma matriz
Sintaxe:
det(A) Calcula o determinante da matriz A
8/8/2019 Matlab Apostila Ufc
12/84
Apostila de MATLAB 7.3
Pgina 12 de 84
>>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 4
2 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 =
5 8
4 9
>> inv(A)
8/8/2019 Matlab Apostila Ufc
13/84
Apostila de MATLAB 7.3
Pgina 13 de 84
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
4 1
>> [a,b]=eig(A)
a =
0 - 0.4472i 0 + 0.4472i
-0.8944 -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:
8/8/2019 Matlab Apostila Ufc
14/84
Apostila de MATLAB 7.3
Pgina 14 de 84
[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 osndices das linhas dos elementos da matriz e em cola matriz coluna contendo
os ndices correspondentes as colunas dos elementos da matriz X.
[row,col,v] = find(X, ...) Retorna em rowuma matriz coluna com os
ndices das linhas dos elementos da matriz e em cola 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]
8/8/2019 Matlab Apostila Ufc
15/84
Apostila de MATLAB 7.3
Pgina 15 de 84
ans =
1 1
2 3
Veja no ultimo caso acima que re cretornam em os ndices das linhase das colunas correspondentes aos elementos que respeitam a expresso
oferecida.
Obviamente, os elementos a11 e a23 so os nicos maiores que 2.
sort
Def: Retornao vetor dado ou elementos de uma matriz em ordem
crescenteSintaxe:
sort(A) Retorna os elementos das colunas da matriz A em ordem
crescente
>> sort(A)
ans =
1 1
2 4
fliplr
Def: Espelha as colunas de uma matriz
Sintaxe:
fliplr(A) Espelha as colunas da matriz A
>> A=[1 2;3 4]
A =
1 2
3 4
>> fliplr(A)
ans =
8/8/2019 Matlab Apostila Ufc
16/84
Apostila de MATLAB 7.3
Pgina 16 de 84
2 1
4 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 2
3 4
>> flipud(A)
ans =
3 4
1 2
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
um passo de
Exemplo 1- Dado o circuito, calcule as tenses nos ns 1 e 2:
R3
2
V1
10Vdc
V
R4
10
R1
1
R2
5
I1
2Adc
0
V
8/8/2019 Matlab Apostila Ufc
17/84
Apostila de MATLAB 7.3
Pgina 17 de 84
1
2
1 1
1
1
1 1 1 110
1 5 2 211 1 1
22 2 10
i vR
i G v
vv
G i G G v
v G 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
Time
0s 0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1.0s
V(R1:2) V(R3:1)
9.0V
9.5V
10.0V
10.5V
11.0V
8/8/2019 Matlab Apostila Ufc
18/84
Apostila de MATLAB 7.3
Pgina 18 de 84
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 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
helppara 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
8/8/2019 Matlab Apostila Ufc
19/84
Apostila de MATLAB 7.3
Pgina 19 de 84
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.
8/8/2019 Matlab Apostila Ufc
20/84
Apostila de MATLAB 7.3
Pgina 20 de 84
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 esubtrao, 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 umamatriz.
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 1
b =
1 2
8/8/2019 Matlab Apostila Ufc
21/84
Apostila de MATLAB 7.3
Pgina 21 de 84
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 =
2 4
b =
2 1
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.
8/8/2019 Matlab Apostila Ufc
22/84
Apostila de MATLAB 7.3
Pgina 22 de 84
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)
pol2cartDef: Converte do polar/cilndrico para o cartesiano.
Sintaxe:
[x,y] = pol2cart(theta,rho)
[x,y,z] = pol2cart(theta,rho,z)
8/8/2019 Matlab Apostila Ufc
23/84
Apostila de MATLAB 7.3
Pgina 23 de 84
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
8/8/2019 Matlab Apostila Ufc
24/84
Apostila de MATLAB 7.3
Pgina 24 de 84
4. FUNES MATEMTICAS
4.1. Funes Elementares
O MATLAB contm um conjunto de funes que executam algumasfunes matemticas elementares, como mdulo e raiz quadrada. A seguir
disponibilizaremos uma lista de funes com uma breve descrio:
Funo Descrio
log(X) 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 2exp(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 gcde 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)
8/8/2019 Matlab Apostila Ufc
25/84
Apostila de MATLAB 7.3
Pgina 25 de 84
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 nnmeros 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) vpode ser uma matriz com os nmeros nos quais
deseja permut-los.
8/8/2019 Matlab Apostila Ufc
26/84
Apostila de MATLAB 7.3
Pgina 26 de 84
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 iej(voltado mais para a engenharia). Porexemplo, 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.
8/8/2019 Matlab Apostila Ufc
27/84
Apostila de MATLAB 7.3
Pgina 27 de 84
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 Ximag(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(5 3 )
9i
e+ .
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 dem cada funo. Por exemplo, calculemos o seno de
30 em graus:
>> sind(30)
ans =
0.5000
8/8/2019 Matlab Apostila Ufc
28/84
Apostila de MATLAB 7.3
Pgina 28 de 84
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 hna 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
a Determina o arco de um valor atan
d Determina com um argumento em graus cosd
h Determina a funo hiperblica sinh
8/8/2019 Matlab Apostila Ufc
29/84
Apostila de MATLAB 7.3
Pgina 29 de 84
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, estaimportncia 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)
8/8/2019 Matlab Apostila Ufc
30/84
Apostila de MATLAB 7.3
Pgina 30 de 84
-6 -4 -2 0 2 4 6
-1
-0.5
0
0.5
1
x
sin(x)
5. GRFICOS
5.1. Grficos Bidimensionais
ezplot
Def: Plota a expresso simblica ( )f x no domnio padro
2 2xp p- < < .
Sintaxe:
ezplot(f) Plota a expresso ( )f x .
>> ezplot('sin(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 decada 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;
8/8/2019 Matlab Apostila Ufc
31/84
Apostila de MATLAB 7.3
Pgina 31 de 84
>> plot(t,sin(t))
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))
-2 -1 0 1 2 3 4 50
50
100
150
0 5 10 15 20 25 30 35-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
8/8/2019 Matlab Apostila Ufc
32/84
Apostila de MATLAB 7.3
Pgina 32 de 84
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)
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)
1 2 3 4 5 6 7 8 90
10
20
30
40
50
60
8/8/2019 Matlab Apostila Ufc
33/84
Apostila de MATLAB 7.3
Pgina 33 de 84
5.2. Grficos Tridimensionais
ezplot3
Def: Plota uma curva espacial de trs equaes paramtricas no
domnio padro 0 2t p< < .
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')
1
2
3
4
30
210
60
240
90
270
120
300
150
330
180 0
-1-0.8
-0.6-0.4
-0.20
0.20.4
0.60.8
1
-1
-0.5
0
0.5
1
0
1
2
3
4
5
6
7
x
x = cos(t), y = sin(t), z = t
y
z
8/8/2019 Matlab Apostila Ufc
34/84
Apostila de MATLAB 7.3
Pgina 34 de 84
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)
ezsurf
Def: Plota a superfcie de um grfico de uma funo de duas variveis
no domnio padro 2 2xp p- < < e 2 2yp p- < < .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 2sp p- < < e 2 2tp p- < < .
>> ezsurf('1/sqrt(x^2 + y^2)')
-1-0.8
-0.6-0.4
-0.20
0.20.4
0.60.8
1
-1
-0.5
0
0.5
1
0
5
10
15
20
25
30
35
8/8/2019 Matlab Apostila Ufc
35/84
Apostila de MATLAB 7.3
Pgina 35 de 84
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 variveiscujo domnio determinado pelo usurio.
Sintaxe:
surf(X,Y,Z) Plota a superfcie paramtrica de zem funo de xe y.
>> surf(X,Y,Z)
-6
-4-2
0
2
4
6
-6
-4
-2
0
2
4
6
0
1
2
3
4
5
6
7
x
1/sqrt(x2 + y2)
y
8/8/2019 Matlab Apostila Ufc
36/84
Apostila de MATLAB 7.3
Pgina 36 de 84
5.3. Configurao
Title
Def: D um ttulo ao grfico
Sintaxe:
Title(string) D o ttulo stringao grfico atual.
>> compass(2,3)
>> title('Grfico Polar')
-2-1.5
-1-0.5
00.5
11.5
2
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
1
2
3
4
30
210
60
240
90
270
120
300
150
330
180 0
Grfico Polar
8/8/2019 Matlab Apostila Ufc
37/84
Apostila de MATLAB 7.3
Pgina 37 de 84
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 xmina
xmax, o eixo Y de ymina ymaxe o eixo Z de zmina zmax.
>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> axis([-1.5 1.5 -1.5 1.5 -1 34])
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
-1.5
-1
-0.5
0
0.5
1
1.5
-1.5
-1
-0.5
0
0.5
1
1.5
0
5
10
15
20
25
30
8/8/2019 Matlab Apostila Ufc
38/84
Apostila de MATLAB 7.3
Pgina 38 de 84
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)
-1-0.8
-0.6-0.4 -0.2
00.2
0.40.6
0.81
-1
-0.5
0
0.5
1
0
5
10
15
20
25
30
35
8/8/2019 Matlab Apostila Ufc
39/84
Apostila de MATLAB 7.3
Pgina 39 de 84
Legend
Def: Adiciona uma legenda ao grfico.
Sintaxe:
Legend(string1,string2) Adiciona as legendas string1 e string2ao
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)')
-6 -4 -2 0 2 4 6-1
0
1
2
3
4
5
6
7
8
8/8/2019 Matlab Apostila Ufc
40/84
Apostila de MATLAB 7.3
Pgina 40 de 84
xlabel, ylabel, zlabel
Def: D um ttulo aos eixos X, Y e Z.
Sintaxe:
xlabel(string) D o ttulo stringao eixo X.
ylabel(string) D o ttulo stringao eixo Y.
zlabel(string) D o ttulo stringao 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')
-6 -4 -2 0 2 4 6-1
0
1
2
3
4
5
6
7
8
Grfico 1: y=sen(x)
Grfico 2: y=exp(x)
8/8/2019 Matlab Apostila Ufc
41/84
Apostila de MATLAB 7.3
Pgina 41 de 84
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])
-1-0.8
-0.6-0.4 -0.2
00.2
0.40.6
0.81
-1
-0.5
0
0.5
1
0
5
10
15
20
25
30
35
x=sin(t)y=cos(t)
z=t
8/8/2019 Matlab Apostila Ufc
42/84
Apostila de MATLAB 7.3
Pgina 42 de 84
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 mlinhas, ncolunas,
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(...)
-1.5
-1
-0.5
0
0.5
1
1.5
-1.5
-1-0.5
0
0.5
1
1.5
0
5
10
15
20
25
30
8/8/2019 Matlab Apostila Ufc
43/84
Apostila de MATLAB 7.3
Pgina 43 de 84
>> subplot(2,1,1),ezplot('sin(x)')
>> subplot(2,1,2),ezplot('exp(x)')
Exerccio 8- Plote as funes a seguir com os respectivos comandos e de
acordo com cada item: 5*sen(x) 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.
-6 -4 -2 0 2 4 6
-1
-0.5
0
0.5
1
x
sin(x)
-4 -3 -2 -1 0 1 2 3 4 5 6
0
50
100
150
200
250
x
exp(x)
8/8/2019 Matlab Apostila Ufc
44/84
Apostila de MATLAB 7.3
Pgina 44 de 84
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);
8/8/2019 Matlab Apostila Ufc
45/84
8/8/2019 Matlab Apostila Ufc
46/84
Apostila de MATLAB 7.3
Pgina 46 de 84
6. MATEMTICA SIMBLICA
H em algumas situaes a necessidade de se trabalhar com variveissimbolicamente, 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
8/8/2019 Matlab Apostila Ufc
47/84
Apostila de MATLAB 7.3
Pgina 47 de 84
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 eB, utiliza-se lcmou gcd, respectivamente (observa-se que a sintaxe a mesma
8/8/2019 Matlab Apostila Ufc
48/84
Apostila de MATLAB 7.3
Pgina 48 de 84
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 2 2x y- e de 3 3x y- . Em
seguida, determine a inversa de xf e= e de tanh( )g 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. Oquadro 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:
( )( )6 11 6 x x x- + -
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
8/8/2019 Matlab Apostila Ufc
49/84
Apostila de MATLAB 7.3
Pgina 49 de 84
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
polinmio 3 28 4
5 95 7
x x x- + + representado como p=[5 -9 8/5 4/7]. bom
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
1 3 2
>> A=[1 5 3; 0 -2 9; 2 11 -1]
A = %Declara matriz
8/8/2019 Matlab Apostila Ufc
50/84
Apostila de MATLAB 7.3
Pgina 50 de 84
1 5 3
0 -2 9
2 11 -1
>> poly(A) %calcula o 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 =
1 3 2
>> 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 desenvolvidopara cada elemento da matriz X.
8/8/2019 Matlab Apostila Ufc
51/84
Apostila de MATLAB 7.3
Pgina 51 de 84
>> 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
polyfitDef: Determina o polinmio interpolador com os pontos dados por xe 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)
8/8/2019 Matlab Apostila Ufc
52/84
Apostila de MATLAB 7.3
Pgina 52 de 84
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 varivelvar.
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')
8/8/2019 Matlab Apostila Ufc
53/84
Apostila de MATLAB 7.3
Pgina 53 de 84
dsolve('eq1,eq2,...','cond1,cond2,...', 'v')
Exemplo 4- Determine a soluo dedx
axdt
= - .
>> dsolve('Dx = -a*x')
Exerccio 11- Determine a soluo dedx
axdt
= - .
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 4a 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 em2
p. Considere todas as
unidades no S.I.
8/8/2019 Matlab Apostila Ufc
54/84
Apostila de MATLAB 7.3
Pgina 54 de 84
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() elimitso 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 Fcom x
tendendo a a;
limit(F,a) determina o limite de Fcom 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 xtendendo a apela direita;
limit(F,x,a,'left') calcula o limite com xtendendo a apela esquerda;
Exemplo 5- Faa o seguinte limite pelo MATLAB:2
21
1lim
1x
x
x+
-
-
>> 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 Sem torno de uma varivel simblica v;
8/8/2019 Matlab Apostila Ufc
55/84
Apostila de MATLAB 7.3
Pgina 55 de 84
diff(S,n) diferencia, para um ninteiro positivo, Spor nvezes;
diff(S,'v',n) diferencia em torno de uma varivel v, Spor nvezes.
Exemplo 6- Para determinar a derivada de 1 ordem de ( ) ln( )x
f x x e= + ,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 Sem respeito a uma varivel
simblica j definida;
int(S,a,b) integra de forma definida a funo Sde aa b;
int(S,v,a,b) integra de aa bem funo de uma varivel v;
Exemplo 7- Dado a funo 2( ) 5 f x x= + , 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
8/8/2019 Matlab Apostila Ufc
56/84
Apostila de MATLAB 7.3
Pgina 56 de 84
>>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 representadapor trapzios entre um intervalo [a,b]pr-definido, sendo o nmero de divises
n. Em representao matemtica, tem-se:
( )0 1 1( ) ( ) 2 ( ) ... 2 ( ) ( )2
b
n na
b a f x dx f x f x f x f x
n-
-= + + + +
em que ix representa o ponto no final de cada trapzio, sendo 0x a= e
nx 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)
8/8/2019 Matlab Apostila Ufc
57/84
Apostila de MATLAB 7.3
Pgina 57 de 84
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:
[ ]0 1 2 3 2 1( ) ( ) 4 ( ) 2 ( ) 4 ( ) ... 2 ( ) 4 ( ) ( )3
b
n n na
b af x dx f x f x f x f x f x f x f x
n- -
- + + + + + + +
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 de2x
y e-= no intervalo de 0 a 3, faz-se o
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
8/8/2019 Matlab Apostila Ufc
58/84
Apostila de MATLAB 7.3
Pgina 58 de 84
8.6. Integrao Dupla
O MATLAB possui a funo dblquadque 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 610- .
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:
triplequadDef: 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 610- .
8.8. Outras funes
gradient
Def: Determina o gradiente numericamente.
Sintaxe:
FX = gradient(F) retorna o coeficiente do gradiente de Fem relao
a x(default).
[FX,FY,FZ,...] = gradient(F) retorna a matriz com os valores de x,
8/8/2019 Matlab Apostila Ufc
59/84
Apostila de MATLAB 7.3
Pgina 59 de 84
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, Ye 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
digo 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.20
0.20.4
0.60.8
1
-1
-0.5
0
0.5
1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
8/8/2019 Matlab Apostila Ufc
60/84
Apostila de MATLAB 7.3
Pgina 60 de 84
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 sem 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
vde a at b.
Exerccio 14- Determine os seguintes somatrios:
a)1
2
0
x
x-
b)( )
2
1
1
2 1n
-
9.2. Srie de Taylor
8/8/2019 Matlab Apostila Ufc
61/84
Apostila de MATLAB 7.3
Pgina 61 de 84
10. M-FILE
10.1. Definio
O M-File uma ferramenta do MATLAB que auxilia a criao defunes. 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!!
8/8/2019 Matlab Apostila Ufc
62/84
8/8/2019 Matlab Apostila Ufc
63/84
Apostila de MATLAB 7.3
Pgina 63 de 84
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 aforma 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
[Comandos]
elseif
[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
[Comandos]
end
while
Def: Comando de iterao. Executa um bloco de instrues enquanto a
condio for verdadeira.
Sintaxe:
8/8/2019 Matlab Apostila Ufc
64/84
Apostila de MATLAB 7.3
Pgina 64 de 84
while
[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
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 windowum texto ou o valor de um vetor,
sem escrever seu nome.
Sintaxe:
8/8/2019 Matlab Apostila Ufc
65/84
Apostila de MATLAB 7.3
Pgina 65 de 84
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
breakDef: 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
8/8/2019 Matlab Apostila Ufc
66/84
Apostila de MATLAB 7.3
Pgina 66 de 84
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 and or not Xor
A B A &
B
A
| B
~A Xor(A,B)
0 0 0 0 1 0
0 1 0 1 1 1
1 0 0 1 0 1
1 1 1 1 0 0
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
8/8/2019 Matlab Apostila Ufc
67/84
Apostila de MATLAB 7.3
Pgina 67 de 84
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, tambmapresenta 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, eescolhendo 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.
8/8/2019 Matlab Apostila Ufc
68/84
Apostila de MATLAB 7.3
Pgina 68 de 84
12. ANLISE DE SINAIS
12.1. Transformao de Varivel Independente
( ) ( ) x t x t a b +
1a < Expanso
1a > Compresso
0a < Reflexo
0b 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
-20 -15 -10 -5 0 5 10 15 20-4
-2
0
2
4
6
8
10
12
-20 -15 -10 -5 0 5 10 15 20-4
-2
0
2
4
6
8
10
12
8/8/2019 Matlab Apostila Ufc
69/84
Apostila de MATLAB 7.3
Pgina 69 de 84
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
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
-20 -15 -10 -5 0 5 10 15 20-2
0
2
4
6
8
-20 -15 -10 -5 0 5 10 15 20-2
0
2
4
6
8
8/8/2019 Matlab Apostila Ufc
70/84
Apostila de MATLAB 7.3
Pgina 70 de 84
12.2. Funes Pr-definidas
Impulso:
[ ]0, 0
1, 0
nn
nd
=
=
( )0, 0
1, 0
tt
td
=
=
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)
-20 -15 -10 -5 0 5 10 15 20-4
-2
0
2
4
6
8
10
12
-20 -15 -10 -5 0 5 10 15 20-4
-2
0
2
4
6
8
10
12
8/8/2019 Matlab Apostila Ufc
71/84
8/8/2019 Matlab Apostila Ufc
72/84
Apostila de MATLAB 7.3
Pgina 72 de 84
Exerccio: Determine:
a) [ ] [ ] [ ] [ ]10 2 5 6y n u n u n u n= + - + + -
>> n=-20:20;
>> y=degrau(n,-10)-2*degrau(n,-5)+degrau(n,6);
>> stem(n,y)
-2 -1 0 1 2 3 4 5 6 70
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
-20 -15 -10 -5 0 5 10 15 20-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
8/8/2019 Matlab Apostila Ufc
73/84
Apostila de MATLAB 7.3
Pgina 73 de 84
-20 -15 -10 -5 0 5 10 15 20-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
b) [ ] [ ]1
32
n
y n u n
= -
>> n=-20:20;
>> y=((1/2).^(n)).*degrau(n,3);
>> stem(n,y)
c) [ ] [ ]1cos 42
y n n u np = +
>> n=-20:20;
>> y=cos(0.5*pi*n).*degrau(n,-4);
>> stem(n,y)
-20 -15 -10 -5 0 5 10 15 200
0.02
0.04
0.06
0.08
0.1
0.12
0.14
8/8/2019 Matlab Apostila Ufc
74/84
Apostila de MATLAB 7.3
Pgina 74 de 84
d) [ ] 2 ( )sen n y n e=
>> n=-20:20;
>> y=exp(2*(sin(n)));
>> stem(n,y)
e) [ ]n
sinc
2
y n
=
>> x=-20:1:20;
>> y=sinc(x/2);
>> stem(x,y)
-20 -15 -10 -5 0 5 10 15 200
1
2
3
4
5
6
7
8
-20 -15 -10 -5 0 5 10 15 20-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
8/8/2019 Matlab Apostila Ufc
75/84
Apostila de MATLAB 7.3
Pgina 75 de 84
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 dirace 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 ( ) ( 5)sen x xd - .
8/8/2019 Matlab Apostila Ufc
76/84
8/8/2019 Matlab Apostila Ufc
77/84
Apostila de MATLAB 7.3
Pgina 77 de 84
y =
6 12 6 0
Logo, o polinmio obtido seria 3 26x 12x 6x+ + .
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);
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
{ }nh[n] 0,9 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)
8/8/2019 Matlab Apostila Ufc
78/84
Apostila de MATLAB 7.3
Pgina 78 de 84
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 [ ] [ 1] [ 2] 0y n y n y n- - - - = 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 impzse
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)
8/8/2019 Matlab Apostila Ufc
79/84
Apostila de MATLAB 7.3
Pgina 79 de 84
O comando [h,t] = impz(b,a,n) avalia nvalores 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 hcontm os valores da resposta ao impulso e tcontm 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:
( ) ( )
j t
F S t e dt
w
w
-
-=
1( ) ( )
2
j tS t F e d ww w
p
-
=
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
8/8/2019 Matlab Apostila Ufc
80/84
Apostila de MATLAB 7.3
Pgina 80 de 84
dois sinais para o domnio da freqncia, multiplicamos e voltamos para o
domnio do tempo. Veja a expresso abaixo:
( )( )( ) ( )* ( ) [ ( ). ( )]h tx t y t x t h t IFFT FFT FFT = =
Exemplo 13- Dado o circuito RC abaixo, determine a resposta ao impulso e a
corrente no capacitor ( )Ci t quando a entrada ( )x t igual ate- .
Resoluo:
Clculo da resposta ao impulso:
Para R=40k W e C=300 mF
Clculo da convoluo analiticamente:
Lei dos ns:
R Ci i i= +
R
dVi i C
dt= +
Em t=0, ( ) 0Ri t e id= =
1 1( ) (0) (0 )
dVt V V
C dt C d += = =
Re
0 , (0 ) 0
1(1) 0 ( )
1( ) ( )
tsoluoequaodiferencial RC
tRC
Em t i
V dVC V t e R dt C
dVi t h t C e
dt RC
+ +
-
-
= =
= + =
= = = -
121
( )12
t
h t e A-
= -
8/8/2019 Matlab Apostila Ufc
81/84
Apostila de MATLAB 7.3
Pgina 81 de 84
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)');
Exerccio 19- Calcule a convoluo das formas de onda5
( )
( ) cos(2.5 )
t x t e
h t t t
- =
= -
( )12
0
12 121112
0
1( ) ( ) ( ) ( )
12
12 11
t tt
C
t tt t
i t y t x h t d e e d
e e ee d
ll
l
l l l l
l
---
-
-- --
= = - = -
-= - =
0 10 20 30 40 50 60 70 80 90-0.07
-0.06
-0.05
-0.04
-0.03
-0.02
-0.01
0Convoluo
t(s)
i(A)
8/8/2019 Matlab Apostila Ufc
82/84
Apostila de MATLAB 7.3
Pgina 82 de 84
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 jwtz e= . Naforma geral a funo de transferncia H(z) a seguinte:
( )( )
( )
B zH z
A z=
-1 -2 -
0 1 2
-1 -2 -
0 1 2
...( )
...
z n
n
z z n
n
b b z b z bH z
a a z a a
+ + + +=
+ + + +
ButterDef: 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.
FreqzDef: 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=200Hz.
Projetar um filtro para fs=200 Hz. Usar filtro de 2a ordem, Butterworth. Filtrar o sinal. Plotar a resposta em freqncia.
8/8/2019 Matlab Apostila Ufc
83/84
Apostila de MATLAB 7.3
Pgina 83 de 84
% 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')
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.
8/8/2019 Matlab Apostila Ufc
84/84
Apostila de MATLAB 7.3
13. REFERNCIAS BIBLIOGRFICAS
[ 1 ] CARNAHAN, Brice, LUTHER, H. A. & WILKES, James O. Appliednumerical 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.
Recommended