# bin2gray

(To be removed) Convert positive integers into corresponding Gray-encoded integers

`bin2gray` will be removed in a future release. Use the appropriate modulation object or function to remap constellation points instead. For more information, see Compatibility Considerations.

## Syntax

``y = bin2gray(x,modulation,M)``
``[y,map] = bin2gray(x,modulation,M)``

## Description

````y = bin2gray(x,modulation,M)` generates a Gray-encoded vector or matrix output `y` with the same dimensions as its input parameter `x`. `x` can be a scalar, vector, matrix, or 3-D array. `modulation` is the modulation type and must be `'qam'`, `'pam'`, `'fsk'`, `'dpsk'`, or `'psk'`. `M` is the modulation order and must be an integer power of 2. NoteIf you are converting binary-coded data to Gray-coded data and modulating the result immediately afterwards, you should use the appropriate modulation object or function with the `'Gray'` option, instead of `bin2gray`. ```

example

````[y,map] = bin2gray(x,modulation,M)` generates a Gray-encoded output `y` with its respective Gray-encoded constellation map, `map`.You can use map output to label a Gray-encoded constellation. The map output gives the Gray-encoded labels for the corresponding modulation.```

## Examples

collapse all

This example shows how to use the `bin2gray` and `gray2bin` functions to map integer inputs from a natural binary order symbol mapping to a Gray-coded signal constellation and vice versa, assuming 16-QAM modulation. In addition, a visual representation of the difference between Gray-coded and binary-coded symbol mappings is shown.

Convert Binary to Gray

Create a complete vector of 16-QAM integers.

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

Convert the input vector from a natural binary order to a Gray-encoded vector using `bin2gray`.

`[y,mapy] = bin2gray(x,'qam',M);`

Convert Gray to Binary

Convert the Gray-encoded symbols, `y`, back to a binary ordering using `gray2bin`.

`z = gray2bin(y,'qam',M);`

Verify that the original data, `x`, and the final output vector, `z`, are identical.

`isequal(x,z)`
```ans = logical 1 ```

Show Symbol Mappings

To create a constellation plot showing the different symbol mappings, use the `qammod` function to find the complex symbol values.

`sym = qammod(x,M);`

Plot the constellation symbols and label them using the Gray (`y`) and binary (`z`) output vectors. The binary representation of the Gray-coded symbols is shown in black while the binary representation of the naturally ordered symbols is shown in red. Set the axes scaling so that all points are displayed.

```scatterplot(sym,1,0,'b*'); for k = 1:16 text(real(sym(k))-0.3,imag(sym(k))+0.3,... dec2base(mapy(k),2,4)); text(real(sym(k))-0.3,imag(sym(k))-0.3,... dec2base(z(k),2,4),'Color',[1 0 0]); end axis([-4 4 -4 4])``` ## Input Arguments

collapse all

Input binary-encoded data, specified as a vector or matrix.

Data Types: `double`

Modulation type, specified as, `'qam'`, `'pam'`, `'fsk'`, `'dpsk'`, or `'psk'`

Modulation order, specified as an integer power of 2.

Data Types: `double`

## Output Arguments

collapse all

Gray-encoded data with the same size and dimensions input `x`.

Map output to label a Gray-encoded constellation, specified as a vector with a length the size of the modulation order, `M`. The map gives the Gray-encoded labels for the corresponding modulation.

## Compatibility Considerations

expand all

Not recommended starting in R2020a