В этом примере показано, как создать Stateflow® График, что на основе числовых входных данных объединяет строки данные в естественный язык выхода текст. Текст выхода можно просмотреть в Данные моделирования Inspector и в 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 чтобы избежать усечения его содержимого. Например, в этой таблице перечислены подходящие размеры буфера для строковых данных на графике.
| Символ | Количество символов | Строковый тип данных |
|---|---|---|
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 | pi/2 |
Пометьте сигналы в модели следующим latitude, longitude, и sout. Щелкните правой кнопкой мыши по каждому сигналу и выберите Log Selected Signals.
Когда вы моделируете модель, значок Simulation Data Inspector
подсвечивается, чтобы указать, что у него есть новые данные моделирования. Чтобы открыть Данные моделирования Inspector, щелкните значок.
В Данные моделирования Inspector установите флажки для latitude, longitude, и sout сигналы так, чтобы они отображались на одном и том же наборе осей. The latitude и longitude сигналы появляются как синусоидальные кривые. The 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"
strcat | table | get (Simulink)