МАТЛАБ: Возможно ли выделить сигналы из набора данных в отдельные переменные? - PullRequest
0 голосов
/ 08 марта 2019

При экспорте данных Simulink Simulation в файлы .mat эти данные сохраняются как класс Simulink.SimulationData.Dataset, в котором содержатся все записанные сигналы (класса Simulink.SimulationData.Signal).Можно ли извлечь все данные значений сигналов в новые переменные массива с одинаковыми именами сигналов?

Например, DS (набор данных 1x1) содержит два сигнала: команду speed (сигнал 1x1) (сигнал 1x1)

Затем я хотел бы программно создать следующие переменные в моей рабочей области из DS, где каждая переменная содержит только свои значения данных: Скорость (двойная 100x1) Команда (двойная 100x1)

Моя первоначальная мысльбыло написать скрипт для создания новых переменных в цикле for.Что-то вроде следующего:

NumDatasetElements=data.numElements
for a = 1:NumDatasetElements
    data{a}.Name=data{a}.Values.data
end

Это, очевидно, не работает, но я думаю, что это показывает, что я пытаюсь сделать.Мне нужно создать переменную с именем data {a} .Name, а затем установить для нее data {a} .Values.data.

Причина, по которой я пытаюсь это сделать, заключается в том, что я нашелчто файл .mat, заполненный переменными массива, легко импортируется в Python как словарь с помощью функции sio.loadmat, а наборы данных - нет.Моя конечная цель - легко импортировать данные Simulink Simulation в Python, чтобы использовать matplotlib для построения графиков данных.

1 Ответ

0 голосов
/ 08 марта 2019

Внутри вашего цикла вы хотите

assignin('base',data{a}.Name,data{a}.Values.data);

Тем не менее, есть потенциально несколько проблем, с которыми вам придется столкнуться.В частности, что если сигнал не имеет имени, а что если данные не являются массивом, то есть это может быть timeseries.(Приведенный выше код будет работать, но не даст вам данных, которые нужно легко прочитать в python.) Вам нужно будет добавить код для обработки обоих этих случаев.

Существует также проблема потенциального создания лотови множество переменных в вашем рабочем пространстве, в зависимости от того, сколько данных вы регистрируете.

Вы также можете обнаружить, что вы можете просто изменить формат сохраненных данных на array, в этом случае ни один из вышеперечисленныхпотребуется.

...