В этом примере показано, как обрабатывать сложные данные в диаграмме Stateflow ®. Модель использует векторы комплексных данных для нахождения фиксированного шаблона в сигнале от системы связи.
В системах связи кадровая синхронизация является способом нахождения достоверных данных в передаче, которая состоит из кадров данных. Для поддержки кадровой синхронизации передатчик вставляет фиксированный шаблон данных в начале каждого кадра данных, чтобы отметить начало действительных данных. Приемник ищет фиксированную комбинацию и достигает кадровой синхронизации, когда корреляция между входными данными и фиксированной комбинацией является высокой.

В этом примере контроллер кадровой синхронизации диаграммы Stateflow принимает сложный входной сигнал IQ и поиск фиксированного шаблона данных trainSig. После распознавания начала кадра данных диаграмма сохраняет действительные данные в сложном выходном сигнале. frame. Этот выходной сигнал представляет собой вектор комплексных произведений между каждой верной точкой данных и фазовым углом несущей волны. Затем диаграмма передает допустимые данные в подсистему процессора кадров.

Обратите внимание, что эта модель не содержит остальную часть системы связи.
На диаграмме контроллера синхронизации кадров 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 и запускает подсистему процессора кадров. Затем диаграмма возвращается к 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 продуктов. Диаграмма передает эти данные в подсистему процессора кадров, а затем возвращается к look_for_sync состояние.