В этом примере показано, как обработать комплексные данные на графике Stateflow ®. Модель использует векторы комплексных данных, чтобы найти фиксированный шаблон в сигнале от системы связи.
В системах связи системы координат синхронизация является методом нахождения действительных данных в передаче, которая состоит из систем координат данных. Чтобы помочь синхронизации системы координат, передатчик вставляет фиксированный шаблон данных в начале каждой системы координат данных, чтобы отметить начало действительных данных. Приемник ищет фиксированный шаблон и достигает синхронизации системы координат, когда корреляция между входными данными и фиксированным шаблоном высока.
В этом примере контроллер Системы координат синхронизации диаграммы Stateflow принимает комплексный входной сигнал IQ
и выполняет поиск фиксированного шаблона данных trainSig
. После распознавания начала системы координат данных график сохраняет действительные данные в комплексном выходном сигнале frame
. Этот выходной сигнал является вектором сложных продуктов между каждой действительной точкой данных и углом фазы несущей волны. График затем передает действительные данные подсистеме Системы координат Processor.
Обратите внимание, что эта модель не содержит остальную часть системы связи.
На графике контроллера синхронизации систем координат look_for_sync
состояние запускает систему координат алгоритм синхронизации. На каждом временном шаге функция MATLAB ® correlate
вычисляет корреляцию между входным сигналом IQ
и фиксированный шаблон данных trainSig
. Функция сохраняет комплексную корреляцию следующим corr
и его абсолютное значение как corrAbs
. Значение corrAbs
- процент корреляции, который может варьироваться от 0 до 100 процентов. При 0 процентах корреляции нет. На 100 процентов существует идеальная корреляция.
Если corrAbs
превышает 50 процентов, корреляция высока и график регистрирует начало системы координат данных. График принимает переход к get_payload
состояние и сохраняет 220 допустимых точек данных в комплексном векторе frame
.
Если corrAbs
остается ниже 50 процентов для 300 последовательных точек данных, алгоритм синхронизации систем координат сбрасывается. График принимает переход к frame_out
состояние и запускает подсистему Frame Processor. Затем график возвращается к look_for_sync
состояние.
Когда график контроллера синхронизации систем координат распознаёт начало системы координат данных, get_payload
состояние вызывает функцию MATLAB get_carrier_phase
для вычисления угла фазы несущей волны. Состояние сохраняет этот угол фазы как локальный объект данных phasor
. Затем состояние собирает скалярные значения продукта IQ*phasor
в векторном frame
. Чтобы избежать использования дополнительной переменной в качестве счетчика индексов, это состояние индексируется в этот вектор при помощи count
оператор:
Когда состояние становится активным, entry
действие сохраняет начальное значение продукта в первом элементе frame
.
В более поздних временных шагах during
действие сохраняет следующие значения этого продукта в последовательных элементах frame
. Выражение индексации count(true)
возвращает количество временных шагов с момента активизации состояния.
После 220 шагов условие перехода [after(220,tick)]
становится true
и график выходит из состояния. Когда график входит в frame_out
состояние, вектор frame
содержит значения 220 продуктов. График передает эти данные подсистеме Системы координат Processor, а затем возвращается к look_for_sync
состояние.