# mil188qammod

MIL-STD-188-110 B/C standard-specific quadrature amplitude modulation (QAM)

## Syntax

``Y = mil188qammod(X,M)``
``Y = mil188qammod(X,M,Name=Value)``

## Description

example

````Y = mil188qammod(X,M)` performs QAM modulation on the input signal, `X`, in accordance with MIL-STD-188-110 and the modulation order, `M`. For more information, see MIL-STD-188-110.```

example

````Y = mil188qammod(X,M,Name=Value)` specifies optional name-value arguments. For example, `mil188qammod(Y,M,PlotConstellation=true)` specifies modulation order `M` and plots the constellation. Specify name-value arguments after all other input arguments.```

## Examples

collapse all

Modulate data using 32-QAM as specified in the MIL-188-110C standard. Display the result using a scatter plot.

Set M to 32 and create a data vector containing all possible symbols.

```M = 32; x = (0:M-1);```

Modulate the data using QAM as specified in MIL-STD-188-110C.

`y = mil188qammod(x,M);`

Display the constellation as a scatter plot.

`scatterplot(y)`

Modulate data using 16-QAM as specified in the MIL-STD-188-110B standard. Normalize the modulator output so that it has an average signal power of 1 W.

Set M and generate random data.

```M = 16; x = randi([0 M-1],1e5,1);```

Modulate the data applying 16-QAM as specified in MIL-STD-188-110B. Using name-value pairs, set the unit average power to `true` and enable the constellation plot.

`y = mil188qammod(x,M,'UnitAveragePower',true,'PlotConstellation',true);`

Verify that the signal has approximately unit average power.

`avgPow = mean(abs(y).^2)`
```avgPow = 1.0012 ```

Modulate a sequence of bits using 64-QAM as specified by MIL-STD188-110B. Display the constellation.

Set the modulation order and generate a sequence of random bits.

```M = 64; numBitsPerSym = log2(M); data = randi([0 1],1000*numBitsPerSym,1);```

Modulate the data applying 64-QAM as specified by MIL-STD-188-110B, and output constellation symbols of single data type.

```y = mil188qammod(data,M, ... InputType='bit', ... OutputDataType='single');```

Plot the result constellation using a scatter plot.

`scatterplot(y)`

## Input Arguments

collapse all

Input signal, specified as a scalar, vector, or matrix. The elements of `X` must be binary values or integers in the range [0, `M` – 1], where `M` is the modulation order.

Note

To process input signal as binary elements, set the `InputType` value to `'bit'`. For binary inputs, the number of rows must be an integer multiple of log2(`M`). Groups of log2(`M`) bits in a column are mapped onto a symbol, with the first bit representing the MSB and the last bit representing the LSB.

Data Types: `double` | `single` | `int8` | `int16` | `int32` | `uint8` | `uint16` | `uint32` | `logical`

Modulation order, specified as a positive integer power of two. The modulation order specifies the total number of points in the signal constellation.

Example: `16`

Data Types: `double`

### Name-Value Arguments

Specify optional pairs of arguments as `Name1=Value1,...,NameN=ValueN`, where `Name` is the argument name and `Value` is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: ```Y = mil188qammod(X,M,InputType='bit',OutputDataType='single');```

Input type, specified as `'integer'` or `'bit'`.

• If you specify `'integer'`, the input signal must consist of integers in the range [0, `M` – 1].

• If you specify `'bit'`, the input signal must contain binary values, and the number of rows must be an integer multiple of log2(`M`).

Output data type, specified as `'double'` or `'single'`.

Unit average power flag, specified as logical `0` (`false`) or `1` (`true`).

• When `UnitAveragePower` is `true`, the function scales the constellation to an average power of 1 watt referenced to 1 ohm.

• When `UnitAveragePower` is `false`, the function scales the constellation based on specifications in the relevant standard, as described in [1].

Data Types: `logical`

Option to plot constellation, specified as logical `0` (`false`) or `1` (`true`). To plot the constellation, set `PlotConstellation` to `true`.

Data Types: `logical`

## Output Arguments

collapse all

Modulated signal, returned as a complex scalar, vector, or matrix. The dimension of the output depends on the specified `InputType` value. Specify the data type of the output with `OutputDataType`.

`InputType`Dimensions of Output
`'integer'``Y` has the same dimensions as input `X`.
`'bit'`The number of rows in `Y` equals the number of rows in `X` divided by log2(`M`).

Data Types: `double` | `single`

collapse all

### MIL-STD-188-110

MIL-STD-188-110 is a US Department of Defense standard for HF communications using serial PSK mode of both data and voice signals.

The standard specifies physical layer modulation schemes for tactical and long-haul communications. The modulation scheme specified by the standard is a mix of QAM and APSK. For a detailed description of the modulation scheme, see [1].

## References

[1] MIL-STD-188-110B & C: "Interoperability and Performance Standards for Data Modems." Department of Defense Interface Standard, USA.

## Version History

Introduced in R2018a