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)