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

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

Flow chart that produces string output based on the numerical values of latitude and longitude.

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

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

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

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

sout = strcat("Location in ",q1,q2," Quadrant");
конкатенирует эти строки в выводимую строку.

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

Добавьте соединения и переходы

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

    sfnew

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

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

Задайте данные о графике

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

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

  2. Задавать q1 как данные о строке, нажмите q1 и, в Property Inspector, устанавливает Type на string.

  3. Повторите ту спецификацию для q2 и sout.

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

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

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

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

    Simulink model that contains a Stateflow chart, two Sine Wave blocks, and a Display block.

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

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

  3. Пометьте сигналы в модели как latitude, longitude, и sout.

  4. Щелкните правой кнопкой по каждому сигналу и выберите Log Selected Signals.

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

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

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

    Simulation Data Inspector showing output from the simulation.

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

    logsout = 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) |

Похожие темы