В этом примере показано, как создать график 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"