Журнал Строки данных в Данные моделирования Inspector

В этом примере показано, как создать Stateflow® График, что на основе числовых входных данных объединяет строки данные в естественный язык выхода текст. Текст выхода можно просмотреть в Данные моделирования Inspector и в MATLAB® рабочей области. Дополнительные сведения о строковых данных см. в разделе Управление текстовой информацией при помощи строк.

Поведение графика

Во время симуляции блоки Sine Wave обеспечивают положение точки, движущейся по замкнутому пути, с точки зрения координат широты и долготы. График исследует эти координаты и присваивает строки q1 и q2 согласно информации в этой таблице.

ШиротаДолготаq1q2
положительныйположительный"North""east"
положительныйотрицательный"North""west"
отрицательныйположительный"South""east"
отрицательныйотрицательный"South""west"

Затем, оператор

sout = strcat("Location in ",q1,q2," Quadrant");
объединяет эти строки в выход строку.

Создайте модель

Добавление соединений и переходов

  1. Создание Simulink® модель с пустым графиком, которая использует язык действий C, в командной строке MATLAB введите

    sfnew -C

  2. На пустой графике поместите переход по умолчанию. Появляется соединение. Укажите и перетащите мышью от ребра соединения, чтобы добавить другие переходы и соединения.

  3. Дважды кликните каждый переход. В текстовом приглашении введите соответствующее условие или оператор действия.

Определите данные графики

  1. Чтобы разрешить неопределенные данные, на панели «Символы» щелкните значок Resolve undefined symbols. Редактор Stateflow присваивает соответствующие возможности видимости каждому символу на графике.

    СимволВозможности
    latitudeВходные данные
    longitudeВходные данные
    q1Локальные данные
    q2Локальные данные
    soutВыходные данные

  2. Чтобы задать q1 в качестве строковых данных в Type поле Property Inspector выберите string. Повторите эту спецификацию для q2 и sout.

    Кроме того, чтобы создать строковые данные с максимальным количеством символов, задайте каждую строку следующим stringtype(n) использование подходящего buffer size n чтобы избежать усечения его содержимого. Например, в этой таблице перечислены подходящие размеры буфера для строковых данных на графике.

    СимволКоличество символовСтроковый тип данных
    q15stringtype(5)
    q25stringtype(5)
    sout30stringtype(30)

Добавьте источники и раковины к модели

  1. В модели Simulink добавьте два блока Sine Wave и блок Display. Соедините блоки с входными и выходными портами графика.

  2. Установите параметры блоков Sine Wave как указано в этой таблице.

    БлокАмплитудаУклонЧастотаФаза
    Широта50010
    Долгота5001pi/2

  3. Пометьте сигналы в модели следующим latitude, longitude, и sout. Щелкните правой кнопкой мыши по каждому сигналу и выберите Log Selected Signals.

Просмотр результатов симуляции

  1. Когда вы моделируете модель, значок Simulation Data Inspector подсвечивается, чтобы указать, что у него есть новые данные моделирования. Чтобы открыть Данные моделирования Inspector, щелкните значок.

  2. В Данные моделирования Inspector установите флажки для latitude, longitude, и sout сигналы так, чтобы они отображались на одном и том же наборе осей. The latitude и longitude сигналы появляются как синусоидальные кривые. The sout сигнал показан как график перехода. Значение строки отображается внутри полосы, а перекрестные линии отмечают изменения в значении.

  3. Для доступа к записанным данным в рабочем пространстве MATLAB вызовите объект логгирования сигналов logsout. Stateflow экспортирует строковые данные sout как строковый скаляр MATLAB. Для примера в командной строке введите:

    losgout = out.logsout;
    Tbl = table(logsout.get('latitude').Values.Data, ...
       logsout.get('longitude').Values.Data, ...
       logsout.get('sout').Values.Data);
    Tbl.Properties.VariableNames = ...
       {'Latitude','Longitude','QuadrantInfo'};
    Tbl([4:8:30],:)
    ans =
    
      4×3 table
    
        Latitude    Longitude              QuadrantInfo          
        ________    _________    ________________________________
    
         28.232       41.267     "Location in Northeast Quadrant"
         40.425      -29.425     "Location in Northwest Quadrant"
        -30.593      -39.548     "Location in Southwest Quadrant"
        -38.638       31.735     "Location in Southeast Quadrant"
    

См. также

| | (Simulink)

Похожие темы