Vous êtes sur la page 1sur 34

Apontamentos Sobre Processamento Digital de

Sinais
Módulo 1 - Espectro de Sinais Discretos 1D
Prof. João Beleza Sousa
21 de Dezembro de 2006

1
Conteúdo
1 Introdução 3
1.1 Sistema de Transmissão de Rádio . . . . . . . . . . . . . . . . 3
1.2 Compressão de Imagens Digitais . . . . . . . . . . . . . . . . . 3

2 Sinais Discreto 7
2.1 Sinal Discreto 1D . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Sinal Discreto 2D . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Sinal Discreto 3D . . . . . . . . . . . . . . . . . . . . . . . . . 8

3 Alguns Sinais Discretos Elementares 1D 10


3.1 Impulso Unitário . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Sinusóides Discretas . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Exponencial Complexa Discreta . . . . . . . . . . . . . . . . . 14

4 Sinal Discreto como Combinação Linear de Impulsos Unitários 15

5 Série de Fourier de Sinais Discretos 17

6 Espaços de Sinais 21

7 Transformada de Fourier de Sinais Discretos 28


7.1 Transformada de Fourier de Sinais Discretos Periódicos . . . . 31

8 Transformada de Fourier Discreta 32

A Dedução da fórmula trigonométrica cos(a) cos(b) usando ex-


ponenciais complexas 34

2
1 Introdução
Nestes apontamentos apresenta-se de forma informal a teoria do processa-
mento digital de sinais que permite representar qualquer sinal discreto no
domı́nio da frequência, isto é, como a soma de sinais sinusoidais de diferen-
tes amplitudes, frequências e fases. Às amplitudes desses sinais sinusoidais
chama-se espectro de amplitude do sinal discreto. Às fases desses sinais si-
nusoidais chama-se espectro de fase do sinal discreto.
O conceito de espectro é um conceito central da teoria do processamento
digital de sinais e da teoria do processamento de sinais em geral, porque
sistemas tão importantes como a transmissão de rádio, e aplicações tão im-
portantes como a compressão de imagens digitais se baseiam na análise e na
manipulação do espectro dos sinais.

1.1 Sistema de Transmissão de Rádio


Tipicamente num sistema de transmissão de rádio existem várias estações
emissoras a emitirem em simultâneo. As emissões de todas as emissoras são
enviadas a todos os receptores através de um canal de alta capacidade. Cada
receptor recebe um sinal que contém todas as emissões somadas. A selecção
de uma dada emissão em particular é efectuada sintonizando o receptor numa
certa gama de frequências. Repare-se que em geral dado o resultado de uma
soma não é possı́vel saber o valor das parcelas que foram somadas. Mas no
caso das emissões de rádio, dado o sinal que contém a soma de de todas as
emissões é possı́vel obter cada uma das emissões que foram somadas. Isto
só é possı́vel porque a soma foi efectuada tendo o cuidado de garantir que
cada uma das emissões ocupa uma gama de frequências própria e que não há
sobreposição entre as diferentes gamas de frequências.
Esta é uma parte da magia da representação de sinais no domı́nio da
frequência. Podemos somar sinais no tempo, e recuperar cada um dos sinais
somados, desde que eles ocupem gamas diferentes de frequência. A este
processo chama-se multiplexagem no domı́nio da frequência.

1.2 Compressão de Imagens Digitais


A imagem digital apresentada na figura 1 é uma imagem de 407x240 pixels
em 256 tons de cinzento. A imagem 2 é o seu espectro de amplitude.
As zonas escuras do espectro de amplitude da imagem correspondem a
valores de amplitudes de sinusóides próximos de zero e portanto pouco per-
ceptı́veis à visão humana. O facto das zonas escuras ocuparem grande parte
do espectro de amplitude, sugere uma técnica de compressão de imagem que

3
Figura 1: Exemplo de uma imagem digital.

50

100

150

200

50 100 150 200 250 300 350 400

Figura 2: Espectro de amplitude da imagem digital apresentada na figura 1.

consiste em armazenar a representação no domı́nio da frequência da imagem


aproveitando apenas uma parte do espectro, a parte correspondente às zonas
mais claras do espectro de amplitude.
Dito por outras palavras, estamos a sugerir que embora todas as zonas
da imagem original tenham igual importância, há zonas do seu espectro que

4
têm menor importância que outras. A técnica de compressão sugerida não
armazena portanto as partes pouco importantes do espectro, reduzindo assim
a quantidade de informação a armazenar.
A figura 3 mostra o espectro resultante do aproveitamento da parte cen-
tral do espectro da figura 2. Em termos quantitativos foram preservados
um quarto dos valores do espectro original. Os restantes três quartos dos
valores foram explicitamente igualados a zero. A figura 4 mostra a imagem
correspondente.

50

100

150

200

50 100 150 200 250 300 350 400

Figura 3: Espectro de amplitude correspondente ao quarto central do espec-


tro de amplitude apresentado na figura 2.

Em termos visuais as duas imagens apresentadas nas figuras 1 e 4 são


muito semelhantes, no entanto o tamanho da imagem comprimida é aproxi-
madamente um quarto do da imagem original 1 . Sendo a diferença de tama-
nho tão significativa, em ambientes como a Internet opta-se por disponibilizar
versões comprimidas das imagens para diminuir os tempos de transmissão e
os custos do tráfego, apesar das versões comprimidas não serem réplicas exac-
tas da versão original. A este tipo de técnicas de compressão em que não é
possı́vel recuperar a versão original chamam-se técnicas de compressão com
perdas.
1
É aproximadamente e não exactamente porque para além do quarto de valores do
espectro armazenados terá também de se armazenar o tamanho em pixels da imagem
original, para que seja possı́vel construir o espectro representado na figura 3.

5
Figura 4: Imagem digital correspondente ao espectro de amplitude apresen-
tado na figura 3.

Note-se que para além de alguma perda de qualidade da imagem original,


o preço a pagar por este factor de compressão incluı́ também o aumento
da complexidade e da carga computacional do software de manipulação das
imagens comprimidas com esta técnica, que tem que construir o espectro
representado na figura 3 e fazer a conversão do espectro da imagem para a
imagem.

6
2 Sinais Discreto
2.1 Sinal Discreto 1D
Um sinal discreto 1D (a uma dimensão) é uma sequência de números inde-
xada por um número inteiro.
Sendo n o número inteiro usado como ı́ndice da sequência x[n], a sequência
x[n] definida pela tabela 1, é um sinal discreto a uma dimensão. O sinal x[n]
está representado graficamente na figura 5. A listagem 1 mostra como definir
o sinal x[n], obter a sua representação gráfica e armazenar a sua representação
gráfica em ficheiros com formato PDF 2 e EPSC 3 , utilizando a linguagem
de programação Matlab 4 .

n x[n]
-2 1,1
-1 2,3
0 0,7
1 -1,4
2 -0,5
3 0,9

Tabela 1: O sinal x[n].

Listagem 1: sinalXn.m
clear all
close all

% vector tempo
n = [−2 −1 0 1 2 3];

% sinal
xn = [1.1 2.3 0.7 −1.4 −0.5 0.9];

figure('PaperUnits', 'inches',...
'PaperSize',[5 3],...
'PaperPosition', [0 0 5 3])
axes('FontSize', 8)
2
Portable Document Format.
3
Encapsulated PostScript Color.
4
Todas as listagens apresentadas ao longo deste documento estão escritas na linguagem
de programação Matlab.

7
2.5

1.5

0.5

−0.5

−1

−1.5
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5 3

Figura 5: Representação gráfica do sinal x[n].

stem(n, xn)
%print −dpdf ../figuras/sinalXn.pdf
print −depsc ../figuras/sinalXn.eps

Matematicamente o sinal x[n] está definido de −∞ a +∞, uma vez que


o número inteiro n toma valores de −∞ a +∞. Assim, considera-se que em
todos os valores de n para os quais x[n] não foi definido, o valor de x[n] é
zero.
A gravação digital de música ou de fala constitui um exemplo de um sinal
discreto a uma dimensão.

2.2 Sinal Discreto 2D


Um sinal discreto 2D (a duas dimensões) é uma sequência de números inde-
xada por dois números inteiros.
Uma imagem digital constitui um exemplo de um sinal discreto a duas
dimensões.

2.3 Sinal Discreto 3D


Um sinal discreto 3D (a três dimensões) é uma sequência de números inde-
xada por três números inteiros.

8
Uma sequência de vı́deo digital constitui um exemplo de um sinal discreto
a três dimensões.

9
3 Alguns Sinais Discretos Elementares 1D
3.1 Impulso Unitário
Define-se o sinal discreto Impulso Unitário como:
(
1, n = 0
δ[n] = (1)
6 0
0, n =
A função apresentada na listagem 2 define o sinal δ[n] em Matlab.

Listagem 2: impulso n.m


function x = impulso n(n)

x = double(n==0);

Na figura 6 o sinal δ[n] está representado graficamente. Esta figura foi


obtida com o programa apresentado na listagem 3.

Listagem 3: sinalDeltan.m
clear all
close all

n = [−2 −1 0 1 2 3];
dn = impulso n(n);

figure('PaperUnits', 'inches',...
'PaperSize',[5 3],...
'PaperPosition', [0 0 5 3])
axes('FontSize', 8)
stem(n, dn)
%print −dpdf ../figuras/sinalDeltan.pdf
print −depsc ../figuras/sinalDeltan.eps

Verifica-se que δ[n − 10]x[n] = δ[n − 10]x[10]. Isto porque por definição
do sinal δ[n], δ[n − 10] só é diferente de zero quando a quantidade n − 10 for
igual a zero, o que acontece quando n = 10. Mas quando n = 10, δ[n − 10] é
igual a 1 e x[n] é igual a x[10]. E para todos os outros valores de n diferentes
de 10, δ[n − 10] é igual a zero, o que multiplicado por x[n] dá zero.
Generalizando, para um qualquer valor inteiro n0 , vem:

δ[n − n0 ]x[n] = δ[n − n0 ]x[n0 ] (2)


Como veremos na secção 4 esta propriedade vai permitir definir qualquer
sinal discreto como uma combinação linear de impulsos unitários.

10
1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
−2 −1.5 −1 −0.5 0 0.5 1 1.5 2 2.5 3

Figura 6: Representação gráfica do sinal δ[n].

3.2 Sinusóides Discretas


Definem-se as sinusóides discretas seno e coseno como:

x[n] = A cos(Ω0 n + φ) (3)


x[n] = A sin(Ω0 n + φ) (4)
onde A, Ω0 e φ são números reais, que representam a amplitude, a
frequência e a fase das sinusóides, respectivamente. As unidades da frequência
e a fase são radianos.
As sinusóides discretas gozam de duas propriedades muito importantes,
nomeadamente:
1. São periódicos em frequência;
2. A periodicidade em frequência tem perı́odo 2π.
No caso do coseno tem-se que:

x[n] = A cos((Ω0 + k2π)n + φ)


= A cos(Ω0 n + k2πn + φ)
= A cos(Ω0 n + φ)
= x[n]

11
com k inteiro (note-se que o produto kn também é um número inteiro).
O que decorre do facto da função contı́nua cos(α) ser periódica de perı́odo
2π, isto é, com k inteiro tem-se que cos(α + k2π) = cos(α).
Na figura 7 estão representadas 6 sinusóides discretas, com amplitude
A = 1, fase φ = 0 e frequências Ω = 0, π/2, 2π/2, 3π/2, 4π/2 e 5π/2.
Pode-se constatar nestas 6 sinusóides a periodicidade de 2π na frequências
das sinusóides discretas. Na listagem 4 está o programa com que a figura foi
obtida.

1
0.5
0
−5 0 5 10
1
0
−1
−5 0 5 10
1
0
−1
−5 0 5 10
1
0
−1
−5 0 5 10
1
0.5
0
−5 0 5 10
1
0
−1
−5 0 5 10

Figura 7: Sinusóides discretas com frequências Ω = kπ/2 com k =


{0, 1, 2, 3, 4, 5}.

Listagem 4: sinusoides.m
clear all
close all

n = [−5:10];

A = 1;
fi = 0;

k = [0:5];
omegas = k * pi/2;

12
sinais = zeros(length(k), length(n));

figure('PaperUnits', 'inches',...
'PaperSize',[5 3],...
'PaperPosition', [0 0 5 3])
axes('FontSize', 8)

for p=1:length(k)
sinais(p,:) = A*cos(omegas(p)*n + fi);
subplot(length(k),1,p)
stem(n, sinais(p,:))
end

%print −dpdf ../figuras/sinusoides.pdf


print −depsc ../figuras/sinusoides.eps

Verifica-se na figura 7 que o primeiro e o quinto sinais são iguais, o segundo


e o sexto também são iguais e o segundo e o quarto também. No primeiro
caso porque

cos(0n) = cos(0n + 2πn)


= cos((0 + 2π)n)
= cos(2πn)

No segundo caso porque

cos(π/2n) = cos((π/2)n + 2πn)


= cos((π/2 + 2π)n)
= cos(5π/2n)

E no terceiro caso porque

cos((π/2)n) = cos((π/2)n − 2πn)


= cos((π/2 − 2π)n)
= cos(−3π/2n) = cos(3π/2n)

A última igualdade verifica-se pelo facto da função coseno ser par, ou seja,
cos(−α) = cos(α).
Pelo facto a periodicidade das sinusóides discretos na frequência ter valor
2π é habitual representar-se o domı́nio da frequência dos sinais discretos, no
intervalo Ω ∈ [−π : π[. Neste gama de frequências, o valor central Ω = 0
correponde à componente contı́nua.

13
3.3 Exponencial Complexa Discreta
Define-se exponencial complexa discreta com:

x[n] = Aej(Ω0 n+φ) (5)


onde A, Ω0 e φ são números reais, que representam a amplitude, a
frequência e a fase da exponencial
√ complexa, respectivamente. j representa a
unidade imaginária, isto é, j = −1. As unidades da frequência e a fase são
radianos. O sinal exponencial complexa discreto verifica as mesmas propri-
edades das sinusóides discretas, nomedadamente, é periódico na frequência
de perı́odo 2π.
A exponencial complexa discreta relaciona-se com as sinusóides discretas
através da formula de Euler:

ejα = cos α + j sin α (6)


Tem-se também que:

ejα + e−jα
cos α = (7)
2
ejα − e−jα
sin α = (8)
2j
A importância da utilização de exponenciais complexas reside no facto
de permitirem estudar sinais sinusoidais contornando o uso de cálculo trigo-
nométrico. O apêndice A mostra, por exemplo, como é possı́vel deduzir uma
formula trigonométrica sem usar cálculo trigonométrico.

14
4 Sinal Discreto como Combinação Linear de
Impulsos Unitários
A figura 8 (gerada pelo programa incluı́do na listagem 5) mostra como o
sinal x[n] pode ser obtido pela soma de impulsos unitários multiplicados por
constantes. Analiticamente, trata-se de representar x[n] como:

x[n] = 1, 1δ[n + 2] + 2, 3δ[n + 1] + 0, 7δ[n] − 1, 4δ[n − 1]


−0, 5δ[n − 2] + 0, 9δ[n − 3]
= x[−2]δ[n + 2] + x[−1]δ[n + 1] + x[0]δ[n] + x[1]δ[n − 1]
+x[2]δ[n − 2] + x[3]δ[n − 3]

Generalizando para n ∈] − ∞ : +∞[ obtém-se:


+∞
X
x[n] = x[k]δ[n − k] (9)
k=−∞

A equação 9 mostra que qualquer sinal discreto se pode representar como


uma combinação linear com infinitas parcelas, do tipo:

x[n] = −∞ · · · + a−1 y−1 [n] + a0 y0 [n] + a1 y1 [n] + · · · + ∞ (10)


em que os sinais y−1 [n], y0 [n], y1 [n], etc, são impulsos unitários e as
constantes a−1 , a0 , a1 , etc, são valores do sinal x[n].
Qualquer sinal discreto pode portanto ser representado como uma com-
binação linear de impulsos discretos.

Listagem 5: somaDeImpulsos.m

sinalXn

k = n;

sinaisParcelas = zeros(length(xn), length(n));


sinalSoma = zeros(size(xn));

figure('PaperUnits', 'inches',...
'PaperSize',[5 3],...
'PaperPosition', [0 0 5 3])
axes('FontSize', 8)
for p=1:length(xn)

15
4
x[−2]d[n+2]
2 x[−1]d[n+1]
x[0]d[n+0]
0 x[1]d[n−1]
x[2]d[n−2]
−2 x[3]d[n−3]
−2 −1 0 1 2 3

4
x[n]
2

−2
−2 −1 0 1 2 3

Figura 8: O sinal x[n] obtido pela soma de impulsos unitários.

sinaisParcelas(p,:) = impulso n(n−k(p))*xn(p);


subplot(2,1,1)
stem(n, sinaisParcelas(1:p,:)')
legenda = cell(p,1);
for q=1:p
legenda{q} = strcat('x[', num2str(n(q)), ']d[n',...
sprintf('%+d',−n(q)), ']');
end
legend(legenda)

sinalSoma = sum(sinaisParcelas(1:p,:),1);
subplot(2,1,2)
stem(n, sinalSoma)
legend('x[n]')
pause
end

%print −dpdf ../figuras/somaDeImpulsos.pdf


print −depsc ../figuras/somaDeImpulsos.eps

16
5 Série de Fourier de Sinais Discretos
Seja xp [n] um sinal periódico de perı́odo N amostras, isto é, xp [n+N ] = xp [n].
O sinal xp [n] pode decompor-se na série de Fourier:
N −1
Ck ejkΩ0 n
X
xp [n] = (11)
k=0

Os coeficientes Ck da série são dados por:


−1
1 NX
Ck = xp [n]e−jkΩ0 n (12)
N n=0
À frequência Ω0 = 2π
N
chama-se frequência fundamental do sinal xp [n]. A
equação 11 mostra que o sinal xp [n] se pode decompor na combinação linear
com N parcelas:

xp [n] = a0 y0 [n] + a1 y1 [n] + · · · + aN −1 yN −1 [n] (13)


em que os sinais y0 [n], y1 [n], até yN −1 [n], são exponenciais complexas
jkΩ0 n
e cujas frequências são múltiplos da frequência fundamental kΩ0 (com
k ∈ {0, 1, · · · , N − 1}), e as constantes a0 , a1 , até aN −1 , são os coeficientes
da série de Fourier, dados pela equação 12.
Caso o sinal xp [n] seja um sinal real a equação 11 pode ser reescrita para
N par como:
N
2
−1
X
xp [n] = C0 + 2|Ck | cos(kΩ0 n + arg(Ck )) + C N cos(πn) (14)
2
k=1

e para N ı́mpar como:


N −1
X2

xp [n] = C0 + 2|Ck | cos(kΩ0 n + arg(Ck )) (15)


k=1

As equações 14 e 15 mostram que qualquer sinal periódico real se pode


decompor numa combinação linear de sinais sinusoidais 5 .
A figura 9, obtida por execução do programa apresentado na listagem 6,
ilustra a decomposição do sinal xp [n] numa soma de sinusóides. O sinal xp [n]
foi obtido por repetição periódica de perı́odo N = 6 do sinal x[n].
5
O coeficiente C0 é o coeficiente do coseno de frequência zero, ou seja, é a componente
contı́nua do sinal.

17
2
0.52*cos(0*n)
1.53*cos(1.05*n+1.58)
0 0.67*cos(2.09*n+1.13)
−0.08*cos(pi*n)

−2
−2 −1 0 1 2 3

−2
−2 −1 0 1 2 3

Figura 9: O sinal x[n] obtido pela soma de sinusóides.

Listagem 6: somaDeSinusoides.m
sinalXn

whos

% obter o perı́odo com inı́cio em n=0 do sinal resultante da


% repetição periódica do sinal xn com periodo N(=6)

N = length(xn);
xpn = zeros(size(xn));
indiceAmostraZero = find(rem(n,N)==0);
indiceAmostraMenosUm = indiceAmostraZero − 1;
xpn(1:end−indiceAmostraZero+1) = xn(indiceAmostraZero:end);
if indiceAmostraMenosUm > 0
xpn(end−indiceAmostraZero+2:end) = xn(1:indiceAmostraMenosUm);
end
n1 = [0:N−1];

figure('PaperUnits', 'inches',...
'PaperSize',[5 3],...
'PaperPosition', [0 0 5 3])
axes('FontSize', 8)
stem(n1, xpn)

omega0 = 2*pi/N;

18
Ck = zeros(size(xpn));

for k=0:N−1
Ck(k+1) = 1/N*sum(xpn.*exp(−j*k*omega0*n1));
end

Ck

paridadeN = rem(N,2);
PAR = 0;
IMPAR = 1;

if paridadeN == PAR
parcelasCosenos = zeros(N/2+1, length(n));
parcelasCosenos(1,:) = Ck(1);
for k=1:N/2−1
parcelasCosenos(k+1,:) = ...
2*abs(Ck(k+1))*cos(k*omega0*n+angle(Ck(k+1)));
end
parcelasCosenos(N/2+1,:) = Ck(N/2+1)*cos(pi*n);
end

if paridadeN == IMPAR
parcelasCosenos = zeros((N−1)/2+1, length(n));
parcelasCosenos(1,:) = Ck(1);
for k=1:(N−1)/2
parcelasCosenos(k+1,:) = ...
2*abs(Ck(k+1))*cos(k*omega0*n+angle(Ck(k+1)));
end
end

% construção de um array de legendas (para N par)

if paridadeN == PAR
legenda = cell(N/2+1,1);
legenda{1} = strcat(sprintf('%.02f', Ck(1)), '*cos(0*n)');
for k=1:N/2−1
legenda{k+1} = strcat(sprintf('%.02f', ...
2*abs(Ck(k+1))), ...
'*cos(', sprintf('%.02f', k*omega0), '*n', ...
sprintf('%+.02f', angle(Ck(k+1))),')');
end
legenda{N/2+1} = strcat(sprintf('%.02f', ...
real(Ck(N/2+1))), ...
'*cos(pi*n)');
end

% construção de um array de legendas (para N ı́mpar)

19
if paridadeN == IMPAR
legenda = cell((N−1)/2+1,1);
legenda{1} = strcat(sprintf('%.02f', Ck(1)), '*cos(0*n)');
for k=1:(N−1)/2
legenda{k+1} = strcat(sprintf('%.02f', ...
2*abs(Ck(k+1))), ...
'*cos(', sprintf('%.02f', k*omega0), '*n', ...
sprintf('%+.02f', angle(Ck(k+1))),')');
end
end

figure('PaperUnits', 'inches',...
'PaperSize',[5 3],...
'PaperPosition', [0 0 5 3])
axes('FontSize', 8)
for p=1:size(parcelasCosenos,1)
subplot(2,1,1)
stem(n,parcelasCosenos(1:p,:)')
legend(legenda{1:p})
subplot(2,1,2)
stem(n,sum(parcelasCosenos(1:p,:),1))
pause
end

%print −dpdf ../figuras/somaDeSinusoides.pdf


print −depsc ../figuras/somaDeSinusoides.eps

20
6 Espaços de Sinais
Consideremos a representação de vectores no espaço vectorial a duas di-
mensões (2D). Consideremos a base vectorial constituı́da pelos vectores ~u1 e
~u2 6 .
" # " #
1 0
~u1 = , ~u2 = (16)
0 1
Consideremos ainda o vector ~v representado na base vectorial (~u1 , ~u2 ),
com coordenadas 3 segundo ~u1 e −1 segundo ~u2 .

~v = v~u1 ~u1 + v~u2 ~u2 (17)


" # " #
3 v~u1
~v = 3~u1 − 1~u2 = = (18)
−1 v~u2
Consideremos agora uma outra base vectorial constituı́da pelos vectores
w
~1 e w
~ 2.
" # " #
1 −2
w
~1 = w
~2 = (19)
−1 −2
Queremos representar o vector ~v na base (w ~ 1, w
~ 2 ), ou seja, queremos
encontrar as coordenadas vw~ 1 e vw~ 2 de forma a representar o vector ~v como:

~v = vw~ 1 w
~ 1 + vw~ 2 w
~2 (20)
As coordenadas do vector ~v na base (w ~ 1, w
~ 2 ), são dadas pela projecção
do vector ~v segundo os vectores w
~1 e w
~ 2.

< ~v , w
~1 >
vw~ 1 = proj~v|w~ 1 = (21)
<w
~ 1, w ~1 >
< ~v , w
~2 >
vw~ 2 = proj~v|w~ 2 = (22)
<w
~ 2, w ~2 >
onde < p~, ~q > representa o produto interno entre vectores.

" #T " # " #


T p~u1 q~u1 q~u1
< p~, ~q > = p~ ~q = = [p~u1 p~u2 ] (23)
p~u2 q~u2 q~u2
= p~u1 q~u1 + p~u2 q~u2 (24)
6
Matricialmente consideraremos que os vectores são matrizes coluna.

21
As coordenadas do vector ~v na base (w
~ 1, w
~ 2 ) são portanto:
" #
h i 1
3 −1
−1 3+1
vw~ 1 = h " # = =2 (25)
i 1 1+1
1 −1
−1
" #
h i −2
3 −1
−2 −6 + 2
vw~ 2 = h " # = = −0, 5 (26)
i −2 4+4
−2 −2
−2
A figura 10 ilustra o vector ~v representado nas bases (~u1 , ~u2 ) e (w
~ 1, w
~ 2 ).

4
u1
3 u2
v
w1
2
w2
vw1*w1
1 vw2*w2

−1

−2

−3

−4
−4 −3 −2 −1 0 1 2 3 4

Figura 10: Representação de vectores no espaço vectorial a duas dimensões.

O cálculo das coordenadas do vector ~v na base (w


~ 1, w
~ 2 ) pode ser efectuado
matricialmente, recorrendo a uma matriz de mudança de base A. Cada
linha da matriz A é constituı́da por cada um dos vectores da base (w ~ 1, w
~ 2 ),
transpostos e divididos pelo quadrado das respectivas normas, isto é:
" # " #
w
~ 1/ < w
~ 1, w
~1 > 0, 5 −0, 5
A= = (27)
w
~ 2/ < w
~ 2, w
~2 > −0, 25 −0, 25
As coordenadas do vector ~v na base (w
~ 1, w
~ 2 ) são dadas por:

22
~v(w~ 1 ,w~ 2 ) = A~v(~u1 ,~u2 ) (28)
" #" #
0, 5 −0, 5 3
= (29)
−0, 25 −0, 25 −1
" # " #
1, 5 + 0, 5 2
= = (30)
−0, 75 + 0, 25 −0, 5

O programa apresentado na listagem 7 ilustra a obtenção das coordenadas


do vector ~v na base usando uma matriz de mudança de base.
Note-se que multiplicando à esquerda ambos os termos da equação 28 por
A−1 se obtém:

A−1~v(w~ 1 ,w~ 2 ) = A−1 A~v(~u1 ,~u2 ) = ~v(~u1 ,~u2 ) (31)


Tem-se portanto que ~v(~u1 ,~u2 ) = A−1~v(w~ 1 ,w~ 2 ) . Conclui-se então que a matriz
de mudança de base A permite não só efectuar a mudança da base (~u1 , ~u2 )
para a base (w ~ 1, w
~ 2 ) como também efectuar a mudança da base (w ~ 1, w
~ 2 ) para
a base (~u1 , ~u2 ), isto é, permite obter as coordenadas na base (~u1 , ~u2 ) de um
vector representado na base (w ~ 1, w
~ 2 ).

Listagem 7: espacoVectorial2d.m
clear all
close all

u1 = [1; 0];
u2 = [0; 1];

v = [3; −1];

w1 = [1; −1];
w2 = [−2; −2];

vw1 = (v'*w1)/(w1'*w1)
vw2 = (v'*w2)/(w2'*w2)

% matriz de mudança de coordenadas: cada linha é um


% dos vectores da nova base (representado nas coordenadas
% da base original) dividido pela sua norma ao quadrado.

A = [w1'/(w1'*w1); w2'/(w2'*w2)]

vw = A*v

23
% dadas as coordenadas de um vector na base (w1, w2) as
% coordenadas desse vectro na base (u1, u2) podem obter−se
% multiplicando às esquera ambos os termos da igualdade anterior
% por Aˆ(−1). Vem:
% Aˆ(−1)*vw = Aˆ(−1)*A*v = v

Aˆ(−1)*vw % tem que dar v

figure('PaperUnits', 'inches',...
'PaperSize',[5 3],...
'PaperPosition', [0 0 5 3])
axes('FontSize', 8)
axis([−4 4 −4 4])
grid on
hold on
x = [u1 u2];
z = x(1,:)+j*x(2,:);
compass(z,'b')
x = [v];
z = x(1,:)+j*x(2,:);
compass(z,'r')
x = [w1 w2];
z = x(1,:)+j*x(2,:);
compass(z,'g')
x = [vw1*w1 vw2*w2];
z = x(1,:)+j*x(2,:);
compass(z,'c')
legend('u1', 'u2', 'v', 'w1', 'w2', 'vw1*w1', 'vw2*w2')
hold off

%print −dpdf ../figuras/espacoVectorial2d.pdf


print −depsc ../figuras/espacoVectorial2d.eps

Consideremos agora o sinal xp [n] periódico de perı́odo N . Defina-se o


sinal x[n] como o perı́odo do sinal xp [n] com inı́cio na amostra n = 0. O sinal
x[n] é um sinal de duração finita. A sua duração é N amostras. Recorrendo
à equação 9 pode escrever-se x[n] como:
N
X −1
x[n] = x[k]δ[n − k] (32)
k=0

O somatório em k passa a ser de 0 até N − 1 porque o sinal x[n] é igual


a zero para todos os valores de n fora deste intervalo.
Por outro lado, recorrendo à equação 11, pode escrever-se x[n] como:
N −1
Ck ejkΩ0 n
X
x[n] = (33)
k=0

24
Isto porque a equação 11 é válida para qualquer n, em particular para
n ∈ {0, 1, · · · , N − 1}, e neste caso tem-se que xp [n] = x[n].
À semelhança das equações 17 e 20 em que um vector é representado
como combinações lineares de outros vectores, nas equações 32 e 33 o sinal
x[n] é representado como combinações lineares de outros sinais. No primeiro
caso uma combinação linear de N impulsos unitários e no segundo caso uma
combinação linear de N exponenciais complexas. Os valores de cada um dos
N impulsos unitários para n ∈ {0, 1, · · · , N −1} definem um vector no espaço
a N dimensões. Da mesma forma, os valores de cada uma das exponenciais
complexas para n ∈ {0, 1, · · · , N − 1} definem um vector no espaço a N
dimensões. Assim, os coeficientes x[k] representam as coordenadas do sinal
x[n] no espaço dos impulsos unitários e os coeficientes Ck representam as
coordenadas do sinal x[n] nos espaço das exponenciais complexas.
Torna-se claro que se podem obter as coordenadas Ck recorrendo a uma
matriz de mudança de base A. De acordo com a equação 27 a matriz A é
constituı́da por:

ej0Ω0 n /M0
 

 ej1Ω0 n /M1 

A=  ..  (34)
.
 
 
ej(N −1)Ω0 n /MN −1
onde:

Mk =< ejkΩ0 n , ejkΩ0 n > (35)


Note-se que o produto interno entre sinais, no intervalo n ∈ {0, 1, · · · , N −
1} é dado por:
N
X −1
< x[n], y[n] >= x[n]y[n] (36)
n=0

O programa apresentado na listagem 8 ilustra o cálculo dos coeficientes


da série de Fourier por aplicação da matriz de mudança de base.

Listagem 8: espacoDeSinais.m
somaDeSinusoides

xpn

25
Ck

A = zeros(N);

for k=0:N−1
exponencial = exp(j*k*omega0*n1);
% o comando seguinte é equivalente a:
% sum(exponencial.*exponencial)
norma2 = exponencial*exponencial';
A(k+1,:) = exponencial/norma2;
end

Ck = A*xpn'

Duas notas finais:

1. O produto interno entre vectores definido pela equação 24 representa


uma medida de semelhança entre vectores. Isto porque se quisermos
aproximar um vector ~v por uma constante α a multiplicar por um outro
vector ~u1 de módulo unitário, o valor da constante α deve ser igual
ao produto interno entre os dois vectores, porque este valor minimiza
o módulo do erro cometido na aproximação. Se tivermos agora dois
vectores de módulo unitário ~u1 e ~u2 e quisermos saber qual deles é o
mais semelhante ao vector ~v , o mais semelhante é aquele cujo produto
interno com ~v for maior, porque a aproximação de ~v pelo produto de
α com o vector em causa, resulta no menor erro de aproximação.
O produto interno entre sinais definido pela equação 36 representa
também uma medida de semelhança entre sinais. Esta medida é muito
importante na concepção de sistemas de telecomunicações, nomeada-
mente nos sistemas de telecomunicações digitais, uma vez que constituı́
a base da recepção de sinais digitais.

2. As bases vectoriais podem ser constituı́das por um conjunto qualquer de


vectores. No entanto, as bases de maior utilidade prática, são aquelas
que verificam as seguintes propriedades:

(a) são ortogonais, isto é, todos os vectores que constituem a base são
ortogonais entre si. Como consequência, cada coordenada repre-
senta a componente dos vectores numa única direcção;
(b) são completas, isto é, qualquer vector do espaço se pode represen-
tar sem que seja cometido qualquer erro de aproximação, por uma
combinação linear dos vectores da base.

26
As bases de sinais constituı́das por impulsos unitários e as constituı́das
por exponenciais complexas são ortogonais e são completas.

27
7 Transformada de Fourier de Sinais Discre-
tos
Um sinal discreto não periódico pode decompor-se na soma de infinitas ex-
ponenciais discretas dada pela equação 37.
1 Z
x[n] = X(Ω)ejΩn dΩ (37)
2π 2π
A função X(Ω) é a transformada de Fourier de sinais discretos e é dada
pela equação 38.
+∞
x[n]e−jΩn
X
X(Ω) = (38)
n=−∞

Dado um sinal discreto x[n] representado no domı́nio do tempo n, a


equação 38 permite representá-lo no domı́nio da frequência. Por outro lado,
dado um sinal x[n] representado no domı́nio da frequência Ω através da
sua transformada de Fourier X(Ω), a equação 37 permite representá-lo no
domı́nio do tempo.
A função complexa X(Ω) constitui o espectro do sinal discreto x[n]. O
módulo de X(Ω) constitui o espectro de amplitude do sinal x[n], enquanto a
fase de X(Ω) constitui o espectro de fase do sinal x[n].
A figura 11 ilustra a transformada de Fourier do sinal x[n], Note-se que
se trata de uma função complexa, o que implica a sua representação gráfica
em módulo e fase.
A figura 12 ilustra a obtenção do sinal x[n] a partir da sua transformada
de Fourier. A integração em Ω foi efectuada para Ω ∈ [−π/3 : π/3], Ω ∈
[−2π/3 : 2π/3] e Ω ∈ [−3π/3 : 3π/3], na primeira, segunda e terceira figuras,
respectivamente. Verifica-se que quando a integração é efectuada na gama
de frequências 2π o sinal obtido é o sinal x[n]. Nos outros dois casos o sinal
obtido é uma versão do sinal x[n] sem as componentes de alta frequência.
As figuras 11 e 12 foram obtidas por execução do programa apresentado
na listagem 9. Saliente-se que para tratamento das funções contı́nuas foi
usado o módulo de cálculo simbólico disponı́vel no Matlab.

Listagem 9: transformadaFourier.m
clear all
close all

sinalXn

28
6

0
−4 −3 −2 −1 0 1 2 3 4

−5
−4 −3 −2 −1 0 1 2 3 4

Figura 11: O módulo e a fase da transformada de Fourier do sinal x[n].

−2
−10 −5 0 5 10
5

−5
−10 −5 0 5 10
5

−5
−10 −5 0 5 10

Figura 12: O módulo e a fase da transformada de Fourier do sinal x[n].

syms n sym w

% descrição analı́tica do sinal x[n]

29
% (o impulso unitário no módulo de
% cálculo simbólico chama−se "charfcd[n0](n)"
% onde "n0" é o instante onde ∆[n] = 1 e
% "n" é a variável independente)
xn str = '';
for m=1:length(n)
xn str = strcat(xn str, ...
sprintf('%+.2f', xn(m)), ...
'*charfcn[', ...
sprintf('%d', n(m)), ...
'](n sym)');
end
xn str
xn sym = sym(xn str)
ec = sym('exp(−j*w* n sym)')

xw = symsum(xn sym *ec,n sym,min(n),max(n))

w vector = linspace(−pi,pi,100);
xw vector = double(subs(xw, w, w vector));

figure('PaperUnits', 'inches',...
'PaperSize',[5 3],...
'PaperPosition', [0 0 5 3])
axes('FontSize', 8)
subplot(2,1,1)
plot(w vector, abs(xw vector))
subplot(2,1,2)
plot(w vector, angle(xw vector))
%print −dpdf ../figuras/transformadaFourier.pdf
print −depsc ../figuras/transformadaFourier.eps

% obtenção de x[n] por integração de x(w) desde:


% k*(−pi/3) a k*(pi/3) com k = 1,2 e 3

figure('PaperUnits', 'inches',...
'PaperSize',[5 3],...
'PaperPosition', [0 0 5 3])
axes('FontSize', 8)
for k=1:3
n2 = [−10:10];
xn2 = zeros(size(n2));
for m=1:length(n2)
ec2 str = strcat('exp(j*w*(', num2str(n2(m)),'))')
ec2 = sym(ec2 str);
xn2(m) = 1/(2*pi)*double(int(xw*ec2,w,−pi/3*k,pi/3*k));
end
subplot(3,1,k)
stem(n2, real(xn2))

30
end
%print −dpdf ../figuras/transformadaFourierInversa.pdf
print −depsc ../figuras/transformadaFourierInversa.eps

O facto da representação no domı́nio da frequência de um sinal discreto


ser dada por uma função contı́nua, constitui um problema. Isto porque essa
representação não sendo um sinal discreto não pode ser manipulada usando
a teoria do processamento digital de sinais.

7.1 Transformada de Fourier de Sinais Discretos Periódicos


Aplicando a equação 38 a um sinal discreto periódico de perı́odo N amostras
representado pela equação 11, obtém-se:
+∞
X 2πk
X(Ω) = 2πCk δ(Ω − ) (39)
k=−∞ N
onde Ck representa a repetição periódica de perı́odo 2π dos coeficientes
da série de Fourier dados pela equação 12.
Verifica-se assim que tanto os sinais discretos não periódicos como os
periódicos podem ser representados no domı́nio da frequência usando a Trans-
formada de Fourier de Sinais Discretos.
A função X(Ω) dada pela equação 39 constitui o espectro dos sinais dis-
cretos periódicos.
Pelo facto do espectro dos sinais periódicos ser constituı́do por um con-
junto discreto de frequências (correpondentes aos múltiplos da sua frequência
fundamental) é habitual dizer-se que os sinais discretos periódicos têm espec-
tro de riscas ao contrário dos não periódicos que têm espectro contı́nuo.

31
8 Transformada de Fourier Discreta
Seja xp [n] um sinal discreto periódico de perı́odo N amostras, isto é, xp [n +
N ] = xp [n]. A transformada de Fourier discreta do sinal xp [n] é dada pela
equação 40.
N −1
xp [n]e−jkΩ0 n
X
X[k] = (40)
n=0

com Ω0 = 2πN
e k ∈ {0, 1, · · · N − 1}.
O sinal xp [n] pode ser obtido a partir da sua transformada de Fourier
discreta usando a transformada de Fourier discreta inversa. A transformada
de Fourier discreta inversa é dada pela equação 41.
−1
1 NX
x[n] = X[k]ejkΩ0 n (41)
N k=0
Comparando a equação 40 com a equação 12 verifica-se que:

X[k] = N Ck (42)
Por outro lado, comparando a equação 40 com a equação 38 verifica-se
que:


X[k] = X(Ω) = X(k ) (43)

Ω = kΩ0 = k 2π
N N
com k ∈ {0, 1, · · · N − 1}.
A equação 43 mostra que a transformada de Fourier discreta permite
contornar o problema referido no final da secção 7. O espectro de um sinal
discreto não periódico é uma função contı́nua. No entanto, usando a trans-
formada de Fourier discreta, ou seja, assumindo que o sinal é periódico com
perı́odo de N amostras, pode determinar-se o valor do espectro em N pontos
uniformemente espaçados entre 0 e 2π.
Uma nota final para referir que o número de operações envolvidas no
cálculo da transformada de Fourier discreta pela definição (equação 40) é
da ordem das N 2 operações. O cálculo da transformada de Fourier discreta
de uma imagem de 1000x1000 pixels, ou seja, a transformada de Fourier
discreta de um sinal com 106 de pontos, envolve portanto um número de
operações da ordem das 1012 operações. Existe, felizmente, um algoritmo
de cálculo rápido da transformada de Fourier discreta conhecido por Fast
Fourier Transform capaz de produzir o mesmo resultado efectuando apenas
um número de operações da ordem das N log2 N operações. No caso da

32
imagem de 1000x1000 pixels a transformada de Fourier discreta pode ser
calculada com um número de operações da ordem das 106 log2 106 = 106 ∗19, 9
em vez das 1012 envolvidas no cálculo pela definição. Em termos práticos
trata-se da diferença entre conseguir e não conseguir calcular transformadas
de Fourier discretas de imagens digitais.

33
A Dedução da fórmula trigonométrica cos(a) cos(b)
usando exponenciais complexas
Dados dois ângulos, a e b, se quiser saber quanto vale o produto dos cosenos
desses dois ângulos, e não tiver à mão nenhum formulário trigonométrico,
pode usar a relação 7 e fazer:

eja + e−ja ejb + e−jb


! !
cos(a) cos(b) =
2 2
e e + e e + e e + e−ja e−jb
ja jb ja −jb −ja jb
=
4
ej(a+b)
+e j(a−b)
+ e−j(a−b) + e−j(a+b)
=
4
ej(a+b) ej(a−b) e−j(a−b) e−j(a+b)
= + + +
4 4 4 4
j(a+b) −j(a+b) j(a−b) −j(a−b)
e +e e +e
= +
4 4
1 1
= cos(a + b) + cos(a − b)
2 2
Conclui-se portanto que:
1 1
cos(a) cos(b) = cos(a + b) + cos(a − b) (44)
2 2
Esta fórmula é muito importante para o estudo de sistemas de telecomu-
nicações, nomeadamente, para o estudo de sistemas de amplitude modulada.

34

Vous aimerez peut-être aussi