Code covered by the BSD License  

Highlights from
SDM & DDM

image thumbnail
from SDM & DDM by Ashwini
Sum Depth of Modulation & Difference Depth of Modulation

sdm_ddm.m
close all;
clear all;
clc
%%--- Program to find SDM (Sum Depth of modulation) ...
%%--- and DDM (Difference depth of modulation)
%%--- Used in ILS (Instrument Landing System)
%%% Created by:Ashwini Deshpande, (vd.ashwini@yahoo.co.in) 10/28/09

Fs=10e3;	%Sampling Frequency
fc=3e3;     %Carrier Frequency
t=(0:Fs)/Fs';   %Time vector
L=1000;     %Length of FFT
x=0.2*sin(2*pi*90*t)+0.2*sin(2*pi*150*t)+0.02*sin(2*pi*1020*t); % Modulating Signal contains 3 freq components
am=(1+1*x).*cos(2*pi*fc*t); % AM Modulation
%ammod(x,fc,Fs);% dam=amdemod(am,fc,Fs);

%AM demodulation
y=am;
wid = size(y,1);
if(wid==1)
    y=y(:);
end
z=y.*(1*cos(2*pi*fc*t))';
[num,den]=butter(5,fc*2/Fs);
for i=1:size(y, 2)
    z(:,i)=filtfilt(num,den,z(:,i))*2;
end
z=z-0;
if(wid==1)
    z=z';
end
dam=z;
% dam=dam(1000:5000);

%Filtering
[b,a]=butter(1,[80 100]*2/Fs,'bandpass');
dam1=filter(b,a,dam);
[b,a]=butter(1,[140 160]*2/Fs,'bandpass');
dam2=filter(b,a,dam);

dam1=dam1(1000:5000);
dam2=dam2(1000:5000);

NFFT=2^nextpow2(L);
f=Fs*linspace(0,1,NFFT);
am_fft=fft(am,NFFT)/L;
dam_fft1=fft(dam1,NFFT)/L;
dam_fft2=fft(dam2,NFFT)/L;

%Plotting
subplot(411)
plot(t,am);axis([0 0.1 -1 1])
hold on;
plot(t,x,'r');grid on
axis([0 0.1 -2 2])

subplot(412)
plot(f,2*abs(am_fft));grid on
axis([0 5000 0 1])

subplot(413)
plot(dam1(1:1000));grid on
hold on
plot(dam2(1:1000),'r');grid on

subplot(414)
plot(f,2*abs(dam_fft1));grid on
hold on
plot(f,2*abs(dam_fft2),'r');
axis([0 500 0 0.5])

am_max=max(am);
am_min=abs(min(am));
dam_max1=max(dam1);
dam_min1=abs(min(dam1));
dam_max2=max(dam2);
dam_min2=abs(min(dam2));

am_avg=(am_max+am_min)/2;
dam_avg_90=(dam_max1+dam_min1)/2;
dam_avg_150=(dam_max2+dam_min2)/2;

% m1=(am_max-abs(am_min))/(am_max+abs(am_min))
% m2=(dam_max1-dam_min1)/(dam_max1+dam_min1)
% m3=(dam_max2-dam_min2)/(dam_max2+dam_min2)

%Calculate SDM and DDM
sdm=abs(dam_avg_150+dam_avg_90)
ddm=abs(-dam_avg_150+dam_avg_90)

Contact us at files@mathworks.com