%% Resoluo em frequencia % Taxa de amostragem fsampling = 10; % kHz % resoluo mnima de frequncia df = 0.001; % nmero de amostras para resoluo escolhida n1 = fsampling/df; %% Parametros do sinal mensagem fm = 0.05; % kHz %% Escala temporal t = 0 : (1/fsampling) : 10*(1/fm); % Nmero de amostras do sinal nSamples = length(t); % O algortimo fft trabalha com sequncias que so potncia de 2, assim % foramos o nmero de amostras do fft ser potncia de 2. lfft = 2^(max(nextpow2(n1), nextpow2(nSamples))); % Contudo, para esse exemplo especialmente interessante o valor lfft = 200 lfft = 200; %% Modulao % ndice de modulao: ma = Am/Ac ma = 0.25; Ac = 1; Am = ma * Ac; %% Parametros da Portadora fc = 0.4; % Hz %% sinal mensagem m = Am*cos(2*pi*fm*t); %% Portadora c = Ac*cos(2*pi*fc*t); %% onda modulada AM Padro am = Ac*(1 + ma*cos(2*pi*fm*t) ).*cos(2*pi*fc*t); %% plot do sinal m(t) no tempo subplot(3,1,1); plot(t,m); title(['Sinal de mensagem m(t) - ndice de modulao: ' num2str(ma)]) xlabel('Tempo (s)') ylabel('m(t)') %% Plot do sinal M(f): single-sided amplitude spectrum. subplot(3,1,2); % fft yfft = fft(m,lfft)/lfft; % eixo das frequncias unilateral freq1 = [0 : fsampling/lfft : fsampling/2 - fsampling/lfft]; % fft unilateral yfftuni = yfft(1:lfft/2); % plotagem do espectro M(f) stem(freq1,abs(yfftuni)) % configurao do grfico title(['Amplitude unilateral do Espectro de m(t) - ndice de modulao: ' num2str(ma)]) xlabel('Frequency (Hz)') ylabel('|M(f)|') % delimita eixo para melhor visualizao axis([ 0 1 0 0.3]) %% Plot do sinal M(f): double-sided amplitude spectrum. subplot(3,1,3); % fftshift para rotacionar fft ym = fftshift(yfft); % Nova eixo da frequencia incluindo parte positiva e negativa freq = [-fsampling/2 : fsampling/lfft : fsampling/2 - fsampling/lfft]; % plotagem do espectro M(f) stem(freq,abs(ym)) % configurao do grfico title(['Amplitude bilateral do Espectro de m(t) - ndice de modulao: ' num2str(ma)]) xlabel('Frequency (Hz)') ylabel('|M(f)|') set(gcf,'color',[1 1 1]) % delimita eixo para melhor visualizao axis([ -1 1 0 0.3])
%% plot da portadora no tempo
% abre nova figura figure; subplot(3,1,1); plot( t, c ); title(['Portadora c(t) - ndice de modulao: ' num2str(ma)]) xlabel('Tempo (s)') ylabel('c(t)') %% Plot do sinal C(f): single-sided amplitude spectrum. subplot(3,1,2); % fft cfft = fft(c,lfft)/lfft; % eixo das frequncias unilateral freq1 = [0 : fsampling/lfft : fsampling/2 - fsampling/lfft]; % fft unilateral cfftuni = cfft(1:lfft/2); % plotagem do espectro C(f) stem(freq1,abs(cfftuni)) % configurao do grfico title(['Amplitude unilateral do Espectro de c(t) - ndice de modulao: ' num2str(ma)]) xlabel('Frequency (Hz)') ylabel('|C(f)|') %% Plot do sinal C(f): double-sided amplitude spectrum. subplot(3,1,3); freq = [-fsampling/2 : fsampling/lfft : fsampling/2 - fsampling/lfft]; yc = fftshift(cfft); stem(freq,abs(yc)) title(['Amplitude bilateral do Espectro de c(t) - ndice de modulao: ' num2str(ma)]) xlabel('Frequency (Hz)') ylabel('|C(f)|') set(gcf,'color',[1 1 1]) % delimita eixo para melhor visualizao axis([ -1 1 0 0.6]) %% plot da onda AM no tempo figure; subplot(3,1,1); plot( t, am ); hold on; % Plot do envolope com cor vermelha plot(t, Ac+m, '--r'); title(['Sinal Modulado em Amplitude s(t) - ndice de modulao: ' num2str(ma)]) xlabel('Tempo (s)') ylabel('s(t)') legend('Onda modulada AM', 'Envelope da onda modulada AM') %% Plot do sinal S(f): single-sided amplitude spectrum. subplot(3,1,2); % fft amfft = fft(am,lfft)/lfft; % eixo das frequncias unilateral freq1 = [0 : fsampling/lfft : fsampling/2 - fsampling/lfft]; % fft unilateral amfftuni = amfft(1:lfft/2); % plotagem do espectro S(f) stem(freq1,abs(amfftuni)) % configurao do grfico title(['Amplitude unilateral do Espectro de s(t) - ndice de modulao: ' num2str(ma)]) xlabel('Frequency (Hz)') ylabel('|S(f)|') %% Plot double-sided amplitude spectrum. subplot(3,1,3); freq = [-fsampling/2 : fsampling/lfft : fsampling/2 - fsampling/lfft]; yam = fftshift(amfft); stem(freq,abs(yam)) title(['Amplitude bilateral do Espectro de s(t) - ndice de modulao: ' num2str(ma)]) xlabel('Frequency (Hz)') ylabel('|S(f)|') axis([ -1 1 0 0.6]) set(gcf,'color',[1 1 1])