SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
Breve Introdução ao Matlab
1. Comandos / Funções
help help, help, clear; disp, length, size, log10, log, exp, sin, sinh, atan, abs, angle
cart2pol, pol2cart, input, eval, save, saveas, load.
2. Round, Fix, Floor, Ceil, Rem
r=3.567; rr=round(r); % 4 r= -3.567; rr=round(r); % -4
r=3.567; rf=fix(r); % 3 r= -3.567; rf=fix(r); % -3
r=3.567; rl=floor(r); % 3 r= -3.567; rl=floor(r); % -4
r=3.567; rf=ceil(r); % 4 r= -3.567; rf=ceil(r); % -3
r=rem(8,3); % 2 r=rem(8,-3); % 2 r=rem(-8,3); % -2
3. Números pseudo-aleatórios
r = rand; % r ε [0 1]
m = rand(1,2); % [0.2311 0.6068]
4. Representação de matrizes
a=[2 3 5;1 4 7]; % a(2x3) 1ª linha: 2 3 5 2ª linha: 1 4 7
b=[1 4;-2 3;-1 5] % b(3x2)
c=a*b; % c(3x3)
Matriz identidade eye(n) ou eye(n,n)
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
>> eye(3,2)
ans =
1 0
0 1
0 0
Operações diversas
dc=det(c);
nc=norm(c); %o mesmo que norm(c,2), norma euclidiana
trc=trace(c); %soma dos elementos da diagonal principal
wc=eig(c); % auto-valores de c
[vc wc]=eig(c) % as colunas de vc são os auto-vetores de c
d=c^(-1); %matriz inversa de c
4.1 Representação de vetores coluna
a=[2;3;5] % a(3x1) ou a=[2 3 5]';
b=[1;2;4] % b(3x1)
Produto escalar pe=<a, b>
Pe = a'*b = Σi ai bi
Obs.: a' representa a transposta do vetor a. Se o vetor a
contiver uma parte imaginária, a' será o conjugado transposto de a.
Operações elemento a elemento
m=a.*b; % m=[2 6 20]'
q=a./b; % q=[2 1.5 1.25]
t=a.^3; % t=[8 27 125]
a=[4 9;16 25]; s1=a.^(1/2); s2=sqrt(a); % s1=s2=[2 3;4 5]
u=a^(1/2); % u*u=a
4.2 Representação de vetores linha
x=2:0.5:4; % x=[2 2.5 3 3.5 4]
x=2:4 % x=[2 3 4];
4.3 Um programa exemplo
clear;
[teta r]=cart2pol(3,4);
%teta=0.9273 r=5 z=3+4*j ou z=5exp(j0.9273)
r=10*(2*rand-1);
disp(['número aleatório entre -10 e 10: ' num2str(r)]);
m=rand(3,2); nm=norm(m); cm=length(m); % cm=3
norma2=sqrt(max(abs(eig(m'*m))));
n=input('Entre com o valor de n: ');
a=rand(n);
[nl nc]=size(a);
for i=1:nl,
disp(['linha ' num2str(i) ' da matriz a: '
num2str(a(i,:),2)]);
end;
Resultados
>> iml
número aleatório entre -10 e 10: -1.3419
Entre com o valor de n: 2
linha 1 da matriz a: 0.38 0.68
linha 2 da matriz a: 0.78 0.46
>> [nm norma2]
ans = 1.2289 1.2289
5. Representação de polinômios
p=[3 15 18]; % p=3s^2+15s+18
Operações diversas com polinômios
r=roots(p); % r = [-3.0000; -2.0000]
p1=[1 2]; p2=[1 3]; p3=[1 0];
p12=conv(p1,p2]; %p12=[1 5 6] %convolução discreta
p123=conv(conv(p1,p2),p3); % p123=[1 5 6 0]
Convolução discreta
Seja x[n] a entrada de um SLIT cuja resposta ao impulso seja h[n] abaixo.
Determine a saída, y[n], deste sistema.
n -2 -1 0 1 2 3 4
x[n] 0 0 2 3 -2 0 0
h[n] 0 1 2 1 0 0 0
y[n] 0 2 7 6 -1 -2 0
Comandos Matlab:
x=[2 3 -2]; h=[1 2 1]; y=conv(x,h); % [2 7 6 -1 -2]
Determinação do índice do 1º elemento não nulo de y, inn(y) = inn(x) + inn(h):
inn(y) = 0 – 1 = -1
Assim, y[-1]=2, y[0]=7, …
n_elem(y) = n_elem(x) + n_elem(h) -1 = 3 + 3 – 1 = 5
Se representarmos x[n]=2δ[n] + 3δ[n-1] - 2δ[n-2], teremos,
y[n]=2h[n] + 3h[n-1] – 2h[n-2]
n -2 -1 0 1 2 3 4
2h[n] 0 2 4 2 0 0 0
3h[n-1] 0 0 3 6 3 0 0
-2h[n-2] 0 0 0 -2 -4 -2 0
y[n] 0 2 7 6 -1 -2 0
Comandos Filter e Filtic
Com os comandos Filter e Filtic podemos obter a resposta ao impulso, h[n], a
resposta de estado nulo, ye0[n], e de entrada nula, y0[n].
ye0 = filter(b,a,x) (1)
y0 = filter(b,a,x,zi) zi = filtic(b,a, yi) (2)
b = [b0 b1 … bM], a=[1 a1 … aN] são os coeficientes da Equação Linear a
Diferenças na forma com o operador de atraso:
y[n] + a1y[n-1] + … + aNy[n-N] = b0x[n] + b1x[n-1] + + … bMx[n-M]
x: entrada em (1), CI nulas
Em (2) a entrada x é nula e zi é obtida pelo comando filtic, a partir das CI
yi = [y[-1] y[-2] … y[-N]]
Exemplo:
Seja y[n] + 2/15 y[n-1] – 1/15 y[n-2] = x[n]
raízes características: γ1 = -1/3 γ2 = 1/5 Assintot. Estável BIBO Estável
>> a = [1 2/15 -1/15]; b=1;
% Determinação da Resposta ao Impulso
>> impulso = [1 0 0 0 0]; h = filter(b,a,impulso);
% h = [1.0000 -0.1333 0.0844 -0.0201 0.0083] h[0] = 1 h[1] = -0,1333, …
Calculando a Resposta ao Impulso, h[n] = bN / aN δ[n] + yc[n] u[n], obtemos
h[n] = 3/8 (1/5)n
+ 5/8 (-1/3)n
% Determinação da Resposta de estado nulo, x[n] = (1/2)n
u[n]
>> x=(1/2).^[0:10]; ye0 = filter(b,a,x);
% ye0 = [1.0000 0.4667 0.2678 …] Resposta de Estado Nulo
Calculando a Resposta de Estado Nulo, ye0[n] = h[n] * x[n], obtemos
ye0[n] = (1/2)n
+1/4 ((-1/3)n
– (1/5)n
)
% Determinação da Resposta de Entrada Nula
Sejam as CI yi=[1 1];
>> x=zeros(1,7); zi=filtic(b,a,yi); y0=filter(b,a,x,zi);
% y0 = [-0.0667 0.0756 -0.0145 0.0070 -0.0019 0.0007 -0.0002]
Calculando a Resposta de Entrada Nula, obtemos
y0[n] = 1/10 (1/5)n
– 1/6 (-1/3)n
Verifiquem estes resultados.
Resolvendo Equações a Diferenças
(E2
+ 5/6 E + 1/6) y[n] = (E+1/4) x[n] (1)
y[n+2] + 5/6 y[n+1] + y[n]/6 = x[n+1] + x[n]/4 (2)
y[n] + 5/6 y[n – 1] + y[n – 2]/6 = x[n – 1] + x[n – 2]/4 (3)
Resposta ao Impulso
h[n] = bN / aN δ[n] + yc[n] u[n]
De (2), N=2, a2 = 1/6 b2 = 1/4 Q(γ) = γ2+5/6 γ + 1/6 = 0
h[n] = 3/2 δ[n] + (C1 (-1/2)n
+ C2 (-1/3)n
) u[n] (4)
h[0], h[1] são encontrados em (2):
h[n+2] + 5/6 h[n+1] + h[n]/6 = δ[n+1] + δ[n]/4 (2)
n=-2 h[0] = 0
n=-1 h[1] = 1 (hipótese de causalidade aplicada)
Levando os valores de h[n] calculados acima em (4), determinamos C1 e C2
h[n] = 3/2 δ[n] + (-3 (-1/2)n
+ 3/2 (-1/3)n
) u[n] (4)
Um cálculo iterativo de h[n] é possível, continuando a atribuir valores para n em
(2), procedimento facilmente aplicável, usando-se Matlab, tomando-se o cuidado
com os indices dos vetores. Como a ordem do sistema é dois, vamos estabelecer
o seguinte mapeamento: h[n] h[n+3]. Assim, as condições impostas pela
causalidade h[-1]=h[-2]=0 vão ser traduzidas como h[2]=h[1]=0 e o primeiro valor a
ser calculado, h[0], sera, desta forma, h[3]. Procedimento idêntico deve ser
aplicado ao sinal δ[n]. Sabemos que δ[n] =1, para n=0 e zero para n≠0. Isto será
traduzido pelo vetor [0 0 1 0 0 0] correspondendo a n = [1 2 3 4 5 6]. O instante
zero passa a ser n=3. Um possível código Matlab é:
clear;
h=[0 0];d=[0 0 1 0 0 0 0 0 0 0]; %d é o sinal impulso
for n=1:9,
h(n+2)=-5*h(n+1)/6-h(n)/6+d(n+1)+d(n)/4;
end;
%h = [ 0 0 0 1.0000 -0.5833 0.3194 -0.1690 0.0876 -0.0448]
%n = [-2 -1 0 1 2 3 4 5 6 ]
>> n=1:6; h = -3*(-0.5).^n+1.5*(-1/3).^n
%h = [ 1.0000 -0.5833 0.3194 -0.1690 0.0876 -0.0448]
Lembrando que h[n] = 3/2 δ[n] + (-3 (-1/2)n
+ 3/2 (-1/3)n
) u[n] (4), vemos que
acrescentando a primeira parcela no cálculo de h acima, encontraremos h[0] = 0.
Para determinar a resposta total, partimos de (2), considerando as condições
iniciais y[-2]=1, y[-1]=2 e um degrau como sinal de entrada. A implementação é
idêntica: y[-2]=1, y[-1]=2 são traduzidos por y[1]=1, y[2]=2. O degrau de entrada é
representado pelos valores x[1] = x[2] = 0, x[3] = x[4] … = 1 no código Matlab
abaixo.
clear;
y=[1 2];x=[0 0 1 ones(1,7)]; %x é o sinal degrau unitário
for n=1:9,
y(n+2)=-5*y(n+1)/6-y(n)/6+x(n+1)+x(n)/4;
end;
%y = [ 1 2 -1.8333 2.1944 -0.2731 1.1119 0.3690 0.7572 0.5575]
%n = [-2 -1 0 1 2 3 4 5 6 ]
Estes valores correspondem à soma da resposta de entrada nula, yo[n], e com a
resposta de estado nulo yeo[n].
yo[n] = (-7/2 (-1/2)n
+ 5/3 (-1/3)n
) u[n]
yeo[n] = (5/8 – (-1/2)n
+ 3/8 (-1/3)n
) u[n]
ytotal[n] = (5/8 –9/2 (-1/2)n
+ 49/24 (-1/3)n
) u[n]
Uso dos Comandos Filter e Filtic para determinar yo[n], yeo[n] e yt[n]
Atenção: use a equação com operador de atraso!
y[n] + 5/6 y[n – 1] + y[n – 2]/6 = x[n – 1] + x[n – 2]/4 (3)
a=[1 5/6 1/6];b=[0 1 1/4];x=[1 1 1 1 1 1 1];
yeo=filter(b,a,x);
x0=zeros(1,7); yi=[2 1]; zi=filtic(b,a,yi);
yo=filter(b,a,x0,zi);
yt=yeo+yo;
Tabela de Resultados obtidos com os Comandos Filter e Filtic
n 0 1 2 3 4 5 6
yo[n] -1.8333 1.1944 -0.6898 0.3758 -0.1982 0.1025 -0.0524
yeo[n] 0 1 0.4167 0.7361 0.5671 0.6547 0.6099
yt[n] -1.8333 2.1944 -0.2731 1.1119 0.3690 0.7572 0.5575
6. Gráficos
plot, subplot, semilogx, semilogy, loglog, bode, nyquist, freqresp
subplot, xlabel, ylabel, text, title, figure, legend, clf, grid, axis, freqz
stem, inline.
Seja representar o sinal abaixo x1(t) através de operações de deslocamento,
mudança de escala de tempo do sinal x(t).
Uma representação possível é x1(t) = x(t/2) + x(0,5t - 1) + x(-0,5t + 2) + x(5 - t) cuja
representação no Matlab é dada abaixo.
>> x=inline('t.*((t>=0) & (t<=1))','t');
>> t=-1:0.01:6; x1=x(t/2)+x(0.5*t-1)+x(-0.5*t+2)+x(5-t);
>> x1(501)=1; x1(701)=1; plot(t,x1,’r.’);grid;
1
t
1
x1(t)
t
5
42
1
x(t)
-1 0 1 2 3 4 5 6
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
t
x1
7. Sinais e Sistemas (Lineares)
step, impulse, heaviside, dirac, tf, ss, ss2tf, ss2ss, zpk, lsim, fft, ifft
Vetor de uns, zeros
ones(3,2) zeros(3,2)
1 1 0 0
1 1 0 0
1 1 0 0
Representando o sinal degrau (tempo discreto)
u[n]:
n = -10:19; x=[zeros(1,10) ones(1,20)]; plot(n,x,’r.’); grid; (ou stem(n,x))
u[n-2]:
n = -10:19; x=[zeros(1,12) ones(1,18)]; plot(n,x,’r.’); grid; (ou stem(n,x))
Representando o sinal impulso (tempo discreto)
δ[n]:
n = -10:20; y=[zeros(1,10) 1 zeros(1,20)]; plot(n,y,’r.’); grid; (ou stem(n,y))
δ[n+3]:
n = -10:20; y=[zeros(1,7) 1 zeros(1,23)]; plot(n,y,’r.’); grid; (ou stem(n,y))
Cálculo dos coeficientes da Série de Fourier de Tempo Discreto
Dado um sinal x[n], periódico e discreto, os coeficientes da Série de Fourier de
Tempo Discreto, Dr, podem ser obtidos com o comando fft. Para tal, represente o
sinal x[n], n=0 ... N -1, onde N é o período.
Exemplo:
Seja o sinal x[-1]=1, x[0]=0, x[1]=3, x[2]=2, x[n+4]=x[n]. Assim, N=4 e x[3]=1.
>> x=[0 3 2 1]; D=fft(x)/4;
Resposta:
D = [1.5 -0.5 – 0.5i -0.5 -0.5 + 0.5i]
No caso da Série de Fourier de Tempo Discreto Inversa, isto é, para obter o sinal
x[n] a partir do coeficientes Dr, o comando é ifft: x=ifft(D) * N.
8. Expansão em Fraçoes Parciais
1) >> n=[1 5]; d=[1 5 6];
>> sys=tf(n,d);[r p k]=residue(n,d);
>> sys
Transfer function:
s + 5
-------------
s^2 + 5 s + 6
r =
-2.0000
3.0000
p =
-3.0000
-2.0000
k =
[]
2) >> n=[1 3 -1 -5] d=[1 5 6]
>> sys=tf(n,d);[r p k]=residue(n,d);
Transfer function:
s^3 + 3 s^2 - s - 5
-------------------
s^2 + 5 s + 6
r =
2.0000
1.0000
p =
-3.0000
-2.0000
k = 1 -2
A Função de Transferência é imprópria: sys=(s^3+3s^2-s-5)/(s^2+5s+6)
sys = s-2 + (3s+7)/(s^2 + 5 s + 6)
sys = s-2 + 2/(s+3) + 1/(s+2)
3) >> n=[1 2]; d=[1 7 11 5]; %d=(s+5)(s+1)^2
>> sys=tf(n,d);[r p k]=residue(n,d);
r =
-0.1875
0.1875 --> pólo simples 1
0.2500
p =
-5.0000
-1.0000 --> pólo simples 1
-1.0000
k = []
sys = (s+2)/((s+1)^2(s+5)) = 0.1875/(s+1) + 0.25/(s+1)^2 - 0.1875/(s+5)
4) >> n=[2 13 35];d=[1 11 55 125]; %d=(s+5)(s^2+6s+25)
>> sys=tf(n,d);[r p k]=residue(n,d);
r =
0.5000 + 0.1250i
0.5000 - 0.1250i
1.0000
p =
-3.0000 + 4.0000i
-3.0000 - 4.0000i
-5.0000
k = []
sys = (2s^2+13s+35)/((s+5)(s^2+6s+25))=1/(s+5) + (1/2+j/8)/(s+3+4j)
sys = 1/(s+5) + (1/2 - j/8)/(s + 3 + 4j) + (1/2 + j/8)/(s + 3 - 4j)
sys = 1/(s+5) + (s+2)/(s^2+6s+25) = 1/(s+5) + (s+2)/((s+3)^2+16)
Quando a fração envolve pólos complexos conjugados, é mais conveniente
expandir da forma abaixo, visando a transformada inversa.
(s+a) A Bs+C
----------------- = ------- + ----------
(s+b)((s+c)^2+D) (s+b) ((s+c)^2+D)
9. Matlab Simbólica
syms;
laplace, ilaplace, fourier, ifourier, eval, simplify, pretty, int.
10. Dica para obter o Erro na Aproximação de Funções
O sinal x(t), uma onda quadrada, definida de 0 a 2π, pode ser escrito usando a
função degrau unitário, heaviside(t), em Matlab:
>> syms t;
>> x = (heaviside(t) - heaviside(t-pi)) – …
Uma aproximação de x(t) pode ser
>> y = 4*(sin(t) + sin(3*t)/3 + sin(5*t)/5)/pi;
Calcula-se o erro e=x-y, o erro quadrático e2=e.*e, a seguir a energia do erro E
>> E=int(e2,0,2*pi); % veja o resultado ???
>> Ef=eval(E); % resultado apresentável (tabela 6.3)
Para obter os cinco primeiros valores da tabela, pode-se usar o comando for.

Mais conteúdo relacionado

Mais procurados

Exercícios Resolvidos: Reta normal
Exercícios Resolvidos: Reta normalExercícios Resolvidos: Reta normal
Exercícios Resolvidos: Reta normalDiego Oliveira
 
Lista de exercícios 9
Lista de exercícios 9Lista de exercícios 9
Lista de exercícios 9Carlos Campani
 
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 8
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 8Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 8
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 8Bowman Guimaraes
 
Funções trigonométricas
Funções trigonométricasFunções trigonométricas
Funções trigonométricasCarlos Campani
 
EQUAÇÃO EXPONENCIAL - Conceito e resolução
EQUAÇÃO EXPONENCIAL - Conceito e resoluçãoEQUAÇÃO EXPONENCIAL - Conceito e resolução
EQUAÇÃO EXPONENCIAL - Conceito e resoluçãobetontem
 
Exercícios Resolvidos: Equação da reta tangente
Exercícios Resolvidos: Equação da reta tangenteExercícios Resolvidos: Equação da reta tangente
Exercícios Resolvidos: Equação da reta tangenteDiego Oliveira
 
Aula 7 - Funções Logarítmicas, Exponenciais e Trigonometricas
Aula 7 - Funções Logarítmicas, Exponenciais e TrigonometricasAula 7 - Funções Logarítmicas, Exponenciais e Trigonometricas
Aula 7 - Funções Logarítmicas, Exponenciais e TrigonometricasTurma1NC
 
Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...
Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...
Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...Carlos Campani
 
Lista de exercícios 2 - Cálculo
Lista de exercícios 2 - CálculoLista de exercícios 2 - Cálculo
Lista de exercícios 2 - CálculoCarlos Campani
 
Funções exponencial e logarítmica
Funções exponencial e logarítmicaFunções exponencial e logarítmica
Funções exponencial e logarítmicaCarlos Campani
 
Lista de exercícios 5 - Cálculo
Lista de exercícios 5 - CálculoLista de exercícios 5 - Cálculo
Lista de exercícios 5 - CálculoCarlos Campani
 
Cadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linhaCadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linhaBowman Guimaraes
 
Exercícios resolvidos de máximo e mínimo de função
Exercícios resolvidos de máximo e mínimo de funçãoExercícios resolvidos de máximo e mínimo de função
Exercícios resolvidos de máximo e mínimo de funçãoDiego Oliveira
 
Lista de exercícios 6 - Mat Elem
Lista de exercícios 6 - Mat ElemLista de exercícios 6 - Mat Elem
Lista de exercícios 6 - Mat ElemCarlos Campani
 

Mais procurados (20)

Exercícios Resolvidos: Reta normal
Exercícios Resolvidos: Reta normalExercícios Resolvidos: Reta normal
Exercícios Resolvidos: Reta normal
 
Lista de exercícios 9
Lista de exercícios 9Lista de exercícios 9
Lista de exercícios 9
 
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 8
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 8Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 8
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 8
 
Funções trigonométricas
Funções trigonométricasFunções trigonométricas
Funções trigonométricas
 
EQUAÇÃO EXPONENCIAL - Conceito e resolução
EQUAÇÃO EXPONENCIAL - Conceito e resoluçãoEQUAÇÃO EXPONENCIAL - Conceito e resolução
EQUAÇÃO EXPONENCIAL - Conceito e resolução
 
Dicas ufsc-ricardinho
Dicas ufsc-ricardinhoDicas ufsc-ricardinho
Dicas ufsc-ricardinho
 
Exercícios Resolvidos: Equação da reta tangente
Exercícios Resolvidos: Equação da reta tangenteExercícios Resolvidos: Equação da reta tangente
Exercícios Resolvidos: Equação da reta tangente
 
Aula 7 - Funções Logarítmicas, Exponenciais e Trigonometricas
Aula 7 - Funções Logarítmicas, Exponenciais e TrigonometricasAula 7 - Funções Logarítmicas, Exponenciais e Trigonometricas
Aula 7 - Funções Logarítmicas, Exponenciais e Trigonometricas
 
Integração cálculo 4
Integração cálculo 4Integração cálculo 4
Integração cálculo 4
 
Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...
Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...
Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...
 
lista-de-exercicios-funcao-exponencial
lista-de-exercicios-funcao-exponenciallista-de-exercicios-funcao-exponencial
lista-de-exercicios-funcao-exponencial
 
Lista de exercícios 2 - Cálculo
Lista de exercícios 2 - CálculoLista de exercícios 2 - Cálculo
Lista de exercícios 2 - Cálculo
 
Funções exponencial e logarítmica
Funções exponencial e logarítmicaFunções exponencial e logarítmica
Funções exponencial e logarítmica
 
Lista de exercícios 5 - Cálculo
Lista de exercícios 5 - CálculoLista de exercícios 5 - Cálculo
Lista de exercícios 5 - Cálculo
 
Cadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linhaCadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linha
 
Exercícios resolvidos de máximo e mínimo de função
Exercícios resolvidos de máximo e mínimo de funçãoExercícios resolvidos de máximo e mínimo de função
Exercícios resolvidos de máximo e mínimo de função
 
Regra da cadeia
Regra da cadeiaRegra da cadeia
Regra da cadeia
 
Lista de exercícios 6 - Mat Elem
Lista de exercícios 6 - Mat ElemLista de exercícios 6 - Mat Elem
Lista de exercícios 6 - Mat Elem
 
Função exponencial
Função exponencialFunção exponencial
Função exponencial
 
Função exponencial
Função exponencialFunção exponencial
Função exponencial
 

Semelhante a Imlweb ufmg

Semelhante a Imlweb ufmg (20)

Lista 01 gabarito
Lista 01   gabaritoLista 01   gabarito
Lista 01 gabarito
 
Discreta1
Discreta1Discreta1
Discreta1
 
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 9
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 9Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 9
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 9
 
Derivadas
DerivadasDerivadas
Derivadas
 
Introdução ao MATLAB
Introdução ao MATLABIntrodução ao MATLAB
Introdução ao MATLAB
 
Cesgranrio petrobras engenheiro petroleo 2018
Cesgranrio petrobras engenheiro petroleo 2018Cesgranrio petrobras engenheiro petroleo 2018
Cesgranrio petrobras engenheiro petroleo 2018
 
Integral
IntegralIntegral
Integral
 
Matematiquês.docx
Matematiquês.docxMatematiquês.docx
Matematiquês.docx
 
Matematiquês.docx
Matematiquês.docxMatematiquês.docx
Matematiquês.docx
 
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
 
2 metodos de discretizacao
2   metodos de discretizacao2   metodos de discretizacao
2 metodos de discretizacao
 
mandelbrot.pdf
mandelbrot.pdfmandelbrot.pdf
mandelbrot.pdf
 
Formulario 12º ano
Formulario 12º anoFormulario 12º ano
Formulario 12º ano
 
Funcoesvetorias
FuncoesvetoriasFuncoesvetorias
Funcoesvetorias
 
Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)
 
04b-integrais triplos
04b-integrais triplos04b-integrais triplos
04b-integrais triplos
 
Conjuntos numéricos versão mini
Conjuntos numéricos   versão miniConjuntos numéricos   versão mini
Conjuntos numéricos versão mini
 
formulario 12 ano.pdf
formulario 12 ano.pdfformulario 12 ano.pdf
formulario 12 ano.pdf
 
Lista 4
Lista 4Lista 4
Lista 4
 
Exercícios de fixação equação
Exercícios de fixação equaçãoExercícios de fixação equação
Exercícios de fixação equação
 

Imlweb ufmg

  • 1. Breve Introdução ao Matlab 1. Comandos / Funções help help, help, clear; disp, length, size, log10, log, exp, sin, sinh, atan, abs, angle cart2pol, pol2cart, input, eval, save, saveas, load. 2. Round, Fix, Floor, Ceil, Rem r=3.567; rr=round(r); % 4 r= -3.567; rr=round(r); % -4 r=3.567; rf=fix(r); % 3 r= -3.567; rf=fix(r); % -3 r=3.567; rl=floor(r); % 3 r= -3.567; rl=floor(r); % -4 r=3.567; rf=ceil(r); % 4 r= -3.567; rf=ceil(r); % -3 r=rem(8,3); % 2 r=rem(8,-3); % 2 r=rem(-8,3); % -2 3. Números pseudo-aleatórios r = rand; % r ε [0 1] m = rand(1,2); % [0.2311 0.6068] 4. Representação de matrizes a=[2 3 5;1 4 7]; % a(2x3) 1ª linha: 2 3 5 2ª linha: 1 4 7 b=[1 4;-2 3;-1 5] % b(3x2) c=a*b; % c(3x3) Matriz identidade eye(n) ou eye(n,n) >> eye(3) ans = 1 0 0 0 1 0 0 0 1 >> eye(3,2) ans = 1 0 0 1 0 0 Operações diversas dc=det(c); nc=norm(c); %o mesmo que norm(c,2), norma euclidiana trc=trace(c); %soma dos elementos da diagonal principal wc=eig(c); % auto-valores de c [vc wc]=eig(c) % as colunas de vc são os auto-vetores de c
  • 2. d=c^(-1); %matriz inversa de c 4.1 Representação de vetores coluna a=[2;3;5] % a(3x1) ou a=[2 3 5]'; b=[1;2;4] % b(3x1) Produto escalar pe=<a, b> Pe = a'*b = Σi ai bi Obs.: a' representa a transposta do vetor a. Se o vetor a contiver uma parte imaginária, a' será o conjugado transposto de a. Operações elemento a elemento m=a.*b; % m=[2 6 20]' q=a./b; % q=[2 1.5 1.25] t=a.^3; % t=[8 27 125] a=[4 9;16 25]; s1=a.^(1/2); s2=sqrt(a); % s1=s2=[2 3;4 5] u=a^(1/2); % u*u=a 4.2 Representação de vetores linha x=2:0.5:4; % x=[2 2.5 3 3.5 4] x=2:4 % x=[2 3 4]; 4.3 Um programa exemplo clear; [teta r]=cart2pol(3,4); %teta=0.9273 r=5 z=3+4*j ou z=5exp(j0.9273) r=10*(2*rand-1); disp(['número aleatório entre -10 e 10: ' num2str(r)]); m=rand(3,2); nm=norm(m); cm=length(m); % cm=3 norma2=sqrt(max(abs(eig(m'*m)))); n=input('Entre com o valor de n: '); a=rand(n); [nl nc]=size(a); for i=1:nl, disp(['linha ' num2str(i) ' da matriz a: ' num2str(a(i,:),2)]); end; Resultados >> iml número aleatório entre -10 e 10: -1.3419 Entre com o valor de n: 2
  • 3. linha 1 da matriz a: 0.38 0.68 linha 2 da matriz a: 0.78 0.46 >> [nm norma2] ans = 1.2289 1.2289 5. Representação de polinômios p=[3 15 18]; % p=3s^2+15s+18 Operações diversas com polinômios r=roots(p); % r = [-3.0000; -2.0000] p1=[1 2]; p2=[1 3]; p3=[1 0]; p12=conv(p1,p2]; %p12=[1 5 6] %convolução discreta p123=conv(conv(p1,p2),p3); % p123=[1 5 6 0] Convolução discreta Seja x[n] a entrada de um SLIT cuja resposta ao impulso seja h[n] abaixo. Determine a saída, y[n], deste sistema. n -2 -1 0 1 2 3 4 x[n] 0 0 2 3 -2 0 0 h[n] 0 1 2 1 0 0 0 y[n] 0 2 7 6 -1 -2 0 Comandos Matlab: x=[2 3 -2]; h=[1 2 1]; y=conv(x,h); % [2 7 6 -1 -2] Determinação do índice do 1º elemento não nulo de y, inn(y) = inn(x) + inn(h): inn(y) = 0 – 1 = -1 Assim, y[-1]=2, y[0]=7, … n_elem(y) = n_elem(x) + n_elem(h) -1 = 3 + 3 – 1 = 5 Se representarmos x[n]=2δ[n] + 3δ[n-1] - 2δ[n-2], teremos, y[n]=2h[n] + 3h[n-1] – 2h[n-2] n -2 -1 0 1 2 3 4 2h[n] 0 2 4 2 0 0 0 3h[n-1] 0 0 3 6 3 0 0 -2h[n-2] 0 0 0 -2 -4 -2 0 y[n] 0 2 7 6 -1 -2 0 Comandos Filter e Filtic Com os comandos Filter e Filtic podemos obter a resposta ao impulso, h[n], a resposta de estado nulo, ye0[n], e de entrada nula, y0[n]. ye0 = filter(b,a,x) (1) y0 = filter(b,a,x,zi) zi = filtic(b,a, yi) (2)
  • 4. b = [b0 b1 … bM], a=[1 a1 … aN] são os coeficientes da Equação Linear a Diferenças na forma com o operador de atraso: y[n] + a1y[n-1] + … + aNy[n-N] = b0x[n] + b1x[n-1] + + … bMx[n-M] x: entrada em (1), CI nulas Em (2) a entrada x é nula e zi é obtida pelo comando filtic, a partir das CI yi = [y[-1] y[-2] … y[-N]] Exemplo: Seja y[n] + 2/15 y[n-1] – 1/15 y[n-2] = x[n] raízes características: γ1 = -1/3 γ2 = 1/5 Assintot. Estável BIBO Estável >> a = [1 2/15 -1/15]; b=1; % Determinação da Resposta ao Impulso >> impulso = [1 0 0 0 0]; h = filter(b,a,impulso); % h = [1.0000 -0.1333 0.0844 -0.0201 0.0083] h[0] = 1 h[1] = -0,1333, … Calculando a Resposta ao Impulso, h[n] = bN / aN δ[n] + yc[n] u[n], obtemos h[n] = 3/8 (1/5)n + 5/8 (-1/3)n % Determinação da Resposta de estado nulo, x[n] = (1/2)n u[n] >> x=(1/2).^[0:10]; ye0 = filter(b,a,x); % ye0 = [1.0000 0.4667 0.2678 …] Resposta de Estado Nulo Calculando a Resposta de Estado Nulo, ye0[n] = h[n] * x[n], obtemos ye0[n] = (1/2)n +1/4 ((-1/3)n – (1/5)n ) % Determinação da Resposta de Entrada Nula Sejam as CI yi=[1 1]; >> x=zeros(1,7); zi=filtic(b,a,yi); y0=filter(b,a,x,zi); % y0 = [-0.0667 0.0756 -0.0145 0.0070 -0.0019 0.0007 -0.0002] Calculando a Resposta de Entrada Nula, obtemos y0[n] = 1/10 (1/5)n – 1/6 (-1/3)n Verifiquem estes resultados. Resolvendo Equações a Diferenças (E2 + 5/6 E + 1/6) y[n] = (E+1/4) x[n] (1) y[n+2] + 5/6 y[n+1] + y[n]/6 = x[n+1] + x[n]/4 (2) y[n] + 5/6 y[n – 1] + y[n – 2]/6 = x[n – 1] + x[n – 2]/4 (3) Resposta ao Impulso h[n] = bN / aN δ[n] + yc[n] u[n] De (2), N=2, a2 = 1/6 b2 = 1/4 Q(γ) = γ2+5/6 γ + 1/6 = 0 h[n] = 3/2 δ[n] + (C1 (-1/2)n + C2 (-1/3)n ) u[n] (4) h[0], h[1] são encontrados em (2): h[n+2] + 5/6 h[n+1] + h[n]/6 = δ[n+1] + δ[n]/4 (2) n=-2 h[0] = 0
  • 5. n=-1 h[1] = 1 (hipótese de causalidade aplicada) Levando os valores de h[n] calculados acima em (4), determinamos C1 e C2 h[n] = 3/2 δ[n] + (-3 (-1/2)n + 3/2 (-1/3)n ) u[n] (4) Um cálculo iterativo de h[n] é possível, continuando a atribuir valores para n em (2), procedimento facilmente aplicável, usando-se Matlab, tomando-se o cuidado com os indices dos vetores. Como a ordem do sistema é dois, vamos estabelecer o seguinte mapeamento: h[n] h[n+3]. Assim, as condições impostas pela causalidade h[-1]=h[-2]=0 vão ser traduzidas como h[2]=h[1]=0 e o primeiro valor a ser calculado, h[0], sera, desta forma, h[3]. Procedimento idêntico deve ser aplicado ao sinal δ[n]. Sabemos que δ[n] =1, para n=0 e zero para n≠0. Isto será traduzido pelo vetor [0 0 1 0 0 0] correspondendo a n = [1 2 3 4 5 6]. O instante zero passa a ser n=3. Um possível código Matlab é: clear; h=[0 0];d=[0 0 1 0 0 0 0 0 0 0]; %d é o sinal impulso for n=1:9, h(n+2)=-5*h(n+1)/6-h(n)/6+d(n+1)+d(n)/4; end; %h = [ 0 0 0 1.0000 -0.5833 0.3194 -0.1690 0.0876 -0.0448] %n = [-2 -1 0 1 2 3 4 5 6 ] >> n=1:6; h = -3*(-0.5).^n+1.5*(-1/3).^n %h = [ 1.0000 -0.5833 0.3194 -0.1690 0.0876 -0.0448] Lembrando que h[n] = 3/2 δ[n] + (-3 (-1/2)n + 3/2 (-1/3)n ) u[n] (4), vemos que acrescentando a primeira parcela no cálculo de h acima, encontraremos h[0] = 0. Para determinar a resposta total, partimos de (2), considerando as condições iniciais y[-2]=1, y[-1]=2 e um degrau como sinal de entrada. A implementação é idêntica: y[-2]=1, y[-1]=2 são traduzidos por y[1]=1, y[2]=2. O degrau de entrada é representado pelos valores x[1] = x[2] = 0, x[3] = x[4] … = 1 no código Matlab abaixo. clear; y=[1 2];x=[0 0 1 ones(1,7)]; %x é o sinal degrau unitário for n=1:9, y(n+2)=-5*y(n+1)/6-y(n)/6+x(n+1)+x(n)/4; end; %y = [ 1 2 -1.8333 2.1944 -0.2731 1.1119 0.3690 0.7572 0.5575] %n = [-2 -1 0 1 2 3 4 5 6 ] Estes valores correspondem à soma da resposta de entrada nula, yo[n], e com a resposta de estado nulo yeo[n]. yo[n] = (-7/2 (-1/2)n + 5/3 (-1/3)n ) u[n] yeo[n] = (5/8 – (-1/2)n + 3/8 (-1/3)n ) u[n]
  • 6. ytotal[n] = (5/8 –9/2 (-1/2)n + 49/24 (-1/3)n ) u[n] Uso dos Comandos Filter e Filtic para determinar yo[n], yeo[n] e yt[n] Atenção: use a equação com operador de atraso! y[n] + 5/6 y[n – 1] + y[n – 2]/6 = x[n – 1] + x[n – 2]/4 (3) a=[1 5/6 1/6];b=[0 1 1/4];x=[1 1 1 1 1 1 1]; yeo=filter(b,a,x); x0=zeros(1,7); yi=[2 1]; zi=filtic(b,a,yi); yo=filter(b,a,x0,zi); yt=yeo+yo; Tabela de Resultados obtidos com os Comandos Filter e Filtic n 0 1 2 3 4 5 6 yo[n] -1.8333 1.1944 -0.6898 0.3758 -0.1982 0.1025 -0.0524 yeo[n] 0 1 0.4167 0.7361 0.5671 0.6547 0.6099 yt[n] -1.8333 2.1944 -0.2731 1.1119 0.3690 0.7572 0.5575 6. Gráficos plot, subplot, semilogx, semilogy, loglog, bode, nyquist, freqresp subplot, xlabel, ylabel, text, title, figure, legend, clf, grid, axis, freqz stem, inline. Seja representar o sinal abaixo x1(t) através de operações de deslocamento, mudança de escala de tempo do sinal x(t). Uma representação possível é x1(t) = x(t/2) + x(0,5t - 1) + x(-0,5t + 2) + x(5 - t) cuja representação no Matlab é dada abaixo. >> x=inline('t.*((t>=0) & (t<=1))','t'); >> t=-1:0.01:6; x1=x(t/2)+x(0.5*t-1)+x(-0.5*t+2)+x(5-t); >> x1(501)=1; x1(701)=1; plot(t,x1,’r.’);grid; 1 t 1 x1(t) t 5 42 1 x(t)
  • 7. -1 0 1 2 3 4 5 6 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 t x1 7. Sinais e Sistemas (Lineares) step, impulse, heaviside, dirac, tf, ss, ss2tf, ss2ss, zpk, lsim, fft, ifft Vetor de uns, zeros ones(3,2) zeros(3,2) 1 1 0 0 1 1 0 0 1 1 0 0 Representando o sinal degrau (tempo discreto) u[n]: n = -10:19; x=[zeros(1,10) ones(1,20)]; plot(n,x,’r.’); grid; (ou stem(n,x)) u[n-2]: n = -10:19; x=[zeros(1,12) ones(1,18)]; plot(n,x,’r.’); grid; (ou stem(n,x)) Representando o sinal impulso (tempo discreto) δ[n]: n = -10:20; y=[zeros(1,10) 1 zeros(1,20)]; plot(n,y,’r.’); grid; (ou stem(n,y)) δ[n+3]: n = -10:20; y=[zeros(1,7) 1 zeros(1,23)]; plot(n,y,’r.’); grid; (ou stem(n,y)) Cálculo dos coeficientes da Série de Fourier de Tempo Discreto Dado um sinal x[n], periódico e discreto, os coeficientes da Série de Fourier de Tempo Discreto, Dr, podem ser obtidos com o comando fft. Para tal, represente o sinal x[n], n=0 ... N -1, onde N é o período. Exemplo: Seja o sinal x[-1]=1, x[0]=0, x[1]=3, x[2]=2, x[n+4]=x[n]. Assim, N=4 e x[3]=1. >> x=[0 3 2 1]; D=fft(x)/4; Resposta: D = [1.5 -0.5 – 0.5i -0.5 -0.5 + 0.5i]
  • 8. No caso da Série de Fourier de Tempo Discreto Inversa, isto é, para obter o sinal x[n] a partir do coeficientes Dr, o comando é ifft: x=ifft(D) * N. 8. Expansão em Fraçoes Parciais 1) >> n=[1 5]; d=[1 5 6]; >> sys=tf(n,d);[r p k]=residue(n,d); >> sys Transfer function: s + 5 ------------- s^2 + 5 s + 6 r = -2.0000 3.0000 p = -3.0000 -2.0000 k = [] 2) >> n=[1 3 -1 -5] d=[1 5 6] >> sys=tf(n,d);[r p k]=residue(n,d); Transfer function: s^3 + 3 s^2 - s - 5 ------------------- s^2 + 5 s + 6 r = 2.0000 1.0000 p = -3.0000 -2.0000 k = 1 -2 A Função de Transferência é imprópria: sys=(s^3+3s^2-s-5)/(s^2+5s+6) sys = s-2 + (3s+7)/(s^2 + 5 s + 6) sys = s-2 + 2/(s+3) + 1/(s+2) 3) >> n=[1 2]; d=[1 7 11 5]; %d=(s+5)(s+1)^2
  • 9. >> sys=tf(n,d);[r p k]=residue(n,d); r = -0.1875 0.1875 --> pólo simples 1 0.2500 p = -5.0000 -1.0000 --> pólo simples 1 -1.0000 k = [] sys = (s+2)/((s+1)^2(s+5)) = 0.1875/(s+1) + 0.25/(s+1)^2 - 0.1875/(s+5) 4) >> n=[2 13 35];d=[1 11 55 125]; %d=(s+5)(s^2+6s+25) >> sys=tf(n,d);[r p k]=residue(n,d); r = 0.5000 + 0.1250i 0.5000 - 0.1250i 1.0000 p = -3.0000 + 4.0000i -3.0000 - 4.0000i -5.0000 k = [] sys = (2s^2+13s+35)/((s+5)(s^2+6s+25))=1/(s+5) + (1/2+j/8)/(s+3+4j) sys = 1/(s+5) + (1/2 - j/8)/(s + 3 + 4j) + (1/2 + j/8)/(s + 3 - 4j) sys = 1/(s+5) + (s+2)/(s^2+6s+25) = 1/(s+5) + (s+2)/((s+3)^2+16) Quando a fração envolve pólos complexos conjugados, é mais conveniente expandir da forma abaixo, visando a transformada inversa. (s+a) A Bs+C ----------------- = ------- + ---------- (s+b)((s+c)^2+D) (s+b) ((s+c)^2+D) 9. Matlab Simbólica syms; laplace, ilaplace, fourier, ifourier, eval, simplify, pretty, int. 10. Dica para obter o Erro na Aproximação de Funções O sinal x(t), uma onda quadrada, definida de 0 a 2π, pode ser escrito usando a função degrau unitário, heaviside(t), em Matlab: >> syms t; >> x = (heaviside(t) - heaviside(t-pi)) – … Uma aproximação de x(t) pode ser >> y = 4*(sin(t) + sin(3*t)/3 + sin(5*t)/5)/pi;
  • 10. Calcula-se o erro e=x-y, o erro quadrático e2=e.*e, a seguir a energia do erro E >> E=int(e2,0,2*pi); % veja o resultado ??? >> Ef=eval(E); % resultado apresentável (tabela 6.3) Para obter os cinco primeiros valores da tabela, pode-se usar o comando for.