+ Post New Thread
Results 1 to 5 of 5
  1. #1
    Newbie level 4
    Points: 379, Level: 4

    Join Date
    May 2017
    Posts
    5
    Helped
    0 / 0
    Points
    379
    Level
    4

    Regarding OFDM index modulation?

    can someone please share the Bit error rate code of basic OFDM- index modulation on my mail id MODERATOR ACTION: email address is removed
    Last edited by bassa; 9th January 2019 at 10:03. Reason: remove email address

    •   AltAdvertisment

        
       

  2. #2
    Full Member level 4
    Points: 2,169, Level: 10
    Achievements:
    Created Blog entry

    Join Date
    Oct 2013
    Location
    Sweden
    Posts
    204
    Helped
    68 / 68
    Points
    2,169
    Level
    10
    Blog Entries
    6

    Re: Regarding OFDM index modulation?

    Quote Originally Posted by iamsamriti View Post
    can someone please share the Bit error rate code of basic OFDM- index modulation on my mail id MODERATOR ACTION: email address is removed
    What programming language would you like your code to be in?

    How would you like your bits to be mapped to symbols? (e.g. QAM, PSK, etc).

    I don't think many researchers are interested in index modulation, so it might be advisable to start with standard OFDM, then modify your code for index modulation.



    •   AltAdvertisment

        
       

  3. #3
    Newbie level 4
    Points: 379, Level: 4

    Join Date
    May 2017
    Posts
    5
    Helped
    0 / 0
    Points
    379
    Level
    4

    Re: Regarding OFDM index modulation?

    Quote Originally Posted by weetabixharry View Post
    What programming language would you like your code to be in?

    How would you like your bits to be mapped to symbols? (e.g. QAM, PSK, etc).

    I don't think many researchers are interested in index modulation, so it might be advisable to start with standard OFDM, then modify your code for index modulation.
    thanx for replying. i want coding in matlab using QAM...i have developed code for OFDM index modulation in matlab but not getting the desired Bit error rate curve.



    •   AltAdvertisment

        
       

  4. #4
    Full Member level 4
    Points: 2,169, Level: 10
    Achievements:
    Created Blog entry

    Join Date
    Oct 2013
    Location
    Sweden
    Posts
    204
    Helped
    68 / 68
    Points
    2,169
    Level
    10
    Blog Entries
    6

    Re: Regarding OFDM index modulation?

    If you paste your code here, then someone (probably me) will help you. Also provide some description of why you think your BER curve is not correct.



  5. #5
    Newbie level 4
    Points: 379, Level: 4

    Join Date
    May 2017
    Posts
    5
    Helped
    0 / 0
    Points
    379
    Level
    4

    Re: Regarding OFDM index modulation?

    Code:
    clear all;
    close all;
    clc;
    nsym=10^2;
    %nbitspersym=12
    bits=(1:12)
    n=4
    g=2;
    %g1=bits(1:6) % division of 16 FFT size into 8 FFT subcarriers.
    %g2=bits(7:12) % division of 16  FFT size into  8 FFT subcarriers
    
    ipbits = randi([0,1], 1, 600) % generation of random bits
    M=4;
    Z=reshape(ipbits,100,6)
    k=log2(M)
    %n=nFFT/g;
    EbN0=1:10
    
    for i1=1:10
        EbN0dB=i1
        
        BER=[];
    for i=1:100
      
    
    p1=Z(i,:)
    % p1=ipbits(1:6) % it will take first 8 bits
    %p1=[1 1 0 1 1 0];
    %p2 = ipbits(7:12) ;
     s1 = p1(1:2) 
    s2= p1(3:6)
    % s3=p1(5:6);
    % s4= p1(7:8);
    % s33=s2
    s22=reshape(s2,2,2).'
    s222=bi2de(s22, 'left-msb')
    
    ipMod = (1/sqrt(2))*qammod(s222 , M)
     F=zeros(4,1);
    if s1==[0 0]
        F(1,1)=ipMod(1)
       F(2,1)=ipMod(2)
        F(3,1)=0
         F(4,1)=0
    
    elseif s1==[0 1]
        F(1,1)=0
       F(2,1)=ipMod(1)
        F(3,1)=ipMod(2)
         F(4,1)=0
    
    elseif s1==[1 0]
        F(1,1)=0
       F(2,1)=ipMod(1)
        F(3,1)=0
         F(4,1)=ipMod(2)
    
    elseif s1==[1 1]
        F(1,1)=ipMod(1)
       F(2,1)=0
        F(3,1)=0
         F(4,1)=ipMod(2)
    
    end
    F.'
    %=ifft(Sq1,N)*sqrt(N)%
     xt=ifft(F).'
        %xt=xt.'
        xt=[xt(4) xt]
    %xt=(nFFT/sqrt(nDSC))*ifft(fftshift(xF.')).';
    %x_with_cp = [x(4) x]; % cp addition
    
    % adding noise
    nt = (randn + j*randn)./sqrt(2)
    
      yt = xt +( (10.^(-EbN0dB/10)).*nt)   
    
    yyt=yt(2:5)
    yyt1=fft(yyt)
    
    [temp, idx] = sort( yyt1, 'descend' )
    n = temp(1:2)
    idx = idx(1:2)
    
    %zzt=(abs(yyt1))
    zzt1=(abs(yyt1).^2)
    [max1, ind1] = max(zzt1)
    zzt1(ind1)      = -Inf;
    [max2, ind2] = max(zzt1)
    zzt1(ind2)      = -Inf;
    
    rec=[(ind1) (ind2)]
    a1=1;
    while(a1==1)
    if rec== [1 2]|rec== [2 1]
        bitts=[0 0]
       a1=0;
    elseif rec== [2 3]|rec== [3 2]
        bitts=[0 1]
       a1=0;
    elseif rec== [2 4]| rec== [4 2]
        bitts =[1 0]
      a1=0;
    elseif rec==[4 1]|rec==[1 4]
        bitts=[1 1]
        a1=0;
    elseif rec==[3 1]|rec==[1 3]
     BER12=0
     break
        % bitts=[1 1] 
    elseif rec==[4 3]|rec==[3 4]
     BER12=0
        break
       % bitts=[0 0]
    end
    % finding the minimum distance between received vector and original symbols
    % original symbols
     orig=[0 0]
     conv=bi2de(orig, 'left-msb')
      ipMod = (1/sqrt(2))*qammod(conv , M)
     
     orig1=[0 1]
     conv1=bi2de(orig1, 'left-msb')
     ipMod1 = (1/sqrt(2))*qammod(conv1 , M)
     
     orig2=[1 0]
     conv2=bi2de(orig2, 'left-msb')
     ipMod2 = (1/sqrt(2))*qammod(conv2 , M)
     
     orig3=[1 1]
     conv3=bi2de(orig3, 'left-msb')
     ipMod3 = (1/sqrt(2))*qammod(conv3 , M)
     
     xxt=[ipMod ipMod1 ipMod2 ipMod3]
     
     D1 =norm(n(1) - xxt(1))
     D2 = norm(n(1) - xxt(2))
     D3 = norm(n(1) - xxt(3))
     D4 = norm(n(1) - xxt(4))
     D=[D1 D2 D3 D4]
     D5=min(D)
     result = find(D==min(D))
     
     
      DD1 = norm(n(2) - xxt(1))
     DD2 = norm(n(2) - xxt(2))
     DD3 = norm(n(2) - xxt(3))
     DD4 = norm(n(2) - xxt(4))
     DD=[DD1 DD2 DD3 DD4]
     DD5=min(DD)
     result1 = find(DD==min(DD))
     G=[DD5 D5]
     
     [tempp, idxx] = sort( G, 'descend' )
     nn = tempp(1:2)
     idxx = idxx(1:2)
     idx1=sort(idxx) % sort according to tempp;
    %    idx1=[result result1]
    %    
    %    [~, F] = sort(idx1)
    % F = F(1:2)
    %   D1 = norm(yyt1(1) - xxt(1))
    %  D2 = norm(yyt1(1) - xxt(2))
    %  D3 = norm(yyt1(1) - xxt(3))
    %  D4 = norm(yyt1(1) - xxt(4))
    %  D=[D1 D2 D3 D4]
    %  D5=min(D)
    %  result = find(D==min(D))
    %  
    %   
    %   DD1 = norm(yyt1(2) - xxt(1))
    %  DD2 = norm(yyt1(2) - xxt(2))
    %  DD3 = norm(yyt1(2) - xxt(3))
    %  DD4 = norm(yyt1(2) - xxt(4))
    %  DD=[DD1 DD2 DD3 DD4]
    %   DD5=min(DD)
    %    result1 = find(DD==min(DD))
    %  
    %   
    %    DDD1 = norm(yyt1(3) - xxt(1))
    %  DDD2 = norm(yyt1(3) - xxt(2))
    %  DDD3 = norm(yyt1(3) - xxt(3))
    %  DDD4 = norm(yyt1(3) - xxt(4))
    %  DDD=[DDD1 DDD2 DDD3 DDD4]
    %   DDD5=min(DDD)
    %   result2 = find(DDD==min(DDD))
    %   
    %    DDDD1 = norm(yyt1(4) - xxt(1))
    %  DDDD2 = norm(yyt1(4) - xxt(2))
    %  DDDD3 = norm(yyt1(4) - xxt(3))
    %  DDDD4 = norm(yyt1(4) - xxt(4))
    %  DDDD=[DDDD1 DDDD2 DDDD3 DDDD4]
    %   DDDD5=min(DDDD)
    %   result3 = find(DDDD==min(DDDD))
    %  
    %    F=[D5 DD5 DDD5 DDDD5]
       
       
    %     reeesult=[result result1 result2 result3]
    
        
    %     [temp1, idx1] = sort( F, 'ascend' )
    % n = temp1(1:2)
    % idx1 = idx1(1:2)
        
    %         [min1, ind1] = min(F)
    % F(ind1)      = Inf;
    % [min2, ind2] = min(F)
    % F(ind2)      = Inf;
    % rec1=[(ind1) (ind2)]
    
    if idx1== [1 2]
         biitts=[0 0  0 1]
    elseif idx1==[2 1]
        message('i m here')
        biitts=[ 0 1 0 0]
    elseif idx1== [2 3]
        message('i m here')
        biitts=[0 1  1 0 ]
    elseif idx1==[3 2]
        message('i m here')
        biitts=[ 1 0 0 1 ]
    elseif idx1== [2 4]
        message('i m here')
        biitts =[0 1 1 1]
    elseif idx1==[4 2]
        message('i m here')
        biitts =[1 1 0 1]
    elseif idx1==[4 1]
        message('i m here')
        biitts=[1 1  0 0]
    elseif idx1==[1 4]
        message('i m here')
        biitts=[ 0 0 1 1]
    elseif idx1==[3 1]
        message('i m here')
         biitts=[1 0 0 0]
    elseif idx1==[1 3]
        message('i m here')
        biitts=[0 0 1 0]
    elseif G1==[1 1]
        biitts=[0 0 0 0]
    elseif G1==[2 2]
        biitts=[0 1 0 1]
    elseif G1==[3 3]
        biitts=[1 0 1 0]
    elseif G1==[4 4]
        biitts=[1 1 1 1]
    end
    S=[bitts biitts]
        
    %  A2 = sort(F(:))
    % out=A2(1)
    % out1 = A2(2)
    % result33 = find(DDDD==min(DDDD))
    
    
    BER12=sum(abs(p1-S))/6
    
    end
    BER=[BER BER12];
    end
    T_BER(i1)=sum(BER)/100
    end
    semilogy(EbN0,smooth(abs(T_BER)),'*-');
    xlabel('SNR');
    ylabel('EbN0dB');
    
    legend('BER curve for OFDM index modulation');



    this is my code of OFDM index modulation which is not correct ...somebody plz help me to get the right curve according to the base paper of 2013.... i want curve given on page 5544 of the link given below
    https://ieeexplore.ieee.org/abstract/document/6587554
    Last edited by bassa; 6th February 2019 at 09:16. Reason: add code tag



--[[ ]]--