Комплексные данные являются данными, значение которых является комплексным числом. Например, в графике Stateflow® в модели Simulink®, входном сигнале со значением 3 + 5i
является комплексным. Смотрите Комплексные данные в диаграммах Stateflow.
Когда вы используете комплексные данные в диаграммах 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 Explorer.
В панели Model Hierarchy Model Explorer переместитесь к функции MATLAB по myabs
.
В панели Contents Model Explorer щелкните правой кнопкой по входному параметру u
и выберите Properties из контекстного меню.
В диалоговом окне Свойств данных выберите On
в поле Complexity и нажмите OK.
Вы не можете передать действительные значения входным параметрам функции составного типа. Для получения дополнительной информации см. Правила для Использования Комплексных данных в Графиках 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 Explorer.
В панели Model Hierarchy Model Explorer переместитесь к функции MATLAB по mydiv
.
Для каждого аргумента ввода и вывода выполните эти шаги:
В панели Contents Model Explorer щелкните правой кнопкой по аргументу и выберите Properties из контекстного меню.
В диалоговом окне Свойств данных выберите On
в поле Complexity и нажмите OK.
Вы не можете передать действительные значения входным параметрам функции составного типа. Для получения дополнительной информации см. Правила для Использования Комплексных данных в Графиках C.