Stateflow.EMChart

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

    Описание

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

    Совет

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

    Создание

    Каждый блок MATLAB Function имеет свой собственный Stateflow.EMChart объект. Когда вы добавляете блок MATLAB Function в Simulink® модель, 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')

    Свойства

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

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

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

    Ли блок MATLAB Function выходные вектор-столбцы как одномерные данные в виде числового или логического 0 ложь) или 1 TRUE). Для получения дополнительной информации смотрите Interpret вектор-столбцы выхода как одномерные данные.

    Интерфейс

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

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

    Наследованные Сигналы 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 ложь).

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