Simulink: построение временных рядов в области / блоке для визуализации данных - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть блок Simulink, который вызывает пользовательскую функцию.Эта функция вызывает другую функцию: thingspeakread.m (предоставляется Официальным набором инструментов ThingSpeak ).

Здесь я хочу получить два результата.Данные (числовой тип, вектор) и временные метки (строки, вектор).

[data,timestamps] = thingSpeakRead(___)

Теперь я могу без проблем получить значения «Данные» в область действия (используя coder.extrinsic ('thingSpeakRead') и предварительно выделив переменную для хранения таких точек).,У меня проблема в следующем: мне нужно больше понимать визуализацию данных, и для этого мне нужно отобразить эти «Данные» по отношению к информации, отображаемой в векторе временных меток.Метки времени меняются только в минуту.

То, что я попытаюсь сделать, но меня не очень устраивает:

  • Преобразовать временную метку в числовое значение, используя datenum (), используя формат для 'mm /дд / гггг ЧЧ: ММ: СС '

Эта опция отправляет обратно огромное число (которое можно использовать для построения графика зависимости данных от времени, но оно не выглядит «хорошим», потому что числопросто слишком большой, и мне это не нравится).

Я тоже об этом думал:

  • Конвертировать дату в тип Юлианской даты.
  • Преобразование часов, минут и секунд в 3 различных массива.

Но я не вижу, чтобы это привело меня туда, куда я хочу (то есть построить график зависимости данных от времени, легко определить, что числа, отображаемые для «времени», соответствуют определенному ЧЧ: MM: SS дня).

Есть что-нибудь, что вы можете, ребята, предложить, пожалуйста?Заранее большое спасибо!

Редактировать 1: Могу ли я использовать что-то вроде datetick () в Simulink?

1 Ответ

0 голосов
/ 20 декабря 2018

То, что вы делаете с преобразованием в datenum, - это единственный способ передать "даты" вниз по сигналу Simulink.

Нет механизма для отображения временного ряда, сдаты отображаются на оси X, без написания пользовательского кода.

Если вам не нужно отображать временные ряды во время симуляции, просто сбросьте их в файл матов в существующем коде и сгенерируйте график во время последующей обработки.

Если вы хотите, чтобы он отображался во время симуляции, вам нужно написать собственный блок отображения.Это должно быть сделано как Level-2 M-Code S-Function, но может быть сделано с использованием блока MATLAB Function.В любом случае вы должны ввести datenum в блок и затем преобразовать datenum обратно в дату - используя что-то вроде datetime перед генерацией визуализации, или впоследствии, используя datetick.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...