Você está na página 1de 3

EN2611– Aula 03 – Prof.

Marcio Eisencraft – junho 2012

Aula 03 – Lab1: Sinais e Sistemas no Matlab®


Nesta aula reveem-se alguns conceitos básicos de sinais e sistemas no domínio do tempo e da
frequência usando o Matlab®. Os conceitos vistos aqui são fundamentais para que, em aulas
futuras, estudemos a simulação de sistemas de comunicação digital.

Atividade 01
A seguinte sequência de comandos pode ser usada para gerar um tom em 700 Hz que dura 2s.
%Atividade1.m
clear all; close all;
Fs = 16000; %Frequência de amostragem
Duracao = 2; %Duração em segundos
tempotom = 0:1/Fs:Duracao; %Vetor de tempos
freqtom = 700;
xtom = cos(2*pi*freqtom*(0:Duracao*Fs)/Fs);
sound(xtom,Fs);

Execute o programa Atividade1.m e comente o resultado obtido. Quantas amostras tem o


sinal xtom? Justifique.

Atividade 02
Seja g ( t ) um sinal de potência e


 g ( t ), t ≤ T
gT ( t ) =  2 .
 0, caso contrário


Definimos a densidade espectral de potência (PSD – Power Spectral Density) de g ( t ) como

GT ( f )
2

S g ( f ) ≜ lim
T →+∞ T
em que GT ( f ) é a transformada de Fourier de gT ( t ) . Nas aulas de teoria, mostraremos que

a potência Pg de g ( t ) é dada por

+∞
Pg = ∫ S g ( f )df
−∞

A PSD de um sinal pode ser obtida no Matlab® usando a função psd. A seguinte sequência
de comandos calcula a PSD do tom gerado na Atividade 1.
% Atividade 2
h = spectrum.welch; % Cria um estimador espectral de Welch.
HPSDtom = psd(h,xtom,'Fs',Fs,'NFFT', 4048);% Calcula a PSD
figure(1);
plot(HPSDtom.Frequencies,HPSDtom.Data/max(HPSDtom.Data));

1
EN2611– Aula 03 – Prof. Marcio Eisencraft – junho 2012

axis([0 2000 0 1]); grid;


xlabel('f(Hz)');
ylabel('PSD normalizada');

Acrescente estas linhas ao programa da Atividade 1 e comente os resultados obtidos. Mude a


frequência da senóide gerada e comente os resultados.

Atividade 03
O programa a seguir repete as Atividades 1 e 2 para o caso de um pulso retangular de 0.5 ms.
Lembre-se que
t 
Π   ⇔ τ sinc ( π f τ )
 τ 

% Atividade 3 Pulso retangular


clear all; close all;
Fs = 16000; %Frequência de amostragem
tpulso = 0:1/Fs:4;
pulso = ((tpulso-.0005)<0);
figure(2);
subplot(211); plot(tpulso,pulso);
axis([0 0.010 -0.1 1.1]);
grid;
title('Pulso de 0.5ms');
ylabel('\Pi((t/0.0005)-0.00025)');
xlabel('t(s)');
h = spectrum.welch; % Cria um estimador espectral de Welch.
HPSDpulso = psd(h,pulso,'Fs',Fs);
subplot(212);
plot(HPSDpulso.Frequencies,HPSDpulso.Data/max(HPSDpulso.Data),'r');
grid;
xlabel('f(Hz)');
ylabel('PSD normalizada');

Os resultados obtidos estão de acordo com o esperado? Comente e justifique.

Atividade 04
Um filtro real muito usado em aproximações de filtros passa-baixas ideais é o filtro de But-
terworth. O seguinte programa obtém os coeficientes e gera a resposta em frequência de um
filtro passa-baixas de Butterworth de ordem 30 e frequência de corte 2 kHz.
% Atividade 4 - Filtro de Butterworth
clear all; close all;
N = 30; %Ordem do Filtro
Wn = 2*pi*2000; %rad/s - frequência de corte
[Bbut,Abut] = butter(N,Wn,'s'); %Filtro de Butterworth
%Resposta em frequência
%Faixa de frequências em que H(j\omega) é calculada
Fs = 16000; %Frequência de amostragem
w = linspace(0,2*pi*Fs/2,1000);
f = w/(2*pi);
[Hbut] = freqs(Bbut,Abut,w);

2
EN2611– Aula 03 – Prof. Marcio Eisencraft – junho 2012

plot(f,abs(Hbut));
xlabel('f (Hz)'); ylabel ('|H(f)|');
grid;

Rode o programa e observe os resultados obtidos. Como podemos modifica-lo de forma a


obter um filtro passa-altas?

Atividade 05
Podemos filtrar os tons gerados na Atividade 01 usando os filtros da Atividade 04. Veja a
sequência de comandos abaixo.
%Atividade 05- filtragem tom
close all;
sysbut = tf(Bbut,Abut);
tomfilt = lsim(sysbut,xtom,tempotom)';
HPSDtomfilt = psd(h,tomfilt,'Fs',Fs);
figure (1);
plot(f,abs(Hbut),HPSDtom.Frequencies,HPSDtom.Data/max(HPSDtom.Data),HPSDtom
filt.Frequencies,HPSDtomfilt.Data/max(HPSDtom.Data))
grid;
legend ('H(f)', 'x(t) - tom original', 'y(t) - tom filtrado');
xlabel('f (Hz)');
ylabel('PSD normalizaza');

Rode o programa e comente os resultados obtidos. Mude a frequência do tom gerado para
frequências acima da frequência de corte do filtro. O que ocorre?

Atividade 06
Na seguinte sequência de comandos, usamos o filtro da Atividade 04 para filtrar o pulso da
Atividade 03. Rode esta sequência e verifique o que ocorre com o pulso filtrado no domínio
do tempo e da frequência.
% Atividade 06 - filtragem pulso
sysbut = tf(Bbut,Abut);
pulsofilt = lsim(sysbut,pulso,tpulso)';
HPSDpulsofilt = psd(h,pulsofilt,'Fs',Fs);
close all;
figure(1);
subplot(211); plot(tpulso,pulso,tpulso,pulsofilt); axis([0 0.01 -0.5 1.1]);
grid;
xlabel('t(s)');
ylabel('x(t), y(t)');
legend('x(t)', 'y(t)');
%freq
subplot(212);
plot(f,abs(Hbut),HPSDpulso.Frequencies,HPSDpulso.Data/max(HPSDpulso.Data),H
PSDpulsofilt.Frequencies,HPSDpulsofilt.Data/max(HPSDpulsofilt.Data))
grid;
xlabel('f(Hz)');
ylabel('PSD nromalizada');
legend('H(f)', 'PSD de x(t)', 'PSD de y(t)');
Rode novamente o programa, mas agora para filtros com frequência de corte 500Hz e
4000Hz. Comente os resultados obtidos. Tente usar também filtros passa-altas.

Você também pode gostar