Main Content

interplexmod

Interplex modulation

Since R2024a

    Description

    example

    [modsignal,efficiency] = interplexmod(signal,ampfactor) modulates the input signals signal and returns an interplexed signal modsignal and the power efficiency of the interplexing process efficiency. The amplification factor ampfactor defines the power distribution between the signals.

    For more information, see Interplex Modulation Workflow.

    Examples

    collapse all

    Generate four random signals to modulate.

    numSignals = 4;
    x = 2*randi([0 1],1000,numSignals) - 1;

    Set the power distribution among the signals to 20%, 20%, 40%, and 20%, respectively.

    Calculate the corresponding amplitude factors as the square root of the power distribution of that signal.

    ampfactor = [sqrt(0.2) sqrt(0.2) sqrt(0.4) sqrt(0.2)];

    Apply interplex modulation to the four signals.

    [y,efficiency] = interplexmod(x,ampfactor);

    Display the power efficiency of interplexing process.

    disp(efficiency)
        0.4167
    

    Perform interplex modulation on these three Navigation with Indian Constellation (NavIC) signals to generate a complex baseband waveform.

    • Standard Positioning Service (SPS) signal

    • Restricted Service (RS) data signal

    • RS-pilot signal

    Set the pseudo-random number (PRN) index for the satellite.

    PRNID = 1;

    Set the number of navigation data bits in the generated waveform.

    numNavDataBits = 3;

    NavIC uses course acquisition codes (C/A-codes) for spreading the navigation data spectrum at a chipping rate of 1.023 Mcps.

    numCAChipsPerDataBit = 1023*20;
    randNavICData = 1 - 2*randi([0 1],1,numNavDataBits);
    caCode = 1 - 2*double(gnssCACode(PRNID,"NavIC L5-SPS"));
    
    % Each navigation data bit corresponds to 20 repetitions of C/A-code
    caBits = repmat(caCode,20,1);
    SPSsig = caBits.*randNavICData; % Spread SPS data

    Generate random data bits for RS-pilot and RS-data signals.

    dummyRSP = randi([0 1],numCAChipsPerDataBit*numNavDataBits,1); % RS pilot signal
    dummyRSD = randi([0 1],numCAChipsPerDataBit*numNavDataBits,1); % RS data signal

    Modulate the RS signals by using binary offset carrier (BOC) modulation. Rate-match the SPS signals with the BOC-modulated RS signals.

    RSPsig = bocmod(dummyRSP,5,2);
    RSDsig = bocmod(dummyRSD,5,2);
    RateMatchedSPSsig = repelem(SPSsig(:),10,1);

    Set the amplification factors for the RS-data, SPS, and RS-pilot signals, in that order.

    ampfactors  = [2/3 sqrt(2)/3 sqrt(2)/3];

    Perform interplex modulation of SPS, RS-pilot, and RS-data signals.

    [NavICBBWaveform,efficiency] = interplexmod([RSDsig,RateMatchedSPSsig,RSPsig],ampfactors);

    Visualize the complex NavIC baseband waveform.

    fs = 10*1.023e6;                               % Sample rate
    bbscope = spectrumAnalyzer(SampleRate=fs, ...
         Title="Power spectrum of NavIC signals");
    bbscope(NavICBBWaveform)

    Perform interplex modulation on these three Global Positioning System (GPS) signals to generate a complex baseband waveform.

    • C/A-code

    • L1 civil (L1C) data ranging code (L1CD)

    • M-code

    Set the PRN index for the satellite.

    PRNID = 1;

    Set the number of C/A-code navigation data bits in the generated waveform.

    numNavDataBits = 1;

    Initialize random data for each GPS signal.

    randLNAVData = randi([0 1],1,numNavDataBits);
    % L1CD data bits are twice of C/A-code for same time duration
    randCNAV2Data = randi([0 1],1,2*numNavDataBits);

    Generate a C/A-code for the set PRNID.

    caCode = gnssCACode(PRNID,"GPS");
    tempCABits = repmat(caCode,20,1);
    caBits = xor(tempCABits,randLNAVData);
    rateMatchedCABits = repelem(caBits(:),40); % Rate match with M-code signal
    caCodeSig = 1 - 2*rateMatchedCABits(:);

    Generate L1C-codes for the set PRNID.

    l1cd = gpsL1CCodes(PRNID);
    licdBits = xor(l1cd,randCNAV2Data);
    l1cdSig = -1*bocmod(licdBits(:),1,1,20);

    The spreading code rate for the M-code is 5.115 Mcps, and one bit duration is 20 ms.

    numChipsPerDataBit = (5*1023)*20;

    Generate random data bits as M-coded data, and then modulate the bits using BOC modulation.

    mCode = randi([0,1],numChipsPerDataBit*numNavDataBits,1);
    mCodeSig = bocmod(mCode,10,5);

    Set the amplification factors for the C/A-code, L1CD, and M-code signals, in that order.

    ampfactors = [sqrt(0.4) sqrt(0.1) sqrt(0.4)];

    Perform interplex modulation of the three GPS signals.

    [GPSL1BBWaveform,efficiency] = interplexmod([caCodeSig l1cdSig mCodeSig],ampfactors);

    Visualize the complex GPS baseband waveform.

    fs = 40*1.023e6;                              % Sample rate
    bbscope = spectrumAnalyzer(SampleRate=fs, ...
          Title="Power spectrum of GPS signals");
    bbscope(GPSL1BBWaveform)

    Input Arguments

    collapse all

    Input signals, specified as a m-by-n matrix. m indicates the length of the input signals and n indicates the number of signals to be interplexed. n must be in the range [1, 5].

    Data Types: double
    Complex Number Support: Yes

    Amplification factor, specified as one of these options.

    • Scalar — Use this option to assign the same value to each input signal.

    • Vector — Use this option to assign an individual value to each input signal. The length of the vector must be equal to the number of columns in signal.

    Amplification factor defines the power distribution between the signals. interplexmod function internally derives modulation indices corresponding to each signal using their amplification factors. These modulation indices are then used to compute modsignal.

    For more information, see Interplex Modulation Workflow.

    Data Types: double

    Output Arguments

    collapse all

    Interplex modulated output signal, returned as a column vector. The length of the column vector is equal to the number of rows in signal.

    Data Types: double
    Complex Number Support: Yes

    Power efficiency of the interplexing process, returned as a scalar in the range [0, 1].

    Efficiency is computed as total signal power divided by the total transmitted power.

    Data Types: double

    More About

    collapse all

    Interplex Modulation Workflow

    This block diagram helps to understand how multiple input signals are modulated by the interplexmod function.

    The interplex function accepts multiple input signals and their corresponding amplification factors. The function internally converts the amplification factors to modulation indices to interplex modulate all the signals.

    Here, thetaN represents the modulation index and is calculated internally using this formula:

    θN=tan1aNa1

    where a represents the amplification factor.

    Interplex Modulation Equation

    The generic interplex equation is given by this formula.

    s(t)=Pcos(ωct+θ(t))

    where:

    • P is total average power, which is equal to 1 in this function implementation.

    • ωc is the carrier frequency.

    • θ(t) is the phase modulation and is calculated as:

      θ(t)=θ1s1(t)+n=2Nθ1s1(t)sn(t)

      where:

      • θn is the modulation index.

      • sn is square wave of amplitude 1.

      • t is the instantaneous time.

    Considering the above equation, this is the equivalent baseband interplexed signal equation.

    s(t)=P(cosθ(t)jsinθ(t))

    References

    [1] Butman, S. and Timor, U. Interplex - An efficient Multichannel PSK/PM Telemetry System. IEEE Transactions on Communications, 20(3), pp.415-419.

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2024a

    See Also

    |