Robochameleon
v1.0
|
Radius directed equalization. More...
Inherits unit.
Public Member Functions | |
function | AdaptiveEqualizer_MMA_RDE_v1 (in params) |
Class constructor. More... | |
function | traverse (in obj, in in) |
Main routine. | |
function | checkSettings (in obj) |
Check user settings. More... | |
function | initialize (in obj) |
Initialize object. More... | |
function | train_equalizer (in obj, in in) |
function | poldemux_cr_qam_v4_fast (in obj, in in) |
Fast equalization routine. More... | |
function | poldemux_cr_qam_v4_medium (in obj, in in) |
Medium-fast equalization routine. More... | |
function | poldemux_cr_qam_v4_slow (in obj, in in) |
Slow equalization routine. More... | |
function | plotConv (in obj) |
Plot equalizer convergence. | |
function | plotTaps (in obj) |
Plot filter taps. | |
![]() | |
function | traverseNode (in obj) |
Set unique ID when creating a unit. More... | |
function | connectOutput (in obj, in uobj, in unitOutput, in nextUnitInput) |
Specify where signal should go next. More... | |
function | connectOutputs (in obj, in units, in destInputs) |
Specify where signal should go next. More... | |
function | writeInputBuffer (in obj, in sig, in inputId) |
write input buffer | |
function | horzcat (in varargin) |
horizontal concatenation | |
function | vertcat (in varargin) |
vertical concatenation | |
function | setparams (in obj, in params, in REQUIRED_PARAMS, in QUIET_PARAMS) |
set parameters More... | |
function | view (in obj) |
Show interactive GUI through unit_view-class. | |
Public Attributes | |
Property | nInputs |
Number of inputs. | |
Property | nOutputs |
Number of outputs. | |
Property | type |
Type {'cma' | 'mma'}. | |
Property | h_ortho |
Reset taps to be orthogonal between training iterations (avoid CMA singularity) {true | false}. | |
Property | taps |
Number of taps. | |
Property | mu |
Tap update coefficient. | |
Property | cma_preconv |
CMA pre-convergence length. | |
Property | equalizer_conv |
Training period convergence length. | |
Property | iter |
Number of iterations for training. | |
Property | constellation |
Vector of symbols in constellation (see constref.m) | |
Property | operation |
Operation mode {'training' | 'equalization' | 'semiadaptive' | 'adaptive'}. | |
Property | trainingType |
Training type mode {'blind' | 'dataAided'}. | |
Property | trainingSequences |
N-by-2 training symbols matrix for dataAided mode. | |
Property | h_init |
Inital center tap value. | |
Property | hxx |
Store taps for h_xx. | |
Property | hxy |
Store taps for h_xy. | |
Property | hyx |
Store taps for h_yx. | |
Property | hyy |
Store taps for h_yy. | |
Property | R |
Store ring radii for MMA. | |
![]() | |
Property | inputBuffer |
Buffer for storing inputs as we traverse the graph. | |
Property | nextNodes |
Children nodes. | |
Property | destInputs |
Destination inputs in children. | |
Property | results |
For storing results. | |
Property | label |
Property | draw |
enable/disable plotting | |
Property | nInputs |
Number of signals traverse expects. | |
Property | nOutputs |
Number of outputs traverse expects. | |
Radius directed equalization.
Runs blind adaptive equalization on dual-polarization coherent signals with M>=4. Equalization is split into a training part and a main filtering part. There are two ways to perform training and three ways to do the main equalization:
Training modes:
In blind training mode, for M>4, we bootstrap initially using the constant modulus algorithm (CMA), then after pre-convergence we switch to the multiple-modulus algorithm (MMA). Training sequence length and pre-convergence length can be set using class properties.
Equalization modes:
Observations:
Example:
Definition at line 62 of file AdaptiveEqualizer_MMA_RDE_v1.m.
function AdaptiveEqualizer_MMA_RDE_v1::AdaptiveEqualizer_MMA_RDE_v1 | ( | in | params | ) |
Class constructor.
Only constellation is required, everything else has a default value. Plotting is on by default, disable using params.draw=0.
params | parameter structure (fields correspond to class properties). |
function AdaptiveEqualizer_MMA_RDE_v1::checkSettings | ( | in | obj | ) |
Check user settings.
There are many options with this function, and it's easy to get confused. This checks for some more common mistakes and displays warnings when they arise
function AdaptiveEqualizer_MMA_RDE_v1::initialize | ( | in | obj | ) |
Initialize object.
Set filter taps and check user-specified parameter values.
function AdaptiveEqualizer_MMA_RDE_v1::poldemux_cr_qam_v4_fast | ( | in | obj, |
in | in | ||
) |
Fast equalization routine.
Equalizer taps are calculated using the first part of the sequence for training, then applied without further adaptation to the rest of the sequence. For M>4, on the first training iteration, we bootstrap with CMA. Between iterations, the last value of the taps is retained. If obj.h_ortho is false, this is done for all filters; if it is true, we take h.yy = conj(h.xx) and h.yx = -conj(h.xy).
in | input signal |
out1 | equalized output at 1 sample per symbol |
outNss | equalized output at same oversampling rate as input |
function AdaptiveEqualizer_MMA_RDE_v1::poldemux_cr_qam_v4_medium | ( | in | obj, |
in | in | ||
) |
Medium-fast equalization routine.
Equalizer taps are applied WITH further adaptation to the rest of the sequence. Tap update step size remains constant for the whole sequence.
in | input signal |
out1 | equalized output at 1 sample per symbol |
function AdaptiveEqualizer_MMA_RDE_v1::poldemux_cr_qam_v4_slow | ( | in | obj, |
in | in | ||
) |
Slow equalization routine.
Equalizer taps are applied WITH further adaptation to the rest of the sequence. Tap update step size is adapted at each step.
in | input signal |
out1 | equalized output at 1 sample per symbol |