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

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

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

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

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

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

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

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

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

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

  2. В Инспекторе Данных моделирования установите флажки для latitude, longitude, и sout сигналы так, чтобы они были отображены на том же наборе осей. latitude и longitude сигналы появляются как синусоидальные кривые. 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"
    

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

| |

Похожие темы