Download - Matlab Apostila
-
UNIVERSIDADE FEDERAL DO CEAR
CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELTRICA
PROGRAMA DE EDUCAO TUTORIAL
Apostila de
Fortaleza CE
Maio / 2014
-
Apostila de Matlab 8.1
Page 2 of 132
Responsveis
A apostila de MATLAB de responsabilidade do Programa de Educao Tutorial do curso de
Engenharia Eltrica da Universidade Federal do Cear, tendo como principais responsveis desta
verso os bolsistas:
Alexcya Lopes Alexandre
Camila Tavares Vitoriano
Felipe Carvalho Sampaio
caro Silvestre Freitas Gomes
Jos Antonio de Barros Filho
Lucas Cordeiro Herculano
Lucas Rebouas Maia
Maria Yasmin Almeida Sampaio
Nestor Rocha Monte Fontenele
Ricardo Antnio de Oliveira Sousa Junior
Roberto Aaron Marques Braga
Tlio Naam Guimares Oliveira
-
Apostila de Matlab 8.1
Page 3 of 132
SUMRIO
1. PREFCIO .......................................................................................................................................... 6
2. APRESENTAO .............................................................................................................................. 7
2.1. Utilizando o HELP ...................................................................................................................... 7
3. FORMATAO.................................................................................................................................. 9
4. MATRIZES ....................................................................................................................................... 10
4.1. Declarao ................................................................................................................................ 10
4.2. Soma ......................................................................................................................................... 10
4.3. Multiplicao ............................................................................................................................ 11
4.4. Matrizes pr-Definidas .............................................................................................................. 12
4.5. Propriedades de matrizes .......................................................................................................... 13
4.6. Trabalhando com matrizes ........................................................................................................ 15
5. VETORES ......................................................................................................................................... 19
5.1. Declarao ................................................................................................................................ 19
5.2. Operaes.................................................................................................................................. 20
5.3. Sistemas de Coordenadas .......................................................................................................... 22
6. M-FILE .............................................................................................................................................. 25
6.1. Definio ................................................................................................................................... 25
6.2. Organizao .............................................................................................................................. 26
6.3. Operaes no M-File ................................................................................................................. 27
7. FUNES MATEMTICAS ........................................................................................................... 32
7.1. Funes Elementares ................................................................................................................ 32
7.2. Propriedades Fundamentais ...................................................................................................... 32
7.3. Nmeros Complexos ................................................................................................................. 33
7.4. Funes Trigonomtricas .......................................................................................................... 34
7.5. Aproximao Inteira ................................................................................................................. 36
8. GRFICOS ........................................................................................................................................ 38
8.1. Grficos Bidimensionais ........................................................................................................... 38
8.2. Grficos Tridimensionais .......................................................................................................... 43
-
Apostila de Matlab 8.1
Page 4 of 132
8.3. Configurao ............................................................................................................................. 47
9. MATEMTICA SIMBLICA .......................................................................................................... 58
10. OPERAES MATEMTICAS BSICAS .................................................................................... 60
10.1. Expresses Numricas .............................................................................................................. 60
10.2. Polinmios ................................................................................................................................ 60
10.3. Solucionando Equaes ou Sistemas ........................................................................................ 62
11. CLCULO DIFERENCIAL.............................................................................................................. 64
11.1. Limites ...................................................................................................................................... 64
11.2. Diferenciao ............................................................................................................................ 64
11.3. Integrao.................................................................................................................................. 65
11.4. Integrais definidas pela Regra Trapezoidal ............................................................................... 66
11.5. Integrais definidas pela Regra de Simpson ............................................................................... 66
11.6. Integrao Dupla ....................................................................................................................... 67
11.7. Integrao Tripla ....................................................................................................................... 67
11.8. Outras funes .......................................................................................................................... 68
12. SRIES NUMRICAS ...................................................................................................................... 70
12.1. Somatrio .................................................................................................................................. 70
12.2. Srie de Taylor .......................................................................................................................... 70
13. ANLISE DE SINAIS ...................................................................................................................... 72
13.1. Transformao de Varivel Independente................................................................................. 72
13.2. Funes Pr-definidas ............................................................................................................... 74
13.3. Convoluo ............................................................................................................................... 80
13.4. Equaes de Diferenas ............................................................................................................ 82
13.5. FFT (Transformada Rpida de Fourier) ................................................................................... 83
13.6. Filtros Digitais .......................................................................................................................... 86
14. CONTROLE ...................................................................................................................................... 90
15. SIMULINK ...................................................................................................................................... 105
15.1. Iniciando o Simulink ............................................................................................................... 105
15.2. Criando um modelo................................................................................................................. 106
15.3. Aspectos sobre a soluo dos sistemas ................................................................................... 108
-
Apostila de Matlab 8.1
Page 5 of 132
15.4. Modelagem de Sistemas ......................................................................................................... 110
16. GUI .................................................................................................................................................. 118
16.1. Introduo e Apresentao ...................................................................................................... 118
16.2. Ferramentas bsicas ................................................................................................................ 119
16.3. Ferramentas get e set ............................................................................................................... 127
16.4. Criando uma GUI .................................................................................................................... 129
17. REFERNCIAS BIBLIOGRFICAS ............................................................................................. 132
-
Apostila de Matlab 8.1
Page 6 of 132
1. PREFCIO
Esta apostila foi desenvolvida por alunos do Programa de Educao Tutorial (PET) do curso de
Engenharia Eltrica da Universidade Federal do Cear (UFC) para a realizao do Curso de MATLAB.
Com o intuito de promover uma introduo ao MATLAB que viesse a facilitar o desempenho dos
estudantes da graduao na realizao de seus trabalhos e na sua vida profissional, o PET elaborou este
Curso de MATLAB que est atualmente na dcima quinta edio. Durante as quinze edies foram
contemplados aproximadamente 700 estudantes dos mais variados cursos de Engenharia do Centro de
Tecnologia da UFC.
Devido sua boa repercusso o Curso de MATLAB foi premiado no XVII Encontro de Iniciao
Docncia nos Encontros Universitrios de 2008.
-
Apostila de Matlab 8.1
Page 7 of 132
2. APRESENTAO
O MATLAB (MATrix LABoratory) uma linguagem de alto desempenho para computao tcnica.
Integra computao, visualizao e programao em um ambiente de fcil uso onde problemas e solues
so expressos em linguagem matemtica. Usos tpicos:
Matemtica e computao;
Desenvolvimento de algoritmos;
Aquisio de dados;
Modelagem, simulao e prototipagem;
Anlise de dados, explorao e visualizao;
Construo de interface visual do usurio.
2.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, como mostrado na
Fig. 1.
Figura 1 - HELP do MATLAB sendo acessado pela barra de menu
Outra forma pela tecla de atalho F1. Uma terceira forma pelo boto da barra de acesso rpido,
posicionado logo acima da barra de Menu, de acordo com a Fig. 2.
-
Apostila de Matlab 8.1
Page 8 of 132
Figura 2 - HELP do MATLAB sendo acessado pelo boto START
Dando continuidade, quando se deseja obter informaes sobre uma dada funo, possvel
consultar diretamente no HELP ou pelo COMMAND WINDOW. Para isso, basta digitar help e em seguida
a funo requerida, de acordo com o exemplo abaixo:
>> 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.
Veja que as informaes sobre a funo dirac aparecem no prprio COMMAND WINDOW. Se for
necessrio consultar a pgina do HELP, basta utilizar o comando doc e em seguida o nome da funo. Por
exemplo:
>> doc dirac
Depois de efetuado este comando, ir aparecer a janela do HELP com o seguinte, Fig. 3.
Figura 3 - HELP da funo dirac
-
Apostila de Matlab 8.1
Page 9 of 132
3. FORMATAO
No MATLAB no h necessidade de declarar o tipo das variveis utilizadas no programa, mas o
usurio pode escolher qual o formato que vai ser utilizado. So usados os comandos mostrados na Tabela
1.
Tabela 1 - Formato das variveis
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
-
Apostila de Matlab 8.1
Page 10 of 132
4. MATRIZES
4.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] %cria a matriz A no seguinte formato %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 a concatenao 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 de
outras linguagens que usam o primeiro ndice como 0.
4.2. Soma
A soma de todos os elementos de uma matriz com um nmero feita da seguinte maneira:
>> c = [4 1 2 3; 3 4 4 5];
>> c+1
%ans =
% 5 2 3 4
% 4 5 5 6
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
-
Apostila de Matlab 8.1
Page 11 of 132
4.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 for desejado realizar outra operao matemtica (exceto a soma e a subtrao) entre os
elementos com mesmo ndice das matrizes deve-se colocar um ponto antes do operador. Observe os
exemplos abaixo:
>> a = [1 4 2; 7 8 5; 9 5 4];
>> b = [4 2 -5; 0 1 3; 8 -2 1];
>> c = a.*b
%c =
% 4 8 -10
% 0 8 15
% 72 -10 4
>> b./a
%ans =
% 4.0000 0.5000 -2.5000
% 0 0.1250 0.6000
% 0.8889 -0.4000 0.2500
>> a.^2
%ans =
% 1 16 4
% 49 64 25
% 81 25 16
Exerccio 1 - Declare as matrizes A, B e C abaixo:
7654321A 21181512963B
7
0
6
5
5
10
4
15
3
10
2
5
1
0C
Atravs das matrizes acima, determine as matrizes a seguir utilizando os comandos j mencionados.
7654D
4567E
4
7
5
6
6
5
7
4F
4
7
6
5
5
6
7
4
G
21
18
15
12
H
6
5I
3
10
2
5
1
0J
9
100
4
25
1
0K
10
99
5
24
2
0L
10
99
5
24
2
0M
-
Apostila de Matlab 8.1
Page 12 of 132
4.4. Matrizes pr-Definidas
ones
Definio: Esta funo gera uma matriz cujos valores so unitrios.
Sintaxe:
ones(n) Gera uma matriz quadrada de ordem n cujos termos so unitrios.
ones(m,n) Gera uma matriz m x n cujos termos so unitrios.
>> ones(2)
%ans =
% 1 1
% 1 1
zeros
Definio: Esta funo gera uma matriz cujos valores so nulos.
Sintaxe:
zeros(n) Gera uma matriz quadrada de ordem n cujos termos so nulos.
zeros(m,n) Gera uma matriz m x n cujos termos so nulos.
>> zeros(2)
%ans =
% 0 0
% 0 0
eye
Definio: 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
Definio: Calcula a matriz de Vandermonde a partir de um vetor dado.
Sintaxe:
-
Apostila de Matlab 8.1
Page 13 of 132
vander(A) Calcula a matriz de Vandermonde a partir de A
>> A = [1 2 3 4];
>> vander(A)
%ans =
% 1 1 1 1
% 8 4 2 1
% 27 9 3 1
% 64 16 4 1
rand
Definio: 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
4.5. Propriedades de matrizes
(apstrofo)
Definio: Calcula a matriz transposta.
Sintaxe:
A Gera a matriz transposta de A.
>> A = [1 1; 2 3];
>> A'
%ans =
% 1 2
% 1 3
Definio: Calcula o determinante de uma matriz.
Sintaxe:
det(A) Calcula o determinante da matriz A.
>> A = [1 1; 2 3];
>> det(A)
%ans =
% 1
-
Apostila de Matlab 8.1
Page 14 of 132
trace
Definio: 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
Definio: Determina a matriz inversa dada.
Sintaxe:
inv(A) Retorna a matriz inversa da matriz A.
>> A = [5 8; 4 9];
>> inv(A)
%ans =
% 0.6923 -0.6154
% -0.3077 0.3846
eig
Definio: Calcula os autovalores e autovetores de uma matriz.
Sintaxe:
eig(A) Retorna os autovalores de uma matriz quadrada A.
[a, b] = eig(A) Retorna em a uma matriz com os autovetores e, em b, uma matriz com os autovalores
associados.
>> A = [1 -1; 4 1];
>> [a,b] = eig(A)
%a =
% 0.0000 - 0.4472i 0.0000 + 0.4472i
% -0.8944 + 0.0000i -0.8944 + 0.0000i
%b =
% 1.0000 + 2.0000i 0.0000 + 0.0000i
% 0.0000 + 0.0000i 1.0000 - 2.0000i
Exerccio 2 - Resolva o seguinte sistema de equaes lineares:
20,26.4.2
64,21.2.6
20,13.5,1.2
32
321
321
xx
xxx
xxx
-
Apostila de Matlab 8.1
Page 15 of 132
4.6. Trabalhando com matrizes
size
Definio: Retorna as dimenses de uma matriz
Sintaxe:
[m,n] = size(A) Retorna, em m, o nmero de linhas e, em n, o nmero de colunas da matriz A.
>> A = [1 1; 2 3];
>> [m,n]=size(A)
%m =
% 2
%n =
% 2
find
Definio: Procura os elementos em uma matriz de tal modo a respeitar a lgica fornecida, retornando os
ndices que descrevem estes elementos.
Sintaxe:
ind = find(X) Retorna os ndices de elementos no-nulos na matriz X.
[row,col] = find(X, ...) Retorna, em row, uma matriz coluna com os ndices das linhas dos elementos
da matriz X e, em col, a matriz coluna contendo os ndices correspondentes s colunas dos elementos da
matriz X.
[row,col,v] = find(X, ...) Retorna, em row, uma matriz coluna com os ndices das linhas dos elementos
da matriz X , em col, uma matriz coluna contendo os ndices que descrevem as colunas dos elementos da
matriz X e, em v, uma matriz contendo os elementos de X.
>> A=[1 0; 0 3];
>> find(A)
%ans =
% 1
% 4
>> X = [3 2 0; -5 0 7; 0 0 1];
>> [r,c,v] = find(X>2);
>> [r c]
%ans =
% 1 1
% 2 3
Veja no ultimo caso acima que r e c retornam 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.
-
Apostila de Matlab 8.1
Page 16 of 132
sort
Definio: Retorna o vetor dado ou elementos de uma matriz em ordem crescente ou decrescente.
Sintaxe:
sort(A,dim) Retorna os elementos das colunas (dim = 1) ou da linha (dim = 2) da matriz A em ordem
crescente.
sort(A,mode) Retorna os elementos das colunas da matriz A em ordem crescente (mode = ascend) ou
em ordem decrescente (mode = descend).
>> A=[1 1; 0 3];
>> sort(A)
%ans =
% 0 1
% 1 3
fliplr
Definio: Espelha as colunas de uma matriz.
Sintaxe:
fliplr(A) Espelha as colunas da matriz A.
>> A = [1 2;3 4];
>> fliplr(A)
%ans =
% 2 1
% 4 3
flipud
Definio: Espelha as linhas de uma matriz.
Sintaxe:
flipud(A) Espelha as linhas da matriz A.
>> A = [1 2;3 4];
>> fliplr(A)
%ans =
% 3 4
% 1 2
Exerccio 3 - Crie um vetor A de 50 elementos aleatrios e em seguida crie a partir deste, outro vetor B
obedecendo aos seguintes critrios:
a. Conter somente os elementos de A maiores que 0.5;
b. Os elementos devem de B estar em ordem decrescente.
-
Apostila de Matlab 8.1
Page 17 of 132
Exerccio 4 - Realize as seguintes operaes no MATLAB, a partir das matrizes dadas, e interprete o
resultado.
1
10
6
6
2
8
7
9
5
A
6
1
7
B
8.3
2.9
9.4
5.4
4.7
1.8
3.1
1.2
5.5
C 014D
a. E = det ( A .I ) com = 6
b. F = A-1 . B
c. A \ B
d. A . F
e. BT . C
f. D . B A / A
Exemplo 1 - Dado o circuito da Fig. 4, calcule as tenses nos ns 1 e 2.
Figura 4 - Exemplo de circuito eltrico
>> i = [10/1; 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
-
Apostila de Matlab 8.1
Page 18 of 132
Os resultados obtidos podem ser confirmados por intermdio da Fig. 5.
Figura 5 - Formas de onda das tenses nos ns 1 e 2
-
Apostila de Matlab 8.1
Page 19 of 132
5. VETORES
5.1. Declarao
possvel trabalhar com vetores no MATLAB, cuja representao feita baseando-se numa matriz
linha. Por exemplo, para obter o vetor (1,3,8), basta iniciarmos com:
>> R = [1 3 8]
%G =
% 1 3 8
Portanto, todas as operaes se tornam possveis a partir do uso de funes apropriadas. importante
salientar que certas funes exigem a declarao de vetores por matriz coluna, entretanto, nada que uma
consulta no help para ajudar.
Uma operao bsica com vetores na determinao do nmero de elementos, a partir da funo
length, assim como no clculo do seu mdulo, usando a funo norm, ambas definidas abaixo. Logo
depois, sero dadas algumas funes que trabalham com vetores.
length
Definio: 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
norm
Definio: Retorna o mdulo do vetor.
Sintaxe:
norm(A) Calcula o mdulo do vetor A.
>> x = [0 5 1 7];
>> sqrt(0+5^2+1^2+7^2) %Forma Euclidiana
%ans =
% 8.6603
>> norm(x) %Usando norm
%ans =
% 8.6603
-
Apostila de Matlab 8.1
Page 20 of 132
5.2. Operaes
Quando se deseja calcular o produto vetorial (ou cruzado) de vetores, utiliza-se a funo cross,
apresentada a seguir:
cross
Definio: Calcula o produto vetorial entre A e B.
Sintaxe:
C = cross(A,B) Retorna, em C, o produto vetorial dos vetores tridimensionais A e B.
De modo anlogo, define-se a funo dot como a responsvel pelo produto escalar de dois vetores
dados, conforme definio a seguir.
dot
Definio: Determina o produto escalar entre dois vetores.
Sintaxe:
C = dot(A,B) Retorna, em C, o produto escalar dos vetores n-dimensionais A e B.
>> a = [1 7 3];
>> b = [5 8 6];
>> c = cross(a,b)
%c =
% 18 9 -27
>> d = dot(a,b)
%d =
% 79
Alm disso, qualquer outra operao possvel, como soma e subtrao, mas se deve atentar-se ao
fato de que ambos os vetores devem possuir a mesma dimenso.
Dando continuidade, sero definidas algumas funes que podero ser teis quando se trabalha com
vetores ou at mesmo com matrizes.
min
Definio: Retorna os valores mnimos de um vetor ou o das colunas de uma matriz.
Sintaxe:
min(A) Retorna em um vetor linha os menores 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
-
Apostila de Matlab 8.1
Page 21 of 132
[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=[0 3; 2 4];
>> [a,b]=min(A)
%a =
% 0 3
%b =
% 1 1
max
Definio: 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=[0 3; 2 4];
>> [a,b]=min(A)
%a =
% 2 4
%b =
% 2 2
sum
Definio: Calcula o somatrio dos elementos de um vetor ou o somatrio das colunas de uma matriz.
Sintaxe:
sum(A) Retorna a soma dos elementos de um vetor ou a soma das colunas de uma matriz.
>> A=[0 3; 2 4];
>> sum(A)
%ans =
% 2 7
prod
Definio: Calcula o produtrio dos elementos de um vetor ou o produtrio das colunas de uma matriz.
Sintaxe:
prod(A) Retorna o produto dos elementos do vetor A ou o produto das colunas da matriz A.
-
Apostila de Matlab 8.1
Page 22 of 132
>> A=[0 3; 2 4];
>> prod(A)
%ans =
% 0 12
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.
Exerccio 6 - Declare a matriz X no MATLAB e determine:
1
9
45
8
32
2
3
65
6
X
Um vetor Y que tenha o valor mnimo das trs primeiras colunas;
a. A soma dos elementos de Y;
b. Um vetor Z que tenha o valor mximo das trs primeiras linhas;
c. O produtrio dos elementos do vetor Z;
d. Calcule o mdulo dos elementos de cada linha.
5.3. Sistemas de Coordenadas
Existem funes, no MATLAB, que possibilitam as transformadas de coordenadas, conforme
listadas a seguir:
cart2pol
Definio: Converte do cartesiano para o polar/cilndrico. Observe a Fig. 6.
Sintaxe:
[theta,rho,z] = cart2pol(x,y,z) Converte o ponto de coordenadas cartesianas (x,y,z) para coordenadas
cilndricas (theta,rho,z).
[theta,rho] = cart2pol(x,y) Converte o ponto de cartesianas (x,y) para coordenadas polares (theta,rho).
Figura 6 - Transformao entre coordenadas cartesianas e polares/cilndricas
-
Apostila de Matlab 8.1
Page 23 of 132
pol2cart
Definio: Converte do sistema de coordenadas polares/cilndricas para o sistema cartesiano.
Sintaxe:
[x,y] = pol2cart(theta,rho) Converte o ponto de coordenadas polares (theta,rho) para coordenadas
cartesianas (x,y).
[x,y,z] = pol2cart(theta,rho,z) Converte o ponto de coordenadas cilndricas (theta,rho,z) para
coordenadas cartesianas (x,y,z).
cart2sph
Definio: Transforma do sistema de coordenadas cartesianas para o sistema de coordenadas esfricas.
Observe a Fig. 7.
Sintaxe:
[theta,phi,r] = cart2sph(x,y,z) Converte o ponto de coordenadascartesianas (x,y,z) para coordenadas
esfricas (theta,phi,r).
Figura 7 - Transformao entre coordenadas cartesianas e esfricas
sph2cart
Definio: Transforma do sistema de coordenadas esfricas para o sistema de coordenadas cartesianas.
Sintaxe:
[x,y,z] = sph2cart(theta,phi,r) Converte o ponto de coordenadas esfricas (theta,phi,r) para cartesianas
(x,y,z).
Um exemplo para o uso destas funes na utilizao das equaes de potenciais eltricos para
determinadas distribuies de carga que so simtricos a um sistema de coordenadas. Vejamos o exemplo
abaixo.
Exemplo 2 - Um dipolo eltrico formado colocando uma carga de 1 nC em (1,0,0) e uma outra carga de
-1 nC em (-1,0,0). Determine as linhas equipotenciais geradas a partir dessa configurao.
-
Apostila de Matlab 8.1
Page 24 of 132
>> [x,y,z] = meshgrid(-0.5:.012:0.5);
>> [teta,fi,r] = cart2sph(x,y,z);
>> v = (1e-9*0.2*cos(teta))./(4.*pi.*8.85e-12.*r.^2);
>> contourslice(x,y,z,v,[ -0.5:0.5],[-0.5:0.5],[-0.5:0.5]);
>> colormap hsv
>> grid on
Figura 8 - Linhas equipotenciais
-
Apostila de Matlab 8.1
Page 25 of 132
6. M-FILE
6.1. Definio
O M-File uma ferramenta do MATLAB que auxilia na criao de funes e scripts. Para criar um
novo M-File deve-se entrar na aba Home no menu New e escolher a opo script, Fig. 9, ou clicar em
New Script na aba Home:
Figura 9 - Criando um novo script pelo menu new
Ser aberto um editor de textos. Este mais um ambiente de programao do MATLAB. Os
comandos usados nesse editor so os mesmos do Command Window e podem ser utilizadas as variveis
j presentes no Workspace. Uma grande utilidade do M-File facilitar a vida do usurio, atravs da
execuo de scripts, que so arquivos que possuem uma lista de comandos que devem ser executados
seqencialmente (tambm chamados de procedimentos). Assim, quando se quiser executar mais de uma
vez um conjunto de comandos seqenciais relativamente grandes e trabalhosos para serem digitados, no
-
Apostila de Matlab 8.1
Page 26 of 132
ser necessrio digit-los um a um na Command Window, basta digitar os comandos no M-File, salvar o
arquivo e execut-lo. Segue um exemplo de script para calcular a distncia entre dois pontos:
p=[1 2];
q=[4 5];
temp=((p(1)-q(1))^2+(p(2)-q(2))^2);
distancia=sqrt(temp);
O primeiro passo para executar um script salv-lo. O M-File salva os arquivos do M-File no seu
diretrio padro, com a extenso .m. Para salvar deve-se entrar no menu File e escolher a opo Save.
Existem duas opes para se executar o script, a primeira clicar no boto Run, que est localizado na
Barra de Ferramentas Run do M-File, Fig. 10, em verde:
Figura 10 - Boto Run
A outra opo usar o atalho F5. As conseqncias da execuo so as mesmas que seriam
observadas se os comandos tivessem sido executados na Command Window: as variveis declaradas
estaro todas disponveis no Workspace e os resultados de cada operao estaro presentes na tela.
O M-FILE um ambiente de programao, portanto existem algumas funes, bem parecidas com as
da linguagem C, por exemplo, que podem ser utilizadas.
6.2. Organizao
Para uma melhor organizao podemos fazer comentrios utilizando o smbolo %, ou selecionando
o texto inteiro e teclando Crtl+R, ou %{ para abrir o comentrio por bloco e %} para fechar.
Podemos ainda utilizar o smbolo %% para que, no mesmo M-File, o usurio possa rodar apenas
algumas partes do programa, Fig. 11. Para rodar somente a parte selecionada, tecle Ctrl+Enter e para
rodar o programa inteiro clique em F5 ou no cone da Fig. 12.
-
Apostila de Matlab 8.1
Page 27 of 132
Figura 11 - Script com comentrios
Figura 12 - Iniciar simulao
6.3. Operaes no M-File
if
Definio: Operao condicional. Executa as funes contidas no comando. Pode ser utilizado com else,
que executa caso a condio declarada for falsa, e com elseif, que executa a funo caso outra condio
posteriormente declarada for verdadeira.
Para mais de uma condio, utiliza-se para e, &&, e para ou, ||.
Sintaxe:
if
[Comandos]
elseif
-
Apostila de Matlab 8.1
Page 28 of 132
[Comandos]
else
[Comandos]
end
for
Definio: Comando de iterao. Permite que um conjunto de instrues seja executado at que a
condio seja satisfeita.
Sintaxe:
for
[Comandos]
end
while
Definio: Comando de iterao. Executa um bloco de instrues enquanto a condio for verdadeira.
Sintaxe:
while
[Comandos]
end
switch
Definio: Operao condicional. Testa sucessivamente o valor da expresso dada e direciona para o caso
especificado. Funciona como um bloco de ifs
Sintaxe:
switch
case caso1
[Comandos]
case {caso1, caso2, caso3, ...}
[Comandos]
-
Apostila de Matlab 8.1
Page 29 of 132
otherwise (Caso no seja nenhuma das outras condies)
[Comandos]
end
>> a = 3;
>> switch a
>> case {2}
>> disp('Resposta um')
>> case {3}
>> disp('Resposta dois')
>> case '5'
>> disp('Resposta tres')
>> otherwise
>> disp('Resposta ?')
>> end
disp
Definio: Escreve no command window um texto ou o valor de um vetor, sem escrever seu nome.
Sintaxe:
disp(x)
input
Definio: 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
Definio: Quebra um lao for ou while.
Sintaxe:
break
-
Apostila de Matlab 8.1
Page 30 of 132
>> for i = 0:5
>> i
>> if i == 1
>> break
>> end
>> end
Command Window:
i =
0
i =
1
continue
Definio: Passa para o prximo lao de um for ou while.
Sintaxe:
continue
>> for i = 0:3
>> if i == 1 || i == 2
>> continue
>> end
>> i
>> end
Command Window:
i =
0
i =
3
Operadores Lgicos
Definio: Operadores lgicos
Tabela 2 - 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
Funes em M-File
-
Apostila de Matlab 8.1
Page 31 of 132
Outra importante funo do M-File a criao de funes. A declarao inicial da seguinte forma:
function [saida1, saida2, ...] = nome(entrada1, entrada2, ...)
%declarao do cdigo
...
Segue um exemplo:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Funo exemplo
% A funo recebe um vetor qualquer e retorna dois valores
% vetor2 = vetor multiplicado por 2
% e v1 = o valor do primeiro elemento do vetor
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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. importante lembrar de salvar o arquivo com mesmo nome da funo!
Na janela de comandos do MATLAB podemos colocar um vetor como exemplo:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>> A = [2 5 -8 4 1 6]
%A =
% 2 5 -8 4 1 6
>> [x,y]=funcao(A)
%x =
% 4 10 -16 8 2 12
%y =
% 2
function [vetor2, v1]= funcao(vetor)
vetor2=vetor*2; % multiplica o vetor por 2
v1=vetor(1); % retorna o primeiro elemento do vetor de entrada...
-
Apostila de Matlab 8.1
Page 32 of 132
7. FUNES MATEMTICAS
7.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, Tabela 3.
Tabela 3 - Funes matemticas elementares
Funo Descrio
log(X) Determina o logartmo natural de X
log10(X) Determina o logartmo de X na base 10
log2(X) Calcula o logartmo de X na base 2
exp(X) Determina a exopresso de ex
sqrt(X) Retorna a raiz quadrada de X
7.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
Definio: Determina o mximo divisor comum entre dois parmetros.
Sintaxe:
G = gcd(A,B) Retorna, em G, o mximo divisor comum entre A e B.
lcm
Definio: Determina o mnimo mltiplo comum entre dois parmetros.
Sintaxe:
G = lcm(A,B) Retorna, em G, o mnimo mltiplo comum entre A e B.
factorial
Definio: Retorna o fatorial de um argumento.
Sintaxe:
-
Apostila de Matlab 8.1
Page 33 of 132
factorial(N) Calcula o fatorial de N.
nchoosek
Definio: Desenvolve a fatorao binomial.
Sintaxe:
C = nchoosek(n,k) Retorna o nmero de combinaes de n tomada k a k.
primes
Definio: Devolve uma lista com uma quantidade desejada de nmeros primos.
Sintaxe:
p = primes(n) Devolve uma lista com n de nmeros primos.
mod
Definio: Calcula a congruncia entre dois argumentos.
Sintaxe:
M = mod(X,Y) Retorna, em M, a congruncia entre os argumentos X e Y.
rem
Definio: Determina o resto da diviso de dois argumentos.
Sintaxe:
R = rem(X,Y) Retorna, em R, o resto da diviso de X por Y.
perms
Definio: 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.
7.3. Nmeros Complexos
O MATLAB proporciona um conjunto de funes que auxilia o 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 definir a = 5 + 8i , faz-se:
-
Apostila de Matlab 8.1
Page 34 of 132
>> a = 5 +8i
%a =
% 5.0000 + 8.0000i
>> a = 5 + 8j
%a =
% 5.0000 + 8.0000i
H outra forma de definir um nmero complexo no MATLAB, atravs da funo complex. A sua
vantagem est na maior liberdade que se tem para alterar a parte imaginria, real, mdulo ou at mesmo a
fase do nmero, no ponto de vista computacional. A definio dessa funo descrita como:
complex
Definio: Retorna um nmero complexo a partir da sua parte real e da sua parte imaginria.
Sintaxe:
c = complex(a,b) Retorna, em c, o nmero complexo de parte real a e parte imaginria b.
Quando se deseja trabalhar com mdulo, ngulo de fase, conjugado, ou entre outros, tornam-se fceis
de serem calculados quando se utiliza a funo adequada. Na Tabela 4 sero denotadas algumas funes
que possibilitam isso.
Tabela 4 - Funes para nmeros complexos
Funo Descrio
abs(X) Retorna o mdulo do nmero complexo x
angle(X) Retorna a fase do comlexo X
conj(X) Calcula o conjugado do nmero complexo X
imag(X) Determina a parte imaginria de X
real(X) Determina a parte real de X
Exerccio 7 - Determine todos os parmetros intrnsecos ao nmero complexo 9e(5+3i)
7.4. Funes Trigonomtricas
Quando trabalhamos com trigonometria, o MATLAB dispe de funes que operam neste ramo
matemtico. Tabela 5 resume bem algumas funes que possuem este fim.
-
Apostila de Matlab 8.1
Page 35 of 132
Tabela 5 - Funes trigonomtricas.
Funo Descrio
cos(X) Cosseno do argumento X em radianos
sin(X) Seno do argumento X em radianos
tan(X) Tangente do argumento X em radianos
sec(X) Secante do argumento X em radianos
csc(X) Cossecante do argumento X em radianos
cot(X) Cotangente do argumento X em radianos
Veja acima que estas funes retornam um valor correspondente a um argumento em radianos.
Quando for desejado entrar com um argumento em grau, basta utilizar o sufixo d em cada funo. Por
exemplo, o seno de 30:
>> sind(30)
%ans =
% 0.5000
Entretanto, quando deseja calcular o arco correspondente a um valor pra uma dada funo, basta
utilizar o prefixo a diante as funes. Como exemplo, determinemos o arco-tangente de 1 em radianos:
>> atan(1)
%ans =
% 0.7854
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(
%ans =
% 10.0677
-
Apostila de Matlab 8.1
Page 36 of 132
A Tabela 6 resume bem o uso de sufixo e prefixo em funes trigonomtricas:
Tabela 6 - Sufixos e prefixos de funs trigonomtricas
Prefixo Sufixo Descrio Exemplo
a - Determina o arco de um valor atan
- d Determina o argumento em graus cosd
- h Determina a funo hiperblica sinh
7.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.
Abaixo segue uma lista de funes que tratam com aproximaes numricas.
round
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro mais prximo desses
elementos. Tambm vlido para nmeros complexos.
Sintaxe:
Y = round(X) Retorna, em Y, os inteiros mais prximos dos elementos de X.
ceil
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro imediatamente maior que
os respectivos elementos.
Sintaxe:
B = ceil(A) Retorna, em B, os inteiros imediatamente maiores que os elementos de A.
floor
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro imediatamente menor
que os respectivos elementos.
Sintaxe:
B = floor(A) Retorna, em B, os inteiros imediatamente menores que os elementos de A.
-
Apostila de Matlab 8.1
Page 37 of 132
fix
Definio: Arredonda os elementos de uma matriz ou de um vetor para o inteiro mais prximo de tal
modo que esteja em direo ao zero.
Sintaxe:
B = fix(A) Retorna, em B, os inteiros mais prximos, em direo ao zero, dos elementos de A.
-
Apostila de Matlab 8.1
Page 38 of 132
8. GRFICOS
8.1. Grficos Bidimensionais
ezplot
Definio: Plota a expresso simblica f(x) no domnio padro -2 ezplot('sin(x)')
Figura 13 - Grfico sin(x) gerado pela funo ezplot.
-
Apostila de Matlab 8.1
Page 39 of 132
plot
Definio: Plota as colunas de um vetor versus os ndices de cada elemento, se o vetor for real. Se for
complexo, plota a parte real pela parte imaginria de cada elemento. Observe a Fig. 14.
Sintaxe:
plot(X) Se X for 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;
>> plot(t,sin(t
Figura 14 - Grfico sin(t) gerado pela funo plot.
-
Apostila de Matlab 8.1
Page 40 of 132
line
Definio: Cria uma linha no grfico atual. Observe a Fig. 15.
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))
Figura 15 - Grfico ex gerado pela funo line.
-
Apostila de Matlab 8.1
Page 41 of 132
stem
Definio: Plota uma seqncia de dados discretos. Observe a Fig. 16.
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(
Figura 16 - Grfico ex gerado pela funo stem.
-
Apostila de Matlab 8.1
Page 42 of 132
compass
Definio: Plota vetores de componentes cartesianas a partir da origem de um grfico polar. Observe a
Fig. 17.
Sintaxe:
compass(U,V) Plota o vetor de componentes cartesianas U e V partindo da origem do grfico polar.
>> compass(2,3)
Figura 17 - Grfico polar gerado pela funo compass.
-
Apostila de Matlab 8.1
Page 43 of 132
8.2. Grficos Tridimensionais
ezplot3
Definio: Plota uma curva espacial de trs equaes paramtricas no domnio padro 0 < t < 2. Observe
a Fig. 18.
Sintaxe:
ezplot3(x,y,z) Plota a curva paramtrica x = x(t) , y = y(t ) e z = z(t) .
>> ezplot3('cos(t)','sin(t)','t')
Figura 18 - Grfico cos(t), sin(t), t gerado pela funo ezplot3.
-
Apostila de Matlab 8.1
Page 44 of 132
plot3
Definio: Plota tridimensionalmente um grfico. Observe a Fig. 19.
Sintaxe:
Plot3(X,Y,Z) Plota uma ou mais linhas no espao tridimensional atravs de pontos cujas coordenadas
so elementos dos vetores ou matrizes X,Y e Z.
>> >> t = 0:pi/50:10*pi;
>> plot3(cos(t),sin(t),t)
Figura 19 - Grfico cos(t), sin(t), t gerado pela funo plot3.
-
Apostila de Matlab 8.1
Page 45 of 132
ezsurf
Definio: Plota a superfcie de um grfico de uma funo de duas variveis no domnio padro -2 < x <
2 e -2 < y < 2. Observe a Fig. 20.
Sintaxe:
ezsurf(X,Y,Z) Plota a superfcie paramtrica x = x (s, t) , y = y (s, t) e z = z (s, t) no domnio -2 < s <
2 e -2 < t < 2
>> ezsurf('1/sqrt(x^2 + y^2)')
Figura 20 - Superfcie
gerada pela funo ezsurf.
-
Apostila de Matlab 8.1
Page 46 of 132
meshgrid
Definio: 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(-6:0.1:6,-6:0.1:6);
>> Z = 1./(sqrt(X.^2+Y.^2));
surf
Definio: Plota a superfcie de um grfico de uma funo de duas variveis cujo domnio determinado
pelo usurio. Observe a Fig. 21.
Sintaxe:
surf(X,Y,Z) Plota a superfcie paramtrica de Z em funo de X e Y.
>> surf(X,Y,Z)
Figura 21 - Superfcie
gerada pela funo surf.
-
Apostila de Matlab 8.1
Page 47 of 132
8.3. Configurao
text
Definio: Cria objetos de texto em locais especficos do grfico. Observe a Fig. 22.
Sintaxe:
text(x,y,string) Escreve string no local (x,y). Pode-se modificar string das mais diversas formas.
>> plot(0:pi/20:2*pi,sin(0:pi/20:2*pi)) >> text(pi,0,'\leftarrow sin(\pi)','FontSize',18)
Figura 22 - Grfico sin(x) gerado pela funo plot com texto gerado pela funo text.
-
Apostila de Matlab 8.1
Page 48 of 132
title
Definio: D um ttulo ao grfico. Observe a Fig. 23.
Sintaxe:
title(string) D o ttulo string ao grfico atual.
>> compass(2,3) >> title('Grfico Polar')
Figura 23 - Grfico polar gerado pela funo compass com ttulo gerado pela funo
-
Apostila de Matlab 8.1
Page 49 of 132
axis
Definio: Determina os limites dos eixos coordenados X, Y e Z. Observe a Fig. 24.
Sintaxe:
axis([xmin xmax ymin ymax zmin zmax]) define o eixo X de xmin a xmax, o eixo Y de ymin a yimax e
o eixo Z de zmin a zmax.
>> t = 0:pi/50:10*pi;
>> plot3(cos(t),sin(t),t)
>> axis([-1.5 1.5 -1.5 1.5 -1 34])
Figura 24 - Grfico cos(t), sin(t), t gerado pela funo plot3 com eixos ajustados pela funo axis.
-
Apostila de Matlab 8.1
Page 50 of 132
grid
Definio: Adiciona ou remove as linhas de grade em um grfico. Observe a Fig. 25.
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(cos(t),sin(t),t) >> grid on
Figura 25 - Grfico cos(t), sin(t), t gerado pela funo plot3 com linhas de grade geradas pela funo grid.
-
Apostila de Matlab 8.1
Page 51 of 132
hold
Definio: Determina se objetos so adicionados ao grfico ou se substituem o existente. Observe a Fig.
26.
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)
Figura 26 - Grficos sin(x) e ex gerados pela funo plot e ezplot respectivamente e colocados na mesma janela de grfico pela
funo hold.
-
Apostila de Matlab 8.1
Page 52 of 132
legend
Definio: Adiciona uma legenda ao grfico. Observe a Fig. 27.
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)')
Figura 27 - Grficos sin(x) e ex gerados pela funo plot com legenda.
-
Apostila de Matlab 8.1
Page 53 of 132
xlabel, ylabel, zlabel
Definio: D um ttulo aos eixos X, Y e Z. Observe a Fig. 28.
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(cos(t),sin(t),t) >> xlabel('x=cos(t)') >> ylabel('y=sin(t)') >> zlabel('z=t')
Figura 28 - Grfico cos(t), sin(t), t gerado pela funo plot3 com ttulos nos eixos coordenados.
-
Apostila de Matlab 8.1
Page 54 of 132
xlim, ylim, zlim
Definio: Estipula os limites dos eixos X,Y e Z. Observe a Fig. 29.
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(cos(t),sin(t),t) >> xlim([-1.5 1.5]) >> ylim([-1.5 1.5]) >> zlim([-1 34])
Figura 29 - Grfico cos(t), sin(t), t gerado pela funo plot3 com eixos ajustados pelas funes xlim, ylim e zlim.
-
Apostila de Matlab 8.1
Page 55 of 132
figure
Definio: Cria uma nova janela para plotar grficos.
Sintaxe:
figure Abre uma nova janela de grfico, definindo-a como janela atual.
subplot
Definio: Divide a janela do grfico em uma matriz definida pelo usurio, podendo trabalhar com
qualquer um. Observe a Fig. 30.
Sintaxe:
h = subplot(m,n,p) (ou 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') Se o grfico j existe, deleta o grfico especificado, substituindo por outro
grfico desejado.
>> subplot(2,1,1),ezplot('sin(x)') >> subplot(2,1,2),ezplot('exp(x)')
Figura 30 - Janela de grfico dividida atravs da funo subplot.
-
Apostila de Matlab 8.1
Page 56 of 132
Exerccio 8 - Plote as funes a seguir com os respectivos comandos e de acordo com cada item: 5sin (x)
plot; 4sin(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.
Exemplo 3 - Criao de arquivo em formato AVI. Observe as Fig. 31 e Fig. 33.
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);
Figura 31 - Janela de criao de arquivo em formato AVI do grfico sin(x).
-
Apostila de Matlab 8.1
Page 57 of 132
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);
Figura 32 - Janela de criao de arquivo em formato AVI de grfico polar.
-
Apostila de Matlab 8.1
Page 58 of 132
9. MATEMTICA SIMBLICA
H, em algumas situaes, a necessidade de se trabalhar com variveis simbolicamente, pois
possibilita uma viso mais geral sobre o resultado de um problema. Neste contexto, uma funo
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
Definio: Determina que os argumentos acompanhados tero carter simblico.
Sintaxe:
syms arg1 arg2 ...
sym
Definio: Define variveis, expresses e objetos como simblicos.
Sintaxe:
S = sym(A)
x = sym('x')
>> rho = sym('(1 + sqrt(5))/2')
%rho =
%5^(1/2)/2 + 1/2
>> syms x y >> f = x^2*y + 5*x*sqrt(y)
%f =
%x^2*y + 5*x*y^(1/2)
Em alguns casos, quando se desejar determinar quais as variveis simblicas numa expresso, usa-se
a funo findsym, que retorna os parmetros que so simblicos. Uma outra funo a subs, que substitui
a varivel declarada inicialmente simblica por uma outra ou mesmo por um nmero. Suas definies
esto listadas abaixo:
findsym
Definio: Determina as variveis simblicas em uma expresso.
Sintaxe:
findsym(S)
findsym(S,n)
-
Apostila de Matlab 8.1
Page 59 of 132
subs
Definio: Substituio simblica em expresso simblica ou em matriz.
Sintaxe:
R = subs(S)
R = subs(S, new)
R = subs(S,old,new)
R = subs(S,{old1,old2},{new1,new2})
Exerccio 9 - 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);
Determine os parmetros que so simblicos em f e em g. Substitua, em f, x por 2 e y por 3, e em g, a
por 4, t por 7 e b por 1.
Exerccio 10 - Implemente o mtodo das bissees sucessivas para a resoluo de equaes no lineares,
Fig. 33.
Figura 33 - Fluxograma do Mtodo das Bissees Sucessivas
-
Apostila de Matlab 8.1
Page 60 of 132
10. OPERAES MATEMTICAS BSICAS
10.1. Expresses Numricas
Uma curiosidade que o MATLAB dispe de um conjunto de funes que contribuem para a
fatorao, expanso, simplificaes e entre outros. A Tabela 6 resume bem cada funo.
Tabela 6 - Funes de fatrao, expanso, simplificao entre outros
Funo Definio
collect Reescreve a expresso como um polinmio
expand Expande a expresso em produtos e somas
horner Determina o fator em comum da expresso
factor Fatora o polinmio, se os coeficientes so racionais
simplify Simplifica as expresses, de forma mais geral.
compose Calcula a composio das funes
finverse Encontra a inversa funcional da funo.
O uso dessas funes bastante semelhante, por exemplo, dada a expresso:
x ( x ( x - 6 ) + 11 ) - 6
Para agrup-la de tal modo que possa ter uma organizao em relao ao grau do polinmio, faz:
>> syms x
>> collect(x*(x*(x-6)+11)-6)
%ans =
%x^3 - 6*x^2 + 11*x 6
Exerccio 11 - Verifique a relao trigonomtrica fundamental utilizando a funo simplify, logo aps,
determine a forma expandida de tan( x + y).
Exerccio 12 - Dado o polinmio f (x) = 2x2 + 3x - 5 e g(x) = x
2 - x + 7.
Determine os seguintes polinmios:
a. f(g(x))
b. g(f(x))
10.2. Polinmios
Agora trataremos com os polinmios. Para definir um polinmio no MATLAB, basta entrar com
uma matriz linha, nos quais os elementos dela representam os coeficientes do maior para o menor grau.
-
Apostila de Matlab 8.1
Page 61 of 132
Por exemplo, o polinmio 5x3 - 9x2 +
+
representado como p=[5 -9 8/5 4/7]. bom lembrar que o
polinmio pode ter elementos irracionais como, por exemplo, ou .
As principais funes destinadas para os polinmios so descritas a seguir.
poly
Definio: Determina os coeficientes do polinmio a partir de suas razes. Caso a entrada seja uma
matriz, este calcula o polinmio caracterstico da matriz.
Sintaxe:
p = poly(A)
p = poly(r)
>> y = [-2 -1]; %Declara um vetor linha [-2 -1]
>> z = poly(y) %z o polinmio (x+2)(x+1)=x+3x+2 que tem como
%razes -2 e -1
%z =
% 1 3 2
>> A = [1 5 3; 0 -2 9; 2 11 -1]; %Declara a matriz
>> poly(A) %calcula o seu polinmio caracterstico
%ans =
% 1.0000 2.0000 -106.0000 -5.0000
roots
Definio: Retorna um vetor coluna com a(s) raz(es) do polinmio fornecido.
Sintaxe:
r = roots(c)
>> c = [1 3 2]; %declara um vetor correspondente ao polinmio %x+3x+2 >> x = roots(c) %Calcula as razes desse polinmio, que so e -1 %Observe a oposio entre as funes roots e poly %x = % -2 % -1
polyval
Definio: Determina o valor do polinmio para uma determinada entrada. Se a entrada for uma matriz, a
funo retorna o valor do polinmio para cada elemento.
Sintaxe:
y = polyval(p,X) y receber os valores do polinmio desenvolvido para cada elemento da matriz X.
-
Apostila de Matlab 8.1
Page 62 of 132
>> polinomio = [1 3 2]; % polinmio=x4+5x3-2x2+8x+3.2 >> a = [1 -1; 3 2.83];
>> valores=polyval(polinomio,a) %valores =
% 15.2000 -10.8000
% 225.2000 187.2906
%valores(1,1) = a(1,1)4+5a(1,1)3-2 a(1,1)+8 a(1,1)+3.2
polyfit
Definio: Determina o polinmio interpolador com os pontos dados por x e y com o grau n. Os
coeficientes so retornados numa matriz linha.
Sintaxe:
p = polyfit(x,y,n)
>> x=[0:0.1:2.5]; >> y = sqrt(x); >> polinomio_interpolador = polyfit(x,y,3) >> pontos_interpoladores = polyval(polinomio_interpolador,x) >> plot(x,y,'color','r') >> hold on >> plot(x,pontos_interpoladores)
Exerccio 13 - So dados os pontos (1;-1), (2;-7), (5;-8) e (8;10).
Exerccio 14 - Determine o polinmio que interpola estes pontos;
Exerccio 15 - Calcule as suas razes e o esboce em um grfico;
Exerccio 16 - Destaque o ponto no qual se tem o valor do polinmio para x = 3.
10.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
Definio: Determina o valor do polinmio para uma determinada entrada. Quando a soluo
armazenada em uma varivel, o retorno dado em uma estrutura de dados.
Sintaxe:
solve(eq) Resolve a equao eq=0
solve(eq,var) Determina as solues de eq=0, em funo da varivel var.
-
Apostila de Matlab 8.1
Page 63 of 132
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
Definio: 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')
dsolve('eq1,eq2,...','cond1,cond2,...', 'v')
Exemplo 4 - Determine a soluo de
= - ax .
>> dsolve('Dx = -a*x')
Exerccio 17 - Eu tinha o triplo da idade que tu tinhas, quando eu tinha a idade que tu tens. Quando tu
tiveres a minha idade, a diferena de nossas idades ser de duas dcadas. Determine nossas idades
utilizando a funo solve.
Exerccio 18 - 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
. Considere todas as
unidades no S.I.
-
Apostila de Matlab 8.1
Page 64 of 132
11. CLCULO DIFERENCIAL
O MATLAB disponibiliza funes que facilitam a operao de certos clculos que so difceis para o
usurio. Por exemplo, a funo diff(), int() e limit() so algumas delas, nas quais diferenciam, integram ou
calculam o limite de uma funo de acordo com os parmetros oferecidos, respectivamente.
Vejamos essas e outras funes a seguir:
11.1. Limites
limit
Definio: 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:
>> limit('(abs(x^2)-1)/(x^2-1)',x,1,'right') %ans = % 1
11.2. Diferenciao
diff
Definio: 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;
-
Apostila de Matlab 8.1
Page 65 of 132
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) = , faz-se:
>> syms x; >> f = sqrt(log(x)+exp(x)); >> diff(f) %ans = %(exp(x) + 1/x)/(2*(exp(x) + log(x))^(1/2)) >> pretty(ans)
11.3. Integrao
int
Definio: 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) = , calcule a integral:
Indefinida
>> syms x >> y=sqrt(x^2+5); >> f=int(y,x) %f = %(5*asinh((5^(1/2)*x)/5))/2 + (x*(x^2 + 5)^(1/2))/2
Definida de 2 a 5
>> g = int(y,x,2,5) %g = %(5*log(5^(1/2) + 6^(1/2)))/2 - (5*log(5))/4 + (5*30^(1/2))/2 - 3
Caso a visualizao de f no seja satisfatria, usa-se a funo pretty, que transforma a sada de
acordo com a representao matemtica, conforme ilustra abaixo:
>> pretty(g)
-
Apostila de Matlab 8.1
Page 66 of 132
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)
11.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:
em que xi representa o ponto no final de cada trapzio, sendo x0 = a e xn = b . No MATLAB a funo que
possibilita integrao a partir deste mtodo o trapz, definida abaixo:
trapz
Definio: Determina a integrao de uma funo a partir da Regra do Trapzio.
Sintaxe:
Z = trapz(Y)
Z = trapz(X,Y)
11.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 denotada por:
A maioria das calculadoras programadas utiliza esta regra, que mais utilizada em termos
computacionais. No MATLAB, a funo encarregada para esse fim a quad, mostrada abaixo:
quad
Definio: Determina a integrao de uma funo a partir da Regra de Simpson.
Sintaxe:
-
Apostila de Matlab 8.1
Page 67 of 132
q = quad(fun,a,b)
q = quad(fun,a,b,tool) tool corresponde o erro que a integral retornar, sendo o default de 10-3
.
bom destacar que fun deve ser uma funo do tipo arquivo.m. Por exemplo, para calcular a integral
de y = e-x no intervalo de 0 a 3, faz-se o seguinte:
Primeiro, se cria o arquivo .m correspondente 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
11.6. Integrao Dupla
O MATLAB possui a funo dblquad que determina a integral dupla de uma funo, conforme
definio abaixo:
dblquad
Definio: 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
.
11.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
Definio: Determina a integrao tripla de uma funo.
Sintaxe:
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax)
-
Apostila de Matlab 8.1
Page 68 of 132
triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol) tol a preciso que deseja calcular, sendo o
default 10-6
.
11.8. Outras funes
gradient
Definio: 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.
divergence
Definio: 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 18 C. 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])
Veja que a funo quiver plota o que representaria o campo eltricodevido carga, Fig. 34.
-
Apostila de Matlab 8.1
Page 69 of 132
Figura 34 - Campo eltrico pela funo quiver
-
Apostila de Matlab 8.1
Page 70 of 132
12. SRIES NUMRICAS
12.1. Somatrio
Uma funo muito utilizada em Sries Numricas a symsum, que encontra o somatrio simblico
de uma expresso. A sua descrio segue abaixo:
symsum
Definio: 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 19 - Determine os seguintes somatrios:
a.
b.
12.2. Srie de Taylor
A Srie de Taylor definida como sendo:
Considerando P(x) como sendo o polinmio de Taylor, de ordem n, em torno do ponto x0, ento P(x)
o nico polinmio de grau no mximo n que aproxima localmente f em volta de x0 de modo que o erro
E(x) tenda a zero mais rapidamente que (x-x0)n, quando x x0.
O MATLAB dispe da funo taylor , conforme pode ser visto abaixo:
taylor
Definio: Expande em srie de Taylor.
Sintaxe:
-
Apostila de Matlab 8.1
Page 71 of 132
taylor(f) faz a aproximao pelo polinmio de Taylor at a quinta ordem para a funo simblica f.
taylor(f,n,v) retorna o polinmio de Taylor para a funo simblica f at o grau n-1 para a varivel
especificada por v.
taylor(f,n,v,a) retorna a aproximao de Taylor de f em torno do ponto a, que pode ser simblica ou
um valor numrico.
Por exemplo, calculando o polinmio de Taylor para a funo
, tem-se
>> syms x >> f = 1/(5+4*cos(x)) %f = %1/(5+4*cos(x)) >> T = taylor(f) %T = %1/9+2/81*x^2+5/1458*x^4+49/131220*x^6 >> pretty(T)
Exerccio 20 - Determine, pelo polinmio de Taylor de ordem 2, o valor aproximado de
-
Apostila de Matlab 8.1
Page 72 of 132
13. ANLISE DE SINAIS
13.1. Transformao de Varivel Independente
x(t) x(t + )
|| < 1 Expanso
|| > 1 Compresso
< 0 Reflexo
0 Deslocamento
Deslocamento no tempo:
>> clear, clc, clf >> x = -2:6; >> y = 2*x; >> n0 = input('Digite o valor de deslocamento, 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
Figura 35 - Propriedade de deslocamento no tempo.
-
Apostila de Matlab 8.1
Page 73 of 132
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
Figura 36 - Propriedade de reflexo.
Escalonamento:
>> clear, clc, clf >> x = -2:6; >> y = 2*x; >> a = input(' Digite o valor de escalonamento, 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
-
Apostila de Matlab 8.1
Page 74 of 132
Figura 37 - Propriedade de escalonamento.
13.2. Funes Pr-definidas
Impulso
[n] = 0, n 0
1, n 0
(t) = 0, t 0
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
-
Apostila de Matlab 8.1
Page 75 of 132
Command Window:
>> x = -2:7; >> y = impulso(x,3); >> stem(x,y)
Figura 38 - Funo impulso.
Degrau
u [n] = 0, n < 0
1, n 0
u (t) = 0, t < 0
1, t 0
function [u] = degrau(n,N) for k = 1:length(n) if n(k)
-
Apostila de Matlab 8.1
Page 76 of 132
Command Window:
>> n = -2:7; >> y = degrau(n,3); >> stem(n,y)
Exerccio 21 - 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)
Figura 39 - Grfico do item a.
-
Apostila de Matlab 8.1
Page 77 of 132
b. y[n] =
- u[n-3]
>> n = -20:20;
>> y = ((1/2).^(n)).*degrau(n,3);
>> stem(n,y)
Figura 40 - Grfico do item b.
c. y[n] = cos(0,5n) - u[n-4]
>> n = -20:20;
>> y = cos(0.5*pi*n).*degrau(n,4);
>> stem(n,y)
Figura 41 - Grfico do item c.
-
Apostila de Matlab 8.1
Page 78 of 132
d. y[n] = e2sen(n)
>> n = -20:20;
>> y = exp(2*(sin(n)));
>> stem(n,y)
Figura 42 - Grfico do item d.
e. y[n] = sen
>> x = -20:1:20; >> y = sinc(x/2); >> stem(x,y)
Figura 43 - Grfico do item e.
-
Apostila de Matlab 8.1
Page 79 of 132
bom salientar que nos exemplos anteriores foram dados exemplos de programas no qual se obtm
as funes impulso e degrau. Entretanto, o MATLAB tambm possui funes que possibilitam isso de
forma mais rpida, que so as funes dirac e a heaviside, conforme veremos a seguir:
dirac
Definio: Obtm a funo delta de dirac, ou seja, a funo impulso no intervalo determinado por x.
Sintaxe:
dirac(x)
>> x = -10:10; >> y = dirac(x-5); %Impulso no instante 5 >> stem(x,y)
Figura 44 - Impulso com a funo dirac.
heaviside
Definio: Determina a funo degrau no intervalo determinado por x.
Sintaxe:
heaviside(x)
-
Apostila de Matlab 8.1
Page 80 of 132
>> x = -10:10;
>> y = heaviside(x-5); %Degrau no instante 5
>> stem(x,y)
Figura 45 - Degrau com a funo heaviside.
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 22 - Verifique a integral de sen(x). (x-5)
13.3. Convoluo
A convoluo uma ferramenta matemtica que expressa a sada de um sistema de tempo, seja este
discreto ou contnuo, em funo de uma entrada pr-definida e da resposta ao impulso do sistema.
O MATLAB possui uma funo chamada de conv que realiza a convoluo de sinais de durao
finita. Por exemplo, sejam dois vetores x e h representando sinais. O comando y = conv(x, h) gera um
vetor y que denota a convoluo dos sinais x e y.
-
Apostila de Matlab 8.1
Page 81 of 132
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
Definio: 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,h)
%y =
% 2 7 6 -1 -2
Exemplo 10 - Determine os coeficientes do polinmio obtido ao multiplicar os polinmios 3x2 + 3x com
2x + 2 .
>> a = [3 3 0]; >> b = [2 2]; >> y = conv(a,b); %y = % 6 12 6 0
Logo, o polinmio obtido seria 6x3 + 12x
2 + 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);
-
Apostila de Matlab 8.1
Page 82 of 132
Figura 46 - Grfico de convoluo.
Exerccio 23 - Use o MATLAB para determinar a sada do sistema com entrada x[n] = 2{u[n + 2] - u[n -
12]} sabendo que a resposta ao impulso desse sistema h[n] = 0,9n {u[n - 2] - u[n - 13]}.
13.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
Definio: Expressa a descrio em equao de diferenas de um sistema em uma forma recursiva que
permita que a sada do sistema seja computada a partir do sinal de entrada e das sadas passadas.
Sintaxe:
y = filter(b,a,X)
y = filter(b,a,X,zi)
Veja acima que apareceu o parmetro zi, que determina a condio inicial de y. Este zi uma matriz
com as condies iniciais, sendo os valores passados de y.
-
Apostila de Matlab 8.1
Page 83 of 132
Exemplo 12 - Um exemplo clssico no uso de filter determinar a seqncia de Fibonacci, definida
como o nmero atual ser igual a soma dos dois nmeros anteriores. Em linguagem matemtica, tem-se
y[n] - y[n - 1] - y[n - 2] = 0 em que y a sada do sistema.
Veja que ele no depende de uma entrada, mas ao usarmos o filter, necessrio usar a entrada apenas
para definir o nmero de elementos da seqncia no qual se deseja obter, assim como um parmetro
indispensvel para o uso da funo filter.
Ser dado como condio inicial a matriz [1 0], correspondente a entrada no desejada y[-1] e y[-2],
indispensvel para obter os outros valores.
O cdigo do programa que pode ser implementado no M-file segue abaixo. Neste caso, se deseja
adquirir 20 valores.
>> a = [1, -1, -1];
>> b = [0];
>> x = ones(1,20);
>> y = filter(b,a,x,[1 0]);
Exerccio 24 - Determine, utilizando filter, a seqncia de Fibonacci.
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
Definio: Determina a resposta ao impulso de um sistema de equaes de diferenas.
Sintaxe:
[h,t] = impz(b,a)
[h,t] = impz(b,a,n)
O comando [h,t] = impz(b,a,n) avalia n valores da resposta ao impulso de um sistema descrito por
uma equao de diferenas. Os coeficientes da equao de diferenas esto contidos nos vetores b e a no
que se refere a filter. O vetor h contm os valores da resposta ao impulso e t contm os ndices de tempo
correspondentes.
13.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 frequncia para
o domnio do tempo.
-
Apostila de Matlab 8.1
Page 84 of 132
A Transformada de Fourier e sua inversa podem ser calculadas a partir das expresses abaixo,
respectivamente:
Onde 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 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 da Fig. 47, determine a resposta ao impulso e a corrente no capacitor
iC (t) quando a entrada x(t) igual a e-t.
Figura 47 - Circuito eltrico do Exemplo 13
Resoluo:
Clculo da resposta ao impulso:
Lei dos ns
i = iR + iC
i = iR + C
Em t = 0, i = (t) e iR = 0
-
Apostila de Matlab 8.1
Page 85 of 132
.(t) =
V(0) = V(0
+) =
0 =
+ C
Resoluo Eq. Diferencial V(t) =
.
i(t) = h(t) = C
= -
Para R = 40 k e C = 300 F h(t) = -
A
Clculo da convoluo analiticamente:
iC(t) = y(t) =
()h(t-)d =
-
d
=
.
d =
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)');
-
Apostila de Matlab 8.1
Page 86 of 132
Figura 48 - Grfico da resposta ao impulso do exemplo 13.
Exerccio 25 - Calcule a convoluo das formas de onda:
x(t) = e-5t
e h(t) = cos(2,5t) t
13.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 forma geral a funo de transferncia H(z)
a seguinte:
H(z) =
H(z) =
butter
Definio: Determina os coeficientes de um filtro Butterworth. Esse filtro pode ser passa baixa, passa
alta, passa banda, rejeita banda.
Sintaxe:
-
Apostila de Matlab 8.1
Page 87 of 132
[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
Definio: 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 coeficie