Комплексными данными являются данные, значение которых является комплексным числом. Для примера, в Stateflow® график в Simulink® модель, входной сигнал со значением 3 + 5i
комплексная. См. «Комплексные данные в диаграммах Stateflow».
Когда вы используете комплексные данные в диаграммах Stateflow, которые используют C в качестве языка действий, следуйте этим лучшим практикам.
Математические функции, такие как sin
, cos
, min
, max
, и abs
не работайте со комплексными данными в графики. Однако можно использовать 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.
Вы не можете передать вещественные значения входных параметров функции комплексного типа. Для получения дополнительной информации смотрите Правила использования комплексных данных в графиках С.
Деление со сложными операндами недоступно в качестве двоичной операции или операции назначения в графиках С. Однако можно использовать функцию 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.
Вы не можете передать вещественные значения входных параметров функции комплексного типа. Для получения дополнительной информации смотрите Правила использования комплексных данных в графиках С.