Main Content


Pulse amplitude modulation (PAM)


y = pammod(x,M) returns the complex envelope of the modulation of the input message signal, x, using PAM and the alphabet size, M.


y = pammod(x,M,initphase) specifies the initial phase of the modulated signal.


y = pammod(x,M,initphase,symorder) specifies the symbol order modulation, which defines how the function assigns binary words to corresponding integers.


collapse all

Generate random data symbols and apply pulse amplitude modulation.

Set the modulation order.

M = 8;

Generate random integers and apply PAM modulation having an initial phase of π/4.

data = randi([0 M-1],100,1);
modData = pammod(data,M,pi/4);

Display the PAM constellation diagram.


Plot PAM symbol mapping for Gray and natural binary encoded data.

Set the modulation order, and then create a data sequence containing a complete set of constellation points.

M = 8;
data = [0:M-1];

Modulate and demodulate Gray and natural binary encoded data.

symgray = pammod(data,M,0,'gray');
mapgray = pamdemod(symgray,M,0,'gray');

symbin = pammod(data,M,0,'bin');
mapbin = pamdemod(symbin,M,0,'bin');

Plot the constellation points using one of the symbol sets. For each constellation point, assign a label indicating the Gray and natural binary values for each symbol.

  • For Gray binary symbol mapping, adjacent constellation points differ by a single binary bit and are not numerically sequential.

  • For natural binary symbol mapping, adjacent constellation points follow the natural binary encoding and are sequential.

for k = 1:M
        dec2base(mapbin(k),2,4),'Color',[1 0 0]);
        num2str(mapbin(k)),'Color',[1 0 0]);
axis([-M M -2 2])

Input Arguments

collapse all

Input signal, specified as a vector or matrix of integers in the range of [0, M – 1].

Example: randi([0 3],100,1)

Data Types: double

Modulation order, specified as a power of two.

Example: 4

Data Types: double

Initial phase of the modulated signal (in radians), specified as a real scalar.

Example: pi/4

Data Types: double

Symbol order of binary vectors, specified as 'bin' or 'gray'. This argument specifies how the function assigns binary vectors to corresponding integers.

  • If symorder is 'bin', the function uses a natural binary-coded ordering.

  • If symorder is 'gray', the function uses a Gray-coded ordering.

Data Types: char | string

Output Arguments

collapse all

Complex baseband representation of a PAM-modulated signal, returned as vector or matrix of complex values. The modulated signal has a minimum Euclidean distance of 2. The columns of y represent independent channels.

Data Types: double | single
Complex Number Support: Yes

Extended Capabilities

Introduced before R2006a