Anda di halaman 1dari 15

UNIVERSIDADE FEDERAL DE UBERLANDIA FACULDADE DE ENGENHARIA ELETRICA

Ron Gilberto Gonalves

Processamento Digital de Sinais


1 trabalho
Ron Gilberto Gonalves Matrcula 10921EEL026

Professora: Milena Bueno Pereira Carneiro

2013

DE DEZEMBRO DE

2013

1) Transcreva a funo SomaVetores, trabalhada em sala de aula, para o MatLab.


function [soma, tsoma] = soma2vetores(x, tx, y, ty) if tx(1) < ty(1) then mini = tx(1); else mini = ty(1); end if tx(length(tx)) > ty(length(ty)) then maxi = tx(length(tx)); else maxi = ty(length(ty)); end novo_tx = mini : maxi; novo_ty = mini : maxi; tsoma = mini : maxi; soma = zeros(tsoma); novo_x = zeros(tsoma); novo_y = zeros(tsoma); inicio_x = tx(1); for i = 1 : ((length(novo_tx) - length(tx)) + 1) if (tx(1) == novo_tx(i)) then for j = 1 : length(tx) novo_x(i) = x(j); i = i + 1; end break; end end for i = 1 : ((length(novo_ty) - length(ty)) + 1) if (ty(1) == novo_ty(i)) then for j = 1 : length(ty) novo_y(i) = y(j); i = i + 1; end break; end end soma = novo_x + novo_y; endfunction

-2-

2) Crie a funo SubtraiVetores para subtrair um vetor do outro.


function [sub, tsub] = sub2vetores(x, tx, y, ty) if tx(1) < ty(1) then mini = tx(1); else mini = ty(1); end if tx(length(tx)) > ty(length(ty)) then maxi = tx(length(tx)); else maxi = ty(length(ty)); end novo_tx = mini : maxi; novo_ty = mini : maxi; tsub = mini : maxi; sub = zeros(tsub); novo_x = zeros(tsub); novo_y = zeros(tsub); inicio_x = tx(1); for i = 1 : ((length(novo_tx) - length(tx)) + 1) if (tx(1) == novo_tx(i)) then for j = 1 : length(tx) novo_x(i) = x(j); i = i + 1; end break; end end for i = 1 : ((length(novo_ty) - length(ty)) + 1) if (ty(1) == novo_ty(i)) then for j = 1 : length(ty) novo_y(i) = y(j); i = i + 1; end break; end end sub = novo_x - novo_y; endfunction

3) Dados os sinais representados nos grficos abaixo, escreva um programa no MatLab para executar as operaes indicadas nos itens a seguir utilizando as funes SomaVetores e SubtraiVetores.

-3-

Para a criao dos grficos, foram usados os seguintes comandos:


-->[s, ts] = soma2vetores(a, ta, b, tb); -->subplot(311) -->xlabel('n') -->ylabel('a[n]') -->set(gca(), "grid", [1 1]) -->plot2d3('gnn', ta, a) -->subplot(312) -->xlabel('n') -->ylabel('b[n]') -->set(gca(), "grid", [1 1]) -->subplot(313) -->xlabel('n') -->ylabel('a[n] + b[n]') -->set(gca(), "grid", [1 1]) -->plot2d3('gnn', ts, s) -->xs2png(gcf(), 'a+b.png')

Para os demais grficos, alguns comandos foram mudados a fim de utilizar os vetores corretos.

-4-

3.1) a + b

-5-

3.2) a + c

-6-

3.3) c d

-7-

3.4) b a

-8-

4) Utilizando as funes Impulso e Degrau, implementadas em aula, gere os seguintes sinais e plote seus respectivos grficos:
function [Sinal] = impulso(ValorUm, Ninicial, Nfinal) if Ninicial == Nfinal then disp('Intervalo nulo. Maus valores foram inseridos'); Sinal = 0; elseif Nfinal < Ninicial then aux = Nfinal; Nfinal = Ninicial; Ninicial = aux; N = Ninicial:Nfinal; tamanhoSinal = length(N); Sinal = zeros(1, tamanhoSinal); for i = 1:tamanhoSinal if N(1,i) == ValorUm then Sinal(1,i) = 1; end end elseif (ValorUm < Ninicial) | (ValorUm > Nfinal) then disp('Valor do impulso escolhido fora da faixa de existencia do sinal.'); Sinal = 0; else N = Ninicial : Nfinal; tamanhoSinal = length(N); Sinal = zeros(1, tamanhoSinal); for i = 1 : tamanhoSinal if N(1,i) == ValorUm then Sinal(1,i) = 1; end end end endfunction

4.1) x1[n] = [n+2] + 2 [n] 4 [n3] + 3 [n5] + 2 [n6] , na faixa de 2 n 6.


x1 = impulso(-2, -2, 6) + 2.*impulso(0, -2, 6) - 4.*impulso(3, -2, 6) + 3.*impulso(5, -2, 6) + 2.*impulso(6, -2, 6) tx1 = -2:6; plot2d3(tx1, x1); xlabel('n'); ylabel('x1[n]'); set(gca(), "grid", [1 1]); xs2png(cfg(), 'x1.png');

-9-

4.2) x2[n] = 2 u[n+4] u[n3] , na faixa de 7 n 7.


function [Sinal] = degrau(InicioDegrau, Ninicial, Nfinal) N = Ninicial : Nfinal; tamanhoN = length(N); Sinal = ones(1, tamanhoN); for i= 1 : tamanhoN if N(i) < InicioDegrau then Sinal(i) = 0; end end endfunction

x2 = 2.*degrau(-4, -7, 7) - degrau(3, -7, 7); tx2 = -7:7; xlabel('n'); ylabel('x2[n]'); set(gca(), "grid", [1 1]); plot2d3('gnn', tx2, x2); xs2png(cfg(), 'x2.png');

- 10 -

5) Utilizando a funo Desloca, implementada em aula, aplique as transformaes indicadas nos itens abaixo, aos sinais apresentados no item 3). Para cada item, plote em uma mesma janela grfica, o sinal original e o sinal deslocado.
function [IntervaloDeslocado] = desloca(deslocamento, Intervalo) IntervaloDeslocado = zeros(Intervalo); for i = 1 : length(Intervalo) IntervaloDeslocado(i) = Intervalo(i) - deslocamento; end endfunction

a = [-2 0 1 2 1 0 3 2 0 0 -1] ta = -2:8 td = desloca(-4, ta) xlabel('n') ylabel('a[n] e a[n-4]') set(gca(), "grid", [1 1]) plot2d3('gnn', ta, a) plot2d3('gnn', td, a) h1 = legend(['a[n]'; 'a[n-4]']) xs2png(cfg(), 'a1.png')

- 11 -

5.1 ) a(n 4)

- 12 -

5.2) b(n + 2)

- 13 -

5.3) c(n 1)

- 14 -

5.4) d(n + 3)

- 15 -