Комплексные данные - это данные, значение которых является комплексным числом. Например, на диаграмме Stateflow ® в модели Simulink ® входной сигнал со значением3 + 5i является сложным. См. раздел Сложные данные в диаграммах потока состояний.
При использовании сложных данных в диаграммах Stateflow, использующих C в качестве языка действий, следуйте этим рекомендациям.
Математические функции, такие как sin, cos, min, max, и abs не работают со сложными данными в диаграммах C. Однако функцию MATLAB ® можно использовать в диаграмме для выполнения операций математических функций над сложными данными.
На следующей диаграмме функция MATLAB вычисляет абсолютное значение комплексного числа:

Значение comp_num является 1+2i. Вычисление абсолютного значения дает ответ 2.2361.
Предположим, что нужно найти абсолютное значение комплексного числа. Выполните следующие действия.
Добавьте функцию MATLAB к диаграмме со следующей подписью:
y = myabs(u)
Дважды щелкните поле функции, чтобы открыть редактор.
В редакторе введите следующий код:
function y = myabs(u) %#codegen y = abs(u);
Функция myabs принимает сложный ввод u и возвращает абсолютное значение в качестве выходного y.
Настройка входного аргумента u для принятия комплексных значений.
Откройте обозреватель моделей.
На панели Иерархия модели (Model Hierarchy) Проводника моделей (Model Explorer) перейдите к функции MATLAB. myabs.
На панели Содержимое (Contents) Обозревателя моделей (Model Explorer) щелкните правой кнопкой мыши входной аргумент. u и выберите «Свойства» в контекстном меню.
В диалоговом окне «Свойства данных» выберите On в поле Сложность и нажмите кнопку ОК.
Нельзя передавать вещественные значения на входы функций комплексного типа. Дополнительные сведения см. в разделе Правила использования сложных данных в диаграммах C.
Разделение со сложными операндами недоступно в виде двоичной операции или операции назначения в диаграммах C. Однако функцию MATLAB в диаграмме можно использовать для выполнения разделения сложных данных.
На следующей диаграмме функция MATLAB выполняет деление на два сложных операнда:

Значения comp_num и comp_den являются 1+2i и 3+4iсоответственно. Деление этих значений дает ответ 0.44+0.08i.
Чтобы разделить два комплексных числа:
Добавьте функцию MATLAB к диаграмме со следующей подписью функции:
y = mydiv(u1, u2)
Дважды щелкните поле функции, чтобы открыть редактор.
В редакторе введите следующий код:
function y = mydiv(u1, u2) %#codegen y = u1 / u2;
Функция mydiv принимает два комплексных входа, u1 и u2и возвращает комплексное частное двух чисел в качестве выходного значения y.
Настройте входные и выходные аргументы для принятия комплексных значений.
Откройте обозреватель моделей.
На панели Иерархия модели (Model Hierarchy) Проводника моделей (Model Explorer) перейдите к функции MATLAB. mydiv.
Для каждого входного и выходного аргумента выполните следующие действия.
На панели Содержимое (Contents) Обозревателя моделей (Model Explorer) щелкните правой кнопкой мыши аргумент и выберите в контекстном меню пункт Свойства (Properties).
В диалоговом окне «Свойства данных» выберите On в поле Сложность и нажмите кнопку ОК.
Нельзя передавать вещественные значения на входы функций комплексного типа. Дополнительные сведения см. в разделе Правила использования сложных данных в диаграммах C.