Инициализация переменных и поддерживающих объектов
Чтобы сравнить выровненный выходной сигнал, постройте график совокупностей с использованием кода, например:
Использовать алгоритм LMS с линейным эквалайзером
Настроить lineareq и comm.LinearEqualizer объекты с сопоставимыми параметрами. LeakageFactor удалено из алгоритма LMS. 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 объекты с сопоставимыми параметрами. LeakageFactor удалено из алгоритма LMS. 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