19.18 Use o MATLAB para gerar 64 pontos para a função
f(t)=cos (10 t)+sen(3 t)
de t=0 a 2 pi. Some uma componente aleatória ao sinal com a função randn. Tome a FFT desses valores e trace os resultados.

Passo 1

O enunciado pede para, usando MATLAB, gerar 64 pontos da função
f(t)=cos(10t)+sin(3t)
no intervalo de t=0 a 2pi, adicionar um ruído gaussiano via randn, calcular a transformada rápida de Fourier (FFT) desses valores e traçar tanto o sinal ruidoso no domínio do tempo quanto a magnitude da FFT no domínio da frequência. O conteúdo principal envolve discretização de sinais, ruído aleatório e uso da FFT para análise espectral.

Passo 2

Definimos o número de amostras N=64; criamos um vetor de tempo t uniformemente espaçado em [0,2pi] e montamos o sinal limpo f(t). Em MATLAB:
N = 64;
t = linspace(0,2*\pi,N);      % vetor de tempo de 64 pontos de 0 a 2\pi
f = cos(10*t) + sin(3*t);    % sinal limpo

Passo 3

Somamos ruído branco gaussiano usando randn, obtendo o sinal ruidoso :
x \(=\) f \(+\) randn(size(t));      % sinal com componente aleatória

Passo 4

Calculamos a FFT do vetor ruidoso. Em MATLAB chama-se diretamente fft:
X \(=\) fft(x);                  % FFT de x

Passo 5

Construímos o eixo de frequências. Primeiro o período de amostragem
a frequência de amostragem
e então o vetor de frequências em hertz
Em MATLAB:
Ts \(=\) t(\(2\)) - t(\(1\));            % período de amostragem
Fs \(=1\)/Ts;                   % frequência de amostragem
fvec \(=\) (\(0\):N-\(1\))*(Fs/N);       % eixo de frequências

Passo 6

Traçamos o sinal no tempo e a magnitude da FFT no domínio da frequência:
figure;
subplot(\(2,1\),\(1\));
plot(t,x);
xlabel('t (s)'); ylabel('x(t)');
title('Sinal ruidoso no domínio do tempo');

subplot(\(2,1\),\(2\));
stem(fvec, abs(X));
xlabel('f (Hz)'); ylabel('|X(f)|');
title('Magnitude da FFT');

Resposta

Segue o código MATLAB completo que executa todos os passos acima:
% Passo \(1\): parâmetros
N  \(=64\);
t  \(=\) linspace(\(0,2\)*pi,N);

% Passo \(2\): sinal limpo
f  \(=\) cos(\(10\)*t) \(+\) sin(\(3\)*t);

% Passo \(3\): adicionar ruído
x  \(=\) f \(+\) randn(size(t));

% Passo \(4\): FFT
X  \(=\) fft(x);

% Passo \(5\): eixo de frequências
Ts   \(=\) t(\(2\))-t(\(1\));
Fs   \(=1\)/Ts;
fvec \(=\) (\(0\):N-\(1\))*(Fs/N);

% Passo \(6\): plotagem
figure;
subplot(\(2,1\),\(1\));
plot(t,x);
xlabel('t (s)'); ylabel('x(t)');
title('Sinal ruidoso no domínio do tempo');

subplot(\(2,1\),\(2\));
stem(fvec, abs(X));
xlabel('f (Hz)'); ylabel('|X(f)|');
title('Magnitude da FFT');
Ao rodar este script, você verá no primeiro gráfico o sinal ruidoso no tempo e, no segundo, picos na magnitude da FFT correspondentes às componentes em Hz e Hz (além do efeito do ruído).

Exercícios de Livros Relacionados