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