Поэтому я недавно внедрил эквалайзер CMA в MATLAB, который использует метод наискорейшего спуска, чтобы приблизиться к минимальной стоимости. (Я на выпивке реализации эквалайзера).
Мои вопросы следующие:
1) Мне кажется, что алгоритм CMA хорош только для каналов, где они относительно «плоские». Другими словами, не ожидается, что он будет работать для каналов с глубокими замираниями / нулями? Это вообще правда?
2) Я использую сигнал BPSK, и мы можем видеть из первого рисунка, что после многолучевых эффектов у меня есть размытие в комплексной плоскости моего сигнала BPSK - нет двух хороших кластеров, как можно было бы ожидать. Вместо этого мы видим 4 красных скопления. Мой вопрос: как получилось, что после эквалайзера CMA у меня все еще есть 4 кластера? (Я покрасил эти синие). Я полагаю, в этом есть какой-то смысл, потому что CMA просто заставляет конверты равняться 1, и не заботится о том, о каком кластере вы говорите. Я слышал, что CMA может страдать от локальных минимумов проблем. Будет ли это примером? (т.е. получить 4 кластера вместо 2, так как это BPSK). Если нет, что с этим можно сделать?
3) Как будто отвечая на вопрос 2, я пошел дальше и изменил постоянный модуль, против которого стараюсь свести ошибку к минимуму. Вместо того, чтобы выбрать 1 (как предполагается, для BPSK), я выбрал 0.25 в качестве модуля. Это созвездие, которое я получил:
Проблема в том, что даже если это «решение», как узнать, априори, какой модуль выбрать? Причина, по которой я считаю это проблемой, заключается в том, что если у меня есть 4 кластера вместо 2, это усложняет оценку / коррекцию сдвига фазы / сдвига частоты после символа, особенно когда ожидается 2 кластера из-за сигнализации BPSK.
(Для полноты я приложил те же графики, но когда я добавил сдвиги частоты)
Заранее спасибо за любые идеи, которые вы можете дать в этот эквалайзер!