|
function | LinChBulk_v1 (in param) |
| Class constructor. More...
|
|
function | traverse (in obj, in in) |
| Traverse function. More...
|
|
function | cd_loading (in param, in Ein) |
| Chromatic dispersion loading. More...
|
|
function | pmd_loading (in obj, in in) |
| PMD loading. More...
|
|
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.
|
|
Linear channel model.
Linear fiber optic channel model with polarization (mode) mixing, chromatic dispersion, PMD, and loss
Observations
- Number of modes supported by fiber is set by the dimension of the input signal
- Fiber parameters are taken from a look-up table for SMF28 unless otherwise specified.
- Mode mixing is based on random matrix generation unless otherwise specified.
- The general assumption is that the fiber supports "principal modes" and that these have a bandwidth that is larger than the signal bandwidth. This is fine for SMF, but potentially problematic for multimode fiber.
Examples
param = struct('D', 1e-6, 'S', .0092, 'L', 40, 'loss', .34);
Will construct a 40km channel with .34 dB/km loss and negligible 1st order dispersion (typical parameters at 1310). These parameters will be fixed regardless of the wavelength of the input signal. The code
param = struct('L', 40);
sigout = channel.traverse(signal);
Will also construct a 40km channel with .34 dB/km loss and negligible 1st order dispersion. If the input signal were at 1550 instead, the dispersion, loss, etc. would be different.
To remove the effect of polarization mixing, specify the Jones matrix of the fiber as an identity matrix:
param = struct('L', 40, 'U', eye(2));
- Author
- Molly Piels
- Version
- 2
Definition at line 58 of file LinChBulk_v1.m.
function LinChBulk_v1::pmd_loading |
( |
in |
obj, |
|
|
in |
in |
|
) |
| |
PMD loading.
PMD loading
Modes of operation: PMD can either be set ('set' mode) or drawn from an appropriate statistical distribution ('random' mode). In 'set' mode, for a 2-mode fiber, you specify the modulus of the DGD vector (DGD property), and the associated delays are +/- tau/2. For N-mode fiber, you can either set the modulus (DGD property) or specify the actual delays (tau property) In random mode, model draws from a chi distribution with <# of modes> degrees of freedom for actual modulus of PMD vector (Maxwell if N=2).
Main method: Delays are applied as shifts to randomly oriented principal modes. See J. P. Gordon and H. Kogelnik, "PMD fundamentals: Polarization mode
dispersion in optical fibers," Proc. Natl. Acad. Sci., vol. 97, no. 9, pp. 4541–4550, 2000. or K.-P. Ho and J. M. Kahn, "Statistics of Group Delays in Multimode
Fiber with Strong Mode Coupling," J. Light. Technol., vol. 29, pp. 3119–3128, 2011.
- Parameters
-
- Return values
-
Eout | output signal |
mod_tau | modulus of DGD vector |
static function LinChBulk_v1::random_unitary |
( |
in |
N | ) |
|
|
static |
Generates a random unitary matrix.
Generates a random unitary matrix. If called many times, the set of returned matrices will have appropriately statistically distributed eigenvalues. This is important for channel capacity calculations. The algorithm is from F. Mezzadri, "How to generate random matrices from the classical compact groups,” arXiv Prepr. math-ph/0609050, vol. 54, no. 5, pp. 592–604, 2006.
- Parameters
-
- Return values
-