You are on page 1of 2

%generating 7 random sequences of 10000 bits each transmitted_sig=rand(7,10000); for i=1:7 for j=1:10000 if( transmitted_sig(i,j)>=0.

5) % to convert signal values to 1's and 0's transmitted_sig(i,j)=1; else transmitted_sig(i,j)=0; end end end

ami=zeros(7,10000); ami_energy=zeros(7,1); % creating AMI signal % if tally is 0, previously a 1 occured % if tally is 1, previously a -1 occured for i=1:7 tally=0; for j=1:10000 if(transmitted_sig(i,j)==1) if(tally==0) ami(i,j)=sqrt(2*(10^(0.2*(i-1)))); tally=1; elseif (tally==1) ami(i,j)=-sqrt(2*(10^(0.2*(i-1)))); tally=0; end end end %calculating the energy of an AMI signal ami_energy(i)=(sum((abs(ami(i,:)).^2)/(length(ami(i,:))))); end %plotting a sample of the random signal before AMI conversion transmitted_plot=transmitted_sig(3,1:20); figure;stairs(transmitted_plot); %sample waveform of an AMI signal ami_plot=ami(3,1:20); figure;stairs(ami_plot); %generating white gaussian noise gaussian=wgn(100,10000,0); noise_energy=zeros(100,1); white_noise_energy=zeros(7,1); ber=zeros(7,1); average_high=0; average_low=0; rec_sig=zeros(7,10000); dec_sig=zeros(7,10000);

%calculating the noise energy for i=1:7 for k=1:100 noise_energy(k)=sum(abs(gaussian(k,:).^2))/length(gaussian(k,:)); %adding energies of 100 noise signals white_noise_energy(i) = noise_energy(k) + white_noise_energy(i); %received signal rec_sig(i,:)=gaussian(k,:)+ami(i,:); count_low = 0;%to count the no.of negative valued signals count_high = 0;%to count the no.of positive valued signals for j = 1: 10000 if(rec_sig(i,j)>=0) average_high=average_high + rec_sig(i,j); count_high = count_high +1; else average_low = average_low + rec_sig(i,j); count_low = count_low +1; end end %finding the positive and negative average values average_high = average_high/count_high; average_low = average_low/count_low; %decoding the received signal back to 1's and 0's for j = 1: 10000 if(rec_sig(i,j)>average_high || rec_sig(i,j)< average_low) dec_sig(i,j)=1; elseif(rec_sig(i,j)<average_high && rec_sig(i,j)> average_low) dec_sig(i,j)=0; end %comparing the decoded signal with original transmitted signal if( dec_sig(i,j)~=transmitted_sig(i,j)) ber(i)=ber(i)+1; end end end %finding noise energy white_noise_energy(i)=white_noise_energy(i)/100; %finding bit error rate for a received signal ber(i)=ber(i)/(10000*100); end %finding Eb/no in dB scale snr=10*log10(ami_energy/white_noise_energy);

You might also like