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

    Поддерживает ли блок MATLAB Function прямую проходную семантику в виде числового или логической единицы (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 на целочисленном переполнении в виде числового или логической единицы (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, будучи открытым или сохраненный в виде числового или логической единицы (true) или 0 (false).

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

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

    Заблокирован ли блок MATLAB Function в виде числового или логической единицы (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