При миграции устаревших моделей 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.
Например:
