Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

matlab program for ook demodulation

597 views
Skip to first unread message

shravan s.m

unread,
Apr 6, 2011, 6:48:24 AM4/6/11
to
respected sir,
we are new to this matlab programming.we have
come to know about ook modulation but facing problem with matlab
program for ook demodulation.here we have taken sequence and we have
used minimum energy coding and then using this code we have modulated
a carrier.

next steps are 1.we have to transmit the signal through the awgn
channel
2.then receive it and remove the noise
3.demodulate the signal and abtain thedigital
signal
4.find ber
5.draw the graph between probability of error
and snr
please help me .
atleast give me any hints about functions i will try


clc
close all

a=[1 2 3 4 5 6 7 8];%sequence
map1=[];
l=length(a);%length of messege sequence
a1=[];
a2=[];
k=4;%[ME (n,k)]

for i=1:l
a1=de2bi(a(i),[k],'left-msb');%decimal to bit conversion
a2=[a2 a1];%concatination
end
x=a2;

%mapping
z = bi2de(reshape(x,k,length(x)/k).','left-msb'); %binary to decimal
conversion with left bit as msb
z=z';%row to coloumn
loop= length(x)/k;%no of iterations
for i=1:loop
if z(i)==0 %maps 0
map(i)=0;
else
n=z(i); %maps any other value other
than 0
map(i)= 2^(n-1);
end
end


%concatination of mapped sequence

for i=1:loop
kk = de2bi(map(i),[((2^k)-1)],2,'left-msb');
map1=[map1 kk ];
end


% Enter the two Amplitudes
% Amplitude for 0 bit
A1 = 0;
% Amplitude for 1 bit
A2 = 5;
% Frequency of Modulating Signal
f = 100;
% Sampling rate - This will define the resoultion
fs = 1000;
% Time for one bit
t = 0: 1/fs : 1;
% This time variable is just for plot
time = [];
ASK_signal = [];
Digital_signal = [];

for ii = 1: 1: length(map1)

% The ASK Signal
ASK_signal = [ASK_signal (map1(ii)==0)*A1*sin(2*pi*f*t)+...
(map1(ii)==1)*A2*sin(2*pi*f*t)];

% The Original Digital Signal
Digital_signal = [Digital_signal (map1(ii)==0)*...
zeros(1,length(t)) + (map1(ii)==1)*ones(1,length(t))];

time = [time t];
t = t + 1;

end

% Plot the ASK Signal
subplot(2,1,2);
plot(time,ASK_signal,'LineWidth',2);
xlabel('Time (bit period)');
ylabel('Amplitude');
title('ASK Signal with two Amplitudes');
grid on;

% Plot the Original Digital Signal
subplot(2,1,1);
plot(time,Digital_signal,'r','LineWidth',2);
xlabel('Time (bit period)');
ylabel('Amplitude');
title('Original Digital Signal');
axis([0 time(end) -0.5 1.5]);
grid on;


noise_signal=awgn(ASK_signal,10)
figure(2);
n_signal=awgn(map1,10);
plot(noise_signal);


tx=map1;
SNR = 0:1:20; % Range of SNR values, in dB.
numSNR = length(SNR);
BER = zeros(1, numSNR);
for n = 1:numSNR
rx= awgn(tx,SNR(n));
k=SNR(n)% Add Gaussian noise
w=max(rx);
for i=1:length(tx)
if rx(i)>.5
rx(i)=1;
else
rx(i)=0;
end

end
h=rx;
% Compute error rate.
[nErrors, BER(n)] = biterr(tx,rx);
end

% Plot BER results.
figure(3)
semilogy(SNR,BER,'r-');grid on;
legend('BER');
xlabel('SNR (dB)'); ylabel('BER');
title('Binary ook over noisey Channel');

0 new messages