Инициализация переменных и вспомогательных объектов
Чтобы сравнить выровненный выход, постройте график созвездий с помощью кода, такого как:
Используйте LMS-алгоритм с линейным эквалайзером
Сконфигурируйте lineareq
и comm.LinearEqualizer
объекты с сопоставимыми настройками. The LeakageFactor
свойство удалено из LMS-алгоритма. The comm.LinearEqualizer
Системный object™ принимает, что коэффициент утечки всегда равен 1.
eqOld =
EqType: 'Linear Equalizer'
AlgType: 'LMS'
nWeights: 5
nSampPerSym: 1
RefTap: 1
SigConst: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
StepSize: 0.0500
LeakageFactor: 1
Weights: [0 0 0 0 0]
WeightInputs: [0 0 0 0 0]
ResetBeforeFiltering: 1
NumSamplesProcessed: 0
eqNew = comm.LinearEqualizer with properties:
Algorithm: 'LMS'
NumTaps: 5
StepSize: 0.0500
Constellation: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
ReferenceTap: 1
InputDelay: 0
InputSamplesPerSymbol: 1
TrainingFlagInputPort: false
AdaptAfterTraining: true
InitialWeightsSource: 'Auto'
WeightUpdatePeriod: 1
Вызовите эквалайзеры.
Используйте алгоритм RLS с линейным эквалайзером
Сконфигурируйте lineareq
и comm.LinearEqualizer
объекты с сопоставимыми настройками.
eqOld =
EqType: 'Linear Equalizer'
AlgType: 'RLS'
nWeights: 5
nSampPerSym: 1
RefTap: 1
SigConst: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
InvCorrInit: 0.1000
InvCorrMatrix: [5×5 double]
Weights: [0 0 0 0 0]
WeightInputs: [0 0 0 0 0]
ResetBeforeFiltering: 1
NumSamplesProcessed: 0
eqNew = comm.LinearEqualizer with properties:
Algorithm: 'RLS'
NumTaps: 5
ForgettingFactor: 0.9500
InitialInverseCorrelationMatrix: 0.1000
Constellation: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
ReferenceTap: 1
InputDelay: 0
InputSamplesPerSymbol: 1
TrainingFlagInputPort: false
AdaptAfterTraining: true
InitialWeightsSource: 'Auto'
WeightUpdatePeriod: 1
Вызовите эквалайзеры. Когда ResetBeforeFiltering
установлено в true
, каждый вызов equalize
объект сбрасывает эквалайзер. Чтобы получить эквивалентный вызов поведения reset
после каждого вызова comm.LinearEqualizer
объект.
Сконфигурируйте lineareq
и comm.LinearEqualizer
объекты с сопоставимыми настройками. Для comm.LinearEqualizer
объект, установите начальную матрицу обратной корреляции равной eye(5)*0.2
.
eqOld =
EqType: 'Linear Equalizer'
AlgType: 'RLS'
nWeights: 5
nSampPerSym: 1
RefTap: 1
SigConst: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
InvCorrInit: 0.1000
InvCorrMatrix: [5×5 double]
Weights: [0 0 0 0 0]
WeightInputs: [0 0 0 0 0]
ResetBeforeFiltering: 1
NumSamplesProcessed: 0
eqNew = comm.LinearEqualizer with properties:
Algorithm: 'RLS'
NumTaps: 5
ForgettingFactor: 0.9500
InitialInverseCorrelationMatrix: [5×5 double]
Constellation: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
ReferenceTap: 1
InputDelay: 0
InputSamplesPerSymbol: 1
TrainingFlagInputPort: false
AdaptAfterTraining: true
InitialWeightsSource: 'Auto'
WeightUpdatePeriod: 1
Вызовите эквалайзеры. Когда ResetBeforeFiltering
установлено в true
, каждый вызов equalize
объект сбрасывает эквалайзер. Чтобы получить эквивалентный вызов поведения reset
после каждого вызова comm.LinearEqualizer
объект.
Используйте алгоритм CMA с линейным эквалайзером
Сконфигурируйте lineareq
и comm.LinearEqualizer
объекты с сопоставимыми настройками. The LeakageFactor
свойство удалено из LMS-алгоритма. The comm.LinearEqualizer
Системный object™ принимает, что коэффициент утечки всегда равен 1.
eqOld =
EqType: 'Linear Equalizer'
AlgType: 'Constant Modulus'
nWeights: 5
nSampPerSym: 1
SigConst: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
StepSize: 0.0500
LeakageFactor: 1
Weights: [1 0 0 0 0]
WeightInputs: [0 0 0 0 0]
ResetBeforeFiltering: 1
NumSamplesProcessed: 0
eqNew = comm.LinearEqualizer with properties:
Algorithm: 'CMA'
NumTaps: 5
StepSize: 0.0500
Constellation: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
ReferenceTap: 1
InputSamplesPerSymbol: 1
AdaptWeightsSource: 'Property'
AdaptWeights: true
InitialWeightsSource: 'Auto'
WeightUpdatePeriod: 1
Вызовите эквалайзеры.
Использование линейных эквалайзеров с учетом задержек сигнала
Сконфигурируйте lineareq
и comm.LinearEqualizer
объекты с сопоставимыми настройками. Фильтры передачи и приема приводят к задержке сигнала между транзитным и приемным сигналами. Рассчитать эту задержку можно путем установки RefTap
свойство lineareq
к значению, близкому к значению задержки в выборках. Кроме того, nWeights
должно быть задано значение, больше RefTap
.
eqOld =
EqType: 'Linear Equalizer'
AlgType: 'LMS'
nWeights: 16
nSampPerSym: 2
RefTap: 13
SigConst: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
StepSize: 0.0100
LeakageFactor: 1
Weights: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
WeightInputs: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
ResetBeforeFiltering: 1
NumSamplesProcessed: 0
eqNew = comm.LinearEqualizer with properties:
Algorithm: 'LMS'
NumTaps: 16
StepSize: 0.0100
Constellation: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
ReferenceTap: 13
InputDelay: 0
InputSamplesPerSymbol: 2
TrainingFlagInputPort: false
AdaptAfterTraining: true
InitialWeightsSource: 'Auto'
WeightUpdatePeriod: 1
Вызовите эквалайзеры. Когда ResetBeforeFiltering
установлено в true
, каждый вызов equalize
объект сбрасывает эквалайзер. Чтобы получить эквивалентный вызов поведения reset
после каждого вызова comm.LinearEqualizer
объект.
В comm.LinearEqualizer
объект, InputDelay
используется для синхронизации с задержанным сигналом. NumTaps
и ReferenceTap
не зависят от значения задержки. Мы можем уменьшить количество ответвлений, используя InputDelay
чтобы синхронизировать вместо ссылочного касания. Уменьшение количества отводов также уменьшает самошум эквалайзера.
eqNew = comm.LinearEqualizer with properties:
Algorithm: 'LMS'
NumTaps: 11
StepSize: 0.0100
Constellation: [0.7071 + 0.7071i -0.7071 + 0.7071i -0.7071 - 0.7071i 0.7071 - 0.7071i]
ReferenceTap: 6
InputDelay: 12
InputSamplesPerSymbol: 2
TrainingFlagInputPort: false
AdaptAfterTraining: true
InitialWeightsSource: 'Auto'
WeightUpdatePeriod: 1