Stateflow.EMChart

Интерфейс Stateflow к блоку MATLAB Function

    Описание

    Использование Stateflow.EMChart объекты для конфигурирования блоков MATLAB Function (Simulink) через Stateflow® программный интерфейс.

    MATLAB Function блоки определяют пользовательские функциональности в Simulink® модели. Используйте эти блоки, когда:

    • У вас есть существующий MATLAB® функция, которая моделирует пользовательскую функциональность, или вам будет легко создать такую функцию.

    • Ваша модель требует пользовательских функциональных возможностей, которые не захватываются или не могут быть захвачены в графическом языке Simulink.

    • Вы находите, что легче смоделировать пользовательские функциональности с помощью функции MATLAB, чем с помощью Диаграммы Simulink.

    • Пользовательская функциональность, которую вы хотите смоделировать, не включает непрерывные или дискретные динамические состояния. Чтобы смоделировать динамические состояния, используйте S-функции.

    Для получения дополнительной информации смотрите Реализация функций MATLAB с использованием блоков (Simulink) и Создание пользовательской функциональности с использованием блока MATLAB function (Simulink).

    Совет

    Можно также программно сконфигурировать свойства блока MATLAB Function при помощи MATLABFunctionConfiguration (Simulink) объект. Этот объект обеспечивает прямой интерфейс со свойствами блока MATLAB Function. Для получения дополнительной информации см. «Программная настройка блока MATLAB function (Simulink)».

    Создание

    Каждый блок MATLAB Function имеет свои собственные Stateflow.EMChart объект. Когда вы добавляете блок MATLAB Function к модели Simulink, Stateflow.EMChart автоматически создается для него. Для примера можно использовать функцию add_block (Simulink):

    add_block('simulink/User-Defined Functions/MATLAB Function', ...
       'myModel/MATLAB Function')

    Затем, чтобы получить доступ к Stateflow.EMChart объект, вызовите find функция для Simulink.Root объект:

    rt = sfroot;
    block = find(rt,'-isa','Stateflow.EMChart', ...
        'Path','myModel/MATLAB Function')

    Свойства

    расширить все

    Содержимое

    Имя блока MATLAB Function, заданное как вектор символов.

    Код для блока MATLAB Function, заданный как вектор символов. Чтобы ввести несколько строк кода, можно:

    • Вызовите функцию MATLAB sprintf и использовать \n для вставки символов новой строки:

      str = sprintf('function y=f(x)\ny=x+1;\nend');
      block.Script = str;
    • Введите конкатенированное текстовое выражение, которое использует целое число 10 в качестве эквивалента ASCII символа новой строки:

      str = ['function y=f(x)',10, ...
          'y=x+1;',10, ...
          'end'];
      block.Script = str;

    Независимо от того, MATLAB Function ли блок поддержек данные переменного размера, заданные в виде числа или логического 1 (true) или 0 (false). Только данные переменного размера могут изменить размерность во время симуляции. Для получения дополнительной информации смотрите Объявить входы и выходы переменного размера (Simulink).

    Поддерживает ли блок MATLAB Function семантику прямого прохода, заданную в виде числа или логического 1 (true) или 0 (false). Для получения дополнительной информации смотрите Разрешить прямое сквозное соединение (Simulink).

    Интерфейс

    Это свойство доступно только для чтения.

    Входные параметры блока MATLAB Function, заданные как массив Stateflow.Data объекты. Значение этого свойства зависит от входов, заданной в Script свойство для блока.

    Это свойство доступно только для чтения.

    Выходные аргументы блока MATLAB Function, заданные как массив Stateflow.Data объекты. Значение этого свойства зависит от выходов, заданной в Script свойство для блока.

    Дискретная и непрерывная семантика

    Метод активации для блока MATLAB Function, заданный как 'CONTINUOUS', 'DISCRETE', или 'INHERITED'. Для получения дополнительной информации смотрите Метод обновления (Simulink).

    Шаг расчета для активации блока MATLAB Function, заданный как вектор символов. Это свойство применяется только когда ChartUpdate свойство функции MATLAB 'DISCRETE'.

    Целое число и данные с фиксированной точкой

    Насыщаются ли данные в блоке MATLAB Function при целочисленном переполнении, заданном как число или логический 1 (true) или 0 (false). Когда это свойство отключено, данные в функции переносятся при целочисленном переполнении. Для получения дополнительной информации см. «Насыщение при целочисленном переполнении» (Simulink).

    Унаследованные сигналы Simulink для обработки как Fixed-Point Designer™ fi объекты, заданные как одно из следующих значений:

    • 'Fixed-point' - Блок MATLAB Function обрабатывает все входы с фиксированной точкой следующим fi объекты.

    • 'Fixed-point & Integer' - Блок MATLAB Function обрабатывает все входы с фиксированной точкой и целое число следующим fi объекты.

    Значения по умолчанию fimath свойства для блока MATLAB Function, заданные в качестве одного из следующих значений:

    • 'Same as MATLAB Default' - Использовать ту же fimath свойства как текущее значение по умолчанию fimath объект.

    • 'Other:UserSpecified' - Используйте InputFimath свойство для задания fimath по умолчанию объект.

    Значения по умолчанию fimath объект, заданный как вектор символов. Когда EmlDefaultFimath свойство для блока MATLAB Function 'Other:UserSpecified', вы можете использовать это свойство для:

    • Введите выражение, которое создает fimath объект.

    • Введите имя переменной для fimath объект в MATLAB или рабочее пространство модели.

    Иерархия

    Это свойство доступно только для чтения.

    Машина, которая содержит блок MATLAB Function, заданный как Stateflow.Machine объект.

    Это свойство доступно только для чтения.

    Расположение блока MATLAB Function в иерархии модели, заданное как вектор символов.

    Изменился ли блок MATLAB Function после открытия или сохранения, заданный как число или логический 1 (true) или 0 (false).

    Является ли блок MATLAB Function заблокированным, задается как число или логический 1 (true) или 0 (false). Включите это свойство, чтобы предотвратить изменения в блоке MATLAB Function.

    Это свойство доступно только для чтения.

    Является ли блок MATLAB Function заблокированным, задается как число или логический 1 (true) или 0 (false). Это свойство эквивалентно свойству Locked, но используется внутри, чтобы предотвратить изменения в блоке MATLAB Function во время симуляции.

    Идентификация

    Описание блока MATLAB Function, заданное как вектор символов.

    Ссылка на документ для блока MATLAB Function, заданная как вектор символов.

    Пользовательский тег для блока MATLAB Function, заданный как данные любого типа.

    Это свойство доступно только для чтения.

    Уникальный идентификатор, заданный как целочисленный скаляр. Используйте это свойство, чтобы отличить MATLAB Function блок от других объектов в модели. Значение этого свойства переназначается каждый раз, когда вы запускаете новый сеанс работы с MATLAB, и может быть повторно использовано после удаления объекта.

    Функции объекта

    classhandleПредоставьте указатель на класс для объекта
    dialogОткройте диалоговое окно свойств
    findЗаданные объекты в иерархии
    getВерните структуру MATLAB, содержащую настройки свойств объекта или массива объектов
    parseПроанализируйте один график или все графики в модели
    setУстановите свойства с заданными значениями
    viewОтобразите объект в среде редактирования

    Примеры

    свернуть все

    Доступ к Stateflow.EMChart объект для блока MATLAB Function.

    block = find(sfroot,'-isa','Stateflow.EMChart');

    Сохраните код MATLAB, чтобы вычислить среднее и стандартное отклонение для вектора значений в качестве вектора символов.

    str = ['function [mean,stdev] = stats(vals)',10, ...
    '% Calculates a statistical mean and a standard',10, ...
    '% deviation for the values in vals.',10,10, ...
    'len = length(vals);',10, ...
    'mean = avg(vals,len);',10, ...
    'stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len);',10, ...
    'plot(vals,''-+'');',10,10,...
    'function mean = avg(array,size)',10, ...
    'mean = sum(array)/size;'];

    Заполните блок кодом путем изменения Script свойство соответствующего Stateflow.EMChart объект.

    block.Script = str;

    Откройте функцию в редакторе MATLAB Function блоков.

    view(block)

    Редактор показывает этот код.

    function [mean,stdev] = stats(vals)
    % Calculates a statistical mean and a standard
    % deviation for the values in vals.
    
    len = length(vals);
    mean = avg(vals,len);
    stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len);
    plot(vals,'-+');
    
    function mean = avg(array,size)
    mean = sum(array)/size;

    Откройте модель Simulink под названием myModel.

    open_system('myModel')

    Добавьте блок MATLAB Function к myModel.

    blockPath = 'myModel/My Function';
    add_block('simulink/User-Defined Functions/MATLAB Function',blockPath)

    Заполните блок кодом из функции MATLAB myFunction.m.

    block = find(sfroot,'-isa','Stateflow.EMChart', ...
        'Path',newBlockPath);
    block.Script = fileread('myFunction.m');

    Откройте модель Simulink под названием myModel.

    open_system('myModel')

    Доступ к Simulink.Root объект на верхнем уровне иерархии Stateflow.

    rt = sfroot;

    Найдите блоки MATLAB Function в модели.

    blocks = find(rt,'-isa','Stateflow.EMChart');

    Подсчитайте количество блоков.

    numel(blocks);
    Введенный в R2011a