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')

    Свойства

    развернуть все

    Объекты API Stateflow имеют свойства, которые соответствуют значениям, которые вы устанавливаете в редакторе Stateflow. Чтобы получить доступ или изменить свойство, используйте запись через точку. Чтобы получить доступ или изменить несколько свойств для нескольких объектов API, используйте get и set функции, соответственно. Для получения дополнительной информации см. Изменение свойств и Вызов функций Объектов Stateflow.

    Содержимое

    Имя блока 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 ложь). Только данные переменного размера могут изменить размерность в процессе моделирования. Для получения дополнительной информации смотрите, Объявляют Вводы и выводы Переменного Размера (Simulink).

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

    Ли блок MATLAB Function выходные вектор-столбцы как одномерные данные в виде числового или логического 0 ложь) или 1 TRUE). Для получения дополнительной информации смотрите Interpret вектор-столбцы выхода как одномерные данные (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 ложь). Когда это свойство отключено, данные в функции переносятся на целочисленном переполнении. Для получения дополнительной информации смотрите, Насыщают на целочисленном переполнении (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 ложь).

    Заблокирован ли блок MATLAB Function в виде числового или логического 1 TRUE) или 0 ложь). Включите этому свойству предотвратить изменения в блоке MATLAB Function.

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

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

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

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

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

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

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

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

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

    findИдентифицируйте заданные объекты в иерархии
    getChildrenИдентифицируйте дочерние элементы объекта
    dialogОткрытое диалоговое окно свойств
    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