|
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. | |
Public Member Functions inherited from unit | |
| 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. | |
Public Attributes inherited from unit | |
| 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 |
1.8.11