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