# interplexmod

Interplex modulation

Since R2024a

## Syntax

``[modsignal,efficiency] = interplexmod(signal,ampfactor)``

## 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`.

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`

collapse all

### Interplex Modulation Workflow

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

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

`${\theta }_{N}={\mathrm{tan}}^{-1}\frac{{a}_{N}}{{a}_{1}}$`

where a represents the amplification factor.

### Interplex Modulation Equation

The generic interplex equation is given by this formula.

`$s\left(t\right)=\sqrt{P}\mathrm{cos}\left({\omega }_{c}t+\theta \left(t\right)\right)$`

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:

`$\theta \left(t\right)={\theta }_{1}{s}_{1}\left(t\right)+\sum _{n=2}^{N}{\theta }_{1}{s}_{1}\left(t\right){s}_{n}\left(t\right)$`

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\left(t\right)=\sqrt{P}\left(\mathrm{cos}\theta \left(t\right)-j\mathrm{sin}\theta \left(t\right)\right)$`

## References

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

## Version History

Introduced in R2024a