xMeck
Electrical
- Nov 5, 2019
- 9
Hi I was just wondering if anyone could help me with my code, I am unsure how I would add a PhaseFrequencyOffset command. I read on MathWorks that you can use H = comm.PhaseFrequencyOffset(Name,Value), but I'm not entirely sure how id write this, as every time ive attempted it, it never has any effect on the wave.
What I'm basically looking to do is use both the frequency and phase separately so I can compare the two results afterwards, I want the offsets to only show on the demodulator signal, so id assume there's more code I need to add than just the main command.
Ill leave my current code below but any help would be appreciated as ive been stuck on this for a couple days now.
close all
clear all
clc
%%echo on
t0=.15; % signal duration
ts=1/1500; % sampling interval
fm=3/0.15; % message signal frequency
fc=250; % carrier frequency
a=5; % Modulation index a = amplitude of message/ amplitude of carrier
fs=1/ts; % sampling frequency
t=[0:ts:t0]; % time vector
df=0.3; % desired frequency resolution
% message signal
m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];
m=cos(2*pi*fm.*t);
c=cos(2*pi*fc.*t); % carrier signal
u=m.*c; % modulated signal
m_n=m/max(abs(m)); % normalized message signal
u=(1+a*m_n).*c; % modulated signal
%received signal
y=u.*c; % mixing
%Local oscillator - change the frequency and phase of c by desired values
[M,m,df1]=fftseq(m,ts,df); % Fourier transform
M=M/fs; % scaling
[U,u,df1]=fftseq(u,ts,df); % Fourier transform
U=U/fs; % scaling
[Y,y,df1]=fftseq(y,ts,df); % Fourier transform
Y=Y/fs; % scaling
f_cutoff=150; % cutoff freq. of the filter
n_cutoff=floor(150/df1); % Design the filter.
f=[0:df1:df1*(length-1)]-fs/2;
H=zeros(size(f));
H(1:n_cutoff)=2*ones(1,n_cutoff);
H(length(f)-n_cutoff+1:length(f))=2*ones(1,n_cutoff);
DEM=H.*Y; % spectrum of the filter output
dem=real(ifft(DEM))*fs; % filter output
% the effect of mixing.
figure(1);
subplot(3,1,1)
plot(m(1:length(t)))
title('Waveform of the Message Signal')
xlabel('Time')
subplot(3,1,2)
plot(u(1:length(t)))
title('Waveform of the Modulated Signal')
xlabel('Time')
subplot(3,1,3)
plot(y(1:length(t)))
title('Waveform of the Mixer Output')
xlabel('Time')
figure(2);
subplot(3,1,1)
plot(f,fftshift(abs(M)))
title('Spectrum of the Message Signal')
xlabel('Frequency')
subplot(3,1,2)
plot(f,fftshift(abs(U)))
title('Spectrum of the Modulated Signal')
xlabel('Frequency')
subplot(3,1,3)
plot(f,fftshift(abs(Y)))
title('Spectrum of the Mixer Output')
xlabel('Frequency')
% the effect of filtering on the mixer output.
figure(3);
subplot(3,1,1)
plot(f,fftshift(abs(Y)))
title('Spectrum of the Mixer Output')
xlabel('Frequency')
subplot(3,1,2)
plot(f,fftshift(abs(H)))
title('Lowpass Filter Characteristics')
xlabel('Frequency')
subplot(3,1,3)
plot(f,fftshift(abs(DEM)))
title('Spectrum of the Demodulator output')
xlabel('Frequency')
% to compare the spectra of the message and the received signal.
figure(4);
subplot(2,1,1)
plot(f,fftshift(abs(M)))
title('Spectrum of the Message Signal')
xlabel('Frequency')
subplot(2,1,2)
plot(f,fftshift(abs(DEM)))
title('Spectrum of the Demodulator Output')
xlabel('Frequency')
% the message and the demodulator output signals.
figure(5);
subplot(2,1,1)
plot(t,m(1:length(t)))
title('The Message Signal')
xlabel('Time')
subplot(2,1,2)
plot(t,dem(1:length(t)))
title('The Demodulator Output')
xlabel('Time')][/code]
What I'm basically looking to do is use both the frequency and phase separately so I can compare the two results afterwards, I want the offsets to only show on the demodulator signal, so id assume there's more code I need to add than just the main command.
Ill leave my current code below but any help would be appreciated as ive been stuck on this for a couple days now.
close all
clear all
clc
%%echo on
t0=.15; % signal duration
ts=1/1500; % sampling interval
fm=3/0.15; % message signal frequency
fc=250; % carrier frequency
a=5; % Modulation index a = amplitude of message/ amplitude of carrier
fs=1/ts; % sampling frequency
t=[0:ts:t0]; % time vector
df=0.3; % desired frequency resolution
% message signal
m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];
m=cos(2*pi*fm.*t);
c=cos(2*pi*fc.*t); % carrier signal
u=m.*c; % modulated signal
m_n=m/max(abs(m)); % normalized message signal
u=(1+a*m_n).*c; % modulated signal
%received signal
y=u.*c; % mixing
%Local oscillator - change the frequency and phase of c by desired values
[M,m,df1]=fftseq(m,ts,df); % Fourier transform
M=M/fs; % scaling
[U,u,df1]=fftseq(u,ts,df); % Fourier transform
U=U/fs; % scaling
[Y,y,df1]=fftseq(y,ts,df); % Fourier transform
Y=Y/fs; % scaling
f_cutoff=150; % cutoff freq. of the filter
n_cutoff=floor(150/df1); % Design the filter.
f=[0:df1:df1*(length-1)]-fs/2;
H=zeros(size(f));
H(1:n_cutoff)=2*ones(1,n_cutoff);
H(length(f)-n_cutoff+1:length(f))=2*ones(1,n_cutoff);
DEM=H.*Y; % spectrum of the filter output
dem=real(ifft(DEM))*fs; % filter output
% the effect of mixing.
figure(1);
subplot(3,1,1)
plot(m(1:length(t)))
title('Waveform of the Message Signal')
xlabel('Time')
subplot(3,1,2)
plot(u(1:length(t)))
title('Waveform of the Modulated Signal')
xlabel('Time')
subplot(3,1,3)
plot(y(1:length(t)))
title('Waveform of the Mixer Output')
xlabel('Time')
figure(2);
subplot(3,1,1)
plot(f,fftshift(abs(M)))
title('Spectrum of the Message Signal')
xlabel('Frequency')
subplot(3,1,2)
plot(f,fftshift(abs(U)))
title('Spectrum of the Modulated Signal')
xlabel('Frequency')
subplot(3,1,3)
plot(f,fftshift(abs(Y)))
title('Spectrum of the Mixer Output')
xlabel('Frequency')
% the effect of filtering on the mixer output.
figure(3);
subplot(3,1,1)
plot(f,fftshift(abs(Y)))
title('Spectrum of the Mixer Output')
xlabel('Frequency')
subplot(3,1,2)
plot(f,fftshift(abs(H)))
title('Lowpass Filter Characteristics')
xlabel('Frequency')
subplot(3,1,3)
plot(f,fftshift(abs(DEM)))
title('Spectrum of the Demodulator output')
xlabel('Frequency')
% to compare the spectra of the message and the received signal.
figure(4);
subplot(2,1,1)
plot(f,fftshift(abs(M)))
title('Spectrum of the Message Signal')
xlabel('Frequency')
subplot(2,1,2)
plot(f,fftshift(abs(DEM)))
title('Spectrum of the Demodulator Output')
xlabel('Frequency')
% the message and the demodulator output signals.
figure(5);
subplot(2,1,1)
plot(t,m(1:length(t)))
title('The Message Signal')
xlabel('Time')
subplot(2,1,2)
plot(t,dem(1:length(t)))
title('The Demodulator Output')
xlabel('Time')][/code]