При миграции устаревших моделей SimEvents® часто необходимо создавать действия события в этих экземплярах:
Установка значений атрибута
Получение значений атрибута
Генерация генерации случайных чисел
Используя последовательности События
Заменяя Функциональные блоки Атрибута
Используя Simulink® сигнализирует в основанном на событии расчете
Используйте эти инструкции, чтобы заменить блоки Set Attribute:
Если блоки Set Attribute сразу следуют за блоками генератора сущности, чтобы инициализировать атрибуты в блоке Entity Generator, закодируйте Generate
действие с вкладкой Event actions, чтобы установить начальное значение атрибута. Например:
entitySys.id=5;
Если атрибуты изменения блоков Set Attribute, в блоке Entity Generator, кодируют Create
действие с вкладкой Event actions.
Этот пример иллюстрирует Generation
действие, чтобы инициализировать значения атрибута:
Возвратитесь к рабочему процессу миграции.
Если вы пишете действия события, чтобы получить значения атрибута, используйте блок Simulink Function:
Поместите блок расчета в блок Simulink Function.
Передайте значение атрибута в качестве аргумента от действия события до блока Simulink Function.
Можно сгенерировать использование случайных чисел:
Замените режимы распределения блока Event-Based Random Number случайных чисел на эквивалентный код MATLAB® в действиях события. Для получения дополнительной информации о генерации случайных распределений, смотрите Языки Действия События и Генерацию случайных чисел.
Если вам нужны дополнительные распределения случайных чисел, см. Statistics and Machine Learning Toolbox.
Если вы генерируете случайные числа, возвратитесь к Рабочему процессу Миграции.
Вот пример того, как воспроизвести произвольное дискретное распределение для устаревшего блока Event-Based Random Number. Примите, что блок имеет эти установки параметров:
Distribution: Arbitrary discrete
Value vector:
[2 3 4 5 6]
Probability vector:
[0.3 0.3 0.1 0.2 0.1]
Initial seed:
12234
Как общее руководство:
Установите начальный seed, например:
persistent init if isempty(init) rng(12234); init=true; end
Определите то, чему присвоен вектор значения в устаревшей модели, и непосредственно присвойте его в коде действия в новой модели. В этом примере вектор значения присвоен FinalStop
.
Чтобы присвоить значения в соответствующей области значений, вычислите вектор интегральной вероятности. Для удобства используйте вектор вероятности, чтобы вычислить совокупное, вероятно, вектор. Например, если вектор вероятности:
[0.3 0.3 0.1 0.2 0.1]
Вектор интегральной вероятности:
[0.3 0.6 0.7 0.9 1]
Создайте случайную переменную, чтобы использовать в коде, например:
x=rand();
Вот пример кода для этого блока в качестве примера, чтобы вычислить распределение. Вектор значения присвоен FinalStop
:
% Set initial seed. persistent init if isempty(init) rng(12234); init=true; end % Create random variable, x. x=rand(); % % Assign values within the appropriate range using the cumulative probability vector. % if x < 0.3 entity.FinalStop=2; elseif x >= 0.3 && x< 0.6 entity.FinalStop=3; elseif x >= 0.6 && x< 0.7 entity.FinalStop=4; elseif x >= 0.7 && x< 0.9 entity.FinalStop=5; else entity.FinalStop=6; end
Если вы генерируете случайные числа, возвратитесь к Рабочему процессу Миграции.
Замените блоки Event-Based Sequence, которые генерируют последовательность чисел от заданных вектор-столбцов с действиями события:
Замените блоки Attribute Function, которые управляют атрибутами с помощью кода MATLAB с действиями события:
Скопируйте код Attribute Function, без синтаксиса функций, к вкладке Event actions в соответствующем действии события.
Чтобы относиться к атрибуту сущности, используйте сущность
формата.
.Attribute1
Для короткого или простого кода используйте построения как они:
Если вы имеете дольше или более сложный код, рассматриваете заменяющий блок Attribute Function на Simulink Function и копирующий код без модификации в блок Simulink Function.
Возвратитесь к рабочему процессу миграции.
Если вы используете Сигналы Simulink в основанном на событии расчете, отправьте сигналы в блок Simulink Function.
Скопируйте основанный на событии код расчета в блок Simulink Function.
Отправьте Сигналы Simulink как входные параметры с блоком Simulink Function.
Например: