Регистрируйте данные о строке инспектору данных моделирования

Этот пример показывает, как создать график Stateflow®, который, на основе числовых входных данных, конкатенирует данные о строке в синтезируемый текст естественного языка. Можно просмотреть синтезируемый текст в Инспекторе Данных моделирования и в рабочей области MATLAB®. Для получения дополнительной информации о данных о строке смотрите, Управляют Текстовой информацией при помощи Строк.

Стройте диаграмму поведения

Во время симуляции блоки Синусоиды обеспечивают положение точки, проходящей замкнутый путь с точки зрения координат широты и долготы. График исследует эти координаты и присваивает строки 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. Чтобы разрешить неопределенные данные, в окне Symbols, кликают по значку Resolve undefined symbols. Редактор Stateflow присваивает соответствующий осциллограф каждому символу в графике.

    СимволОсциллограф
    latitudeВходные данные
    longitudeВходные данные
    q1Локальные данные
    q2Локальные данные
    soutВыходные данные

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

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

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

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

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

  2. Установите параметры блоков Синусоиды, как обозначено в этой таблице.

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

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

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

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

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

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

    A = table(logsout.get('latitude').Values.Data, ...
       logsout.get('longitude').Values.Data, ...
       logsout.get('sout').Values.Data);
    A.Properties.VariableNames = {'Latitude','Longitude','QuadrantInfo'};
    A([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"
    

Смотрите также

| |

Похожие темы