## Documentation Center |

`eqobj = dfe(nfwdweights,nfbkweights,alg)eqobj = dfe(nfwdweights,nfbkweights,alg,sigconst)eqobj = dfe(nfwdweights,nfbkweights,alg,sigconst,nsamp)`

The `dfe` function creates an equalizer object
that you can use with the `equalize` function
to equalize a signal. To learn more about the process for equalizing
a signal, see Adaptive Algorithms.

`eqobj = dfe(nfwdweights,nfbkweights,alg)` constructs
a decision feedback equalizer object. The equalizer's feedforward
and feedback filters have `nfwdweights` and `nfbkweights` symbol-spaced
complex weights, respectively, which are initially all zeros. `alg` describes
the adaptive algorithm that the equalizer uses; you should create `alg` using
any of these functions: `lms`, `signlms`, `normlms`, `varlms`, `rls`,
or `cma`. The signal constellation
of the desired output is `[-1 1]`, which corresponds
to binary phase shift keying (BPSK).

`eqobj = dfe(nfwdweights,nfbkweights,alg,sigconst)` specifies
the signal constellation vector of the desired output.

`eqobj = dfe(nfwdweights,nfbkweights,alg,sigconst,nsamp)` constructs
a DFE with a fractionally spaced forward filter. The forward filter
has `nfwdweights` complex weights spaced at `T/nsamp`,
where `T` is the symbol period and `nsamp` is
a positive integer. `nsamp = 1` corresponds to a
symbol-spaced forward filter.

The table below describes the properties of the decision feedback equalizer object. To learn how to view or change the values of a decision feedback equalizer object, see Accessing Properties of an Equalizer.

Property | Description |
---|---|

EqType | Fixed value, 'Decision
Feedback Equalizer' |

AlgType | Name of the adaptive algorithm
represented by alg |

nWeights | Number of weights in the
forward filter and the feedback filter, in the format [nfwdweights,
nfbkweights]. The number of weights in the forward filter
must be at least 1. |

nSampPerSym | Number of input samples
per symbol (equivalent to nsamp input argument).
This value relates to both the equalizer structure (see the use of
K in Decision-Feedback Equalizers) and an assumption about
the signal to be equalized. |

RefTap (except
for CMA equalizers) | Reference tap index, between
1 and nfwdweights. Setting this to a value greater
than 1 effectively delays the reference signal with respect to the
equalizer's input signal. |

SigConst | Signal constellation, a vector whose length is typically a power of 2. |

Weights | Vector that concatenates
the complex coefficients from the forward filter and the feedback
filter. This is the set of w_{i} values in the
schematic in Decision-Feedback Equalizers. |

WeightInputs | Vector that concatenates
the tap weight inputs for the forward filter and the feedback filter.
This is the set of u_{i} values in the schematic
in Decision-Feedback Equalizers. |

ResetBeforeFiltering | If 1,
each call to equalize resets the state of eqobj before
equalizing. If 0, the equalization process maintains
continuity from one call to the next. |

NumSamplesProcessed | Number of samples the equalizer
processed since the last reset. When you create or reset eqobj,
this property value is 0. |

Properties specific to the
adaptive algorithm represented by alg | See reference page for the
adaptive algorithm function that created alg: lms, signlms, normlms, varlms, rls, or cma. |

If you change `nWeights`, MATLAB maintains
consistency in the equalizer object by adjusting the values of the
properties listed below.

Property | Adjusted Value |
---|---|

Weights | zeros(1,sum(nWeights)) |

WeightInputs | zeros(1,sum(nWeights)) |

StepSize (Variable-step-size
LMS equalizers) | InitStep*ones(1,sum(nWeights)) |

InvCorrMatrix (RLS
equalizers) | InvCorrInit*eye(sum(nWeights)) |

An example illustrating relationships among properties is in Linked Properties of an Equalizer Object.

Apply a decision feedback equalizer (DFE) to an 8-PSK modulated signal impaired by a frequency selector channel. The DFE uses 400 training symbols.

Set the modulation order to define 8-PSK modulation, and create a PSK modulator System object™.

M = 8; hMod = comm.PSKModulator(M);

Create a 1500-by-1 column vector of random message symbols.

msg = randi([0 M-1],1500,1);

Modulate the random message signal by calling the `step` method
of the `comm.PSKModulator` System object.

modmsg = step(hMod,msg);

Define a frequency selective channel with four taps, and then pass the modulated signal through the channel, introducing channel distortion.

chan = [.986; .845; .237; .123+.31i]; filtmsg = filter(chan,1,modmsg);

Create a DFE equalizer that has 10 feed forward tabs and five feedback tabs. The equalizer uses the LMS update method with a step size of 0.01.

numFFTaps = 10; numFBTaps = 5; eq1 = dfe(numFFTaps, numFBTaps, lms(0.01));

For decision directed operation, the DFE must use the same signal constellation as the transmission scheme. Set the SigConst property to the constellation the modulator System object uses.

eq1.SigConst = step(hMod,(0:M-1)')';

Equalize the signal to help remove the effects of channel distortion. Use the first 400 symbols to train the equalizer.

trainlen = 400; [symbolest,yd] = equalize(eq1,filtmsg,modmsg(1:trainlen));

Plot the received signal, equalizer output after training, and the ideal signal constellation.

h = scatterplot(filtmsg,1,trainlen,'bx'); hold on; scatterplot(symbolest,1,trainlen,'g.',h); scatterplot(eq1.SigConst,1,0,'k*',h); legend('Filtered signal','Equalized signal',... 'Ideal signal constellation'); hold off;

Demodulate the signal at the equalizer output, and the unequalized signal at the input of the equalizer.

hDemod = comm.PSKDemodulator(8); demodmsg_noeq = step(hDemod,filtmsg); demodmsg = step(hDemod,yd);

Compute the error rates for the two demodulated signals and compare the results.

hErrorCalc = comm.ErrorRate; ser_noEq = step(hErrorCalc, ... msg(trainlen+1:end), demodmsg_noeq(trainlen+1:end)); reset(hErrorCalc) ser_Eq = step(hErrorCalc, msg(trainlen+1:end),demodmsg(trainlen+1:end)); disp('Symbol error rates with and without equalizer:') disp([ser_Eq(1) ser_noEq(1)])

The equalizer helps eliminate the distortion introduced by the frequency selective channel, and reduces the error rate.

`cma` | `equalize` | `lineareq` | `lms` | `normlms` | `rls` | `signlms` | `varlms`

Was this topic helpful?