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

В процессе моделирования блоки Sine Wave обеспечивают положение точки, проходящей замкнутый путь в терминах координат широты и долготы. График исследует эти координаты и присваивает строки q1 и q2 согласно информации в этой таблице.
| Широта | Долгота | q1 | q2 |
|---|---|---|---|
| положительный | положительный | "North" | "east" |
| положительный | отрицательный | "North" | "west" |
| отрицательный | положительный | "South" | "east" |
| отрицательный | отрицательный | "South" | "west" |
Затем оператор
sout = strcat("Location in ",q1,q2," Quadrant");
Чтобы создать модель Simulink® с пустым графиком, который использует язык действия C в командной строке MATLAB, входят
sfnew -cВ пустом графике поместите переход по умолчанию. Соединение появляется. Укажите и перетащите от ребра соединения, чтобы добавить другие переходы и соединения.
Дважды кликните каждый переход. В текстовой подсказке введите соответствующее условие или оператор действия.
Чтобы разрешить неопределенные данные, в панели Символов, кликают по значку Resolve undefined symbols
. Редактор Stateflow присваивает соответствующий осциллограф каждому символу в графике.
| Символ | Осциллограф |
|---|---|
latitude | Входные данные |
longitude | Входные данные |
q1 | Локальные данные |
q2 | Локальные данные |
sout | Выходные данные |
Задавать q1 когда данные о строке, в поле Type Property Inspector, выбирают string. Повторите ту спецификацию для q2 и sout.
В качестве альтернативы, чтобы создать данные о строке количество имеющее символов, задайте каждую строку как stringtype(n) использование подходящего buffer size n избегать усечения его содержимого. Например, эта таблица приводит подходящие буферные размеры для данных о строке в графике.
| Символ | Количество символов | Тип данных String |
|---|---|---|
q1 | 5 | stringtype(5) |
q2 | 5 | stringtype(5) |
sout | 30 | stringtype(30) |
В модели Simulink добавьте два блока Sine Wave и блок Display. Соедините блоки с портами ввода и вывода графика.

Установите параметры блоков Sine Wave, как обозначено в этой таблице.
| Блок | Амплитуда | Смещение | Частота | Фаза |
|---|---|---|---|---|
| Широта | 50 | 0 | 1 | 0 |
| Долгота | 50 | 0 | 1 | пи/2 |
Пометьте сигналы в модели как latitude, longitude, и sout. Щелкните правой кнопкой по каждому сигналу и выберите Log Selected Signals.
Когда вы симулируете модель, значок Simulation Data Inspector
подсвечен, чтобы указать, что это имеет новые данные моделирования. Чтобы открыть Инспектора Данных моделирования, кликните по значку.
В Инспекторе Данных моделирования установите флажки для latitude, longitude, и sout сигналы так, чтобы они были отображены на том же наборе осей. latitude и longitude сигналы появляются как синусоидальные кривые. sout сигнал показывается графиком перехода. Значение строки отображено в полосе, и перекрещенные линии отмечают изменения в значении.

Чтобы получить доступ к записанным данным в рабочем пространстве 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"