Usando uma tabela, escreva a transformada de Fourier dos seguintes sinais. Faça um programa scilab para plotar tanto o sinal quanto a transformada.
Passo 1
O enunciado pede duas coisas: (1) escrever a transformada de Fourier do sinal dado e (2) fornecer um programa em Scilab que plote tanto o sinal no domínio do tempo quanto a sua transformada (aproximada numericamente) no domínio da frequência. O sinal dado é
Informações relevantes que o enunciado dá (e que vou usar explicitamente):
- A função
vale para (e normalmente vale na fronteira, mas isso não muda a transformada contínua), e vale fora. - Portanto, pegando
, o sinal é igual a para e para . Ou seja, o pulso tem largura e altura , e o fator escala a amplitude para . - Vou usar a convenção padrão de transformada de Fourier em frequência linear (Hz):
(Não foi dada convenção no enunciado; essa é a mais comum em sinais e sistemas e facilita a relação rect ↔ sinc.)
Passo 2
Intuição e fórmula básica: a transformada de um pulso retangular é uma função sinc. Vou derivar passo a passo para você entender e saber fazer na prova.
Definição do sinal em termos de intervalo:
Aplicamos a definição da transformada:
Agora resolvemos a integral passo a passo (sem pular etapas):
Calcule o numerador:
Usamos a identidade
. Reescrevendo com sinal trocado:
Substituindo na expressão da integral:
Cancelei os fatores
e
e simplifiquei:
Forma alternativa, usando a função sinc normalizada
:
porque
Observação importante (caso
): a expressão
tem forma indeterminada em
. Calculamos o limite:
que é simplesmente a área do pulso (
). Isso bate com a interpretação física: a componente DC é a área do sinal.
Passo 3
Tabela com o par tempo ↔ frequência (usando a convenção
):
| Sinal
|
Transformada
|
|---|---|
|
|
|
Nota didática: na tabela eu escrevi duas formas equivalentes.
denota
. Na prova você pode usar qualquer uma das formas, mas sempre explique o caso
(limite = 20).
Passo 4
Agora um programa Scilab para plotar o sinal no tempo e a sua transformada (aproximação numérica via FFT) e também sobrepor a transformada analítica para comparação. Vou comentar cada linha pra você entender o que acontece — copiou, colou e roda no Scilab:
// Parâmetros de amostragem
Fs = 200; // frequência de amostragem em Hz (quanto maior, melhor a aproximação)
dt = 1/Fs;
Ttot = 1; // duração total do sinal em segundos (escolha suficiente para ver a janela)
t = -Ttot/2:dt:(Ttot/2 - dt); // vetor tempo (simétrico)
//
// Definição do sinal f(t) = 5 * rect(t/4)
// rect(t/4) = 1 para |t| < 2, 0 fora
//
x = 5 * (abs(t) < 2); // cria um vetor com 5 onde |t|<2 e 0 caso contrário
// Plot do sinal no domínio do tempo
scf(0); clf();
subplot(2,1,1);
plot(t, x, 'b-');
xlabel('t (s)'); ylabel('f(t)');
xtitle('Sinal no tempo: f(t)=5*rect(t/4)');
xgrid();
// ===== Aproximação da transformada via FFT =====
// Preparar FFT
N = length(t);
X = fft(x); // FFT sem shift
X = fftshift(X); // centraliza frequência zero no meio do vetor
f = (-N/2:N/2-1)*(Fs/N); // eixo de frequências em Hz
// Escala para aproximar a transformada contínua: multiplicar por dt
X = X * dt;
// Plot da magnitude da FFT
subplot(2,1,2);
plot(f, abs(X), 'b-');
xlabel('f (Hz)'); ylabel('|F(f)|');
xtitle('Transformada (FFT aproximada) de f(t)');
xgrid();
drawlater();
// ===== Transformada analítica para sobrepor =====
F_ana = 5 * (sin(4*%pi*f)./( %pi*f )); // cuidado com f=0
// tratar o ponto f=0 (evita divisão por zero)
idx = find(abs(f) < 1e-12);
if size(idx) > 0 then F_ana(idx) = 20; end
plot(f, abs(F_ana), 'r--');
legend(['FFT (num)'; 'Analítica'], 'in_upper_right');
drawnow();
Explicações rápidas sobre o código (pra ficar claro na prova como reproduzir):
- A FFT computa uma aproximação discreta da transformada contínua. Multiplicamos por
para aproximar a integral contínua (Riemann sum). fftshiftorganiza o vetor de frequências de forma centrada em zero (útil para plot).F_anacalcula a expressão analíticaponto a ponto; tratamos numericamente pela substituição pelo limite . - Ajuste
FseTtotse quiser melhor resolução em frequência ou mais amostra temporal.
Passo 5
Exemplo numérico rápido pra você decorar: valor DC
Valor em
(apenas como exemplo de cálculo à mão):
o que mostra que a transformada tem zeros periódicos — característica típica de sinc (útil para provas).
Resposta
Programa Scilab (copiar e colar no Scilab):
// Parâmetros de amostragem
Fs = 200; // frequência de amostragem em Hz
dt = 1/Fs;
Ttot = 1;
t = -Ttot/2:dt:(Ttot/2 - dt);
// Definição do sinal f(t) = 5 * rect(t/4)
x = 5 * (abs(t) < 2);
// Plot do sinal no domínio do tempo
scf(0); clf();
subplot(2,1,1);
plot(t, x, 'b-');
xlabel('t (s)'); ylabel('f(t)');
xtitle('Sinal no tempo: f(t)=5*rect(t/4)');
xgrid();
// Aproximação da transformada via FFT
N = length(t);
X = fft(x);
X = fftshift(X);
f = (-N/2:N/2-1)*(Fs/N);
X = X * dt;
// Plot da magnitude da FFT
subplot(2,1,2);
plot(f, abs(X), 'b-');
xlabel('f (Hz)'); ylabel('|F(f)|');
xtitle('Transformada (FFT aproximada) de f(t)');
xgrid();
drawlater();
// Transformada analítica para sobrepor
F_ana = 5 * (sin(4*%pi*f)./( %pi*f ));
idx = find(abs(f) < 1e-12);
if size(idx) > 0 then F_ana(idx) = 20; end
plot(f, abs(F_ana), 'r--');
legend(['FFT (num)'; 'Analítica'], 'in_upper_right');
drawnow();