Stateflow.EMChart

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

    Описание

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

    Совет

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

    Создание

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

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

    Затем, чтобы получить доступ к Stateflow.EMChart объект, вызовите find (Stateflow) функция для 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). Только данные переменного размера могут изменить размерность во время симуляции. Для получения дополнительной информации см. «Объявление входных параметров и выходов переменного размера».

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

    Интерфейс

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

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

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

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

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

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

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

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

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

    Унаследованные сигналы 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 (Stateflow) объект.

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

    Расположение блока 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 (Stateflow)Предоставьте указатель на класс для объекта
    dialog (Stateflow)Откройте диалоговое окно свойств
    find (Stateflow)Заданные объекты в иерархии
    get (Stateflow)Верните структуру MATLAB, содержащую настройки свойств объекта или массива объектов
    parse (Stateflow)Проанализируйте один график или все графики в модели
    set (Stateflow)Установите свойства с заданными значениями
    view (Stateflow)Отобразите объект в среде редактирования

    Примеры

    свернуть все

    Доступ к 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