Можно просмотреть записанные данные сигнала во время симуляции, с помощью Данные Моделирования Inspector или для паузы или остановки симуляции, с помощью других интерфейсов визуализации. Смотрите Решите, Как Визуализировать Данные моделирования.
Кроме того, вы можете получить доступ к данным логгирования сигналов программно, используя MATLAB® команды, как описано в этой теме.
Совет
Если вы не видите данные регистрации для сигнала, который вы пометили в модели для логгирования сигналов, проверьте строение регистрации. Используйте селектор регистрации сигналов, чтобы включить ведение журнала для сигнала, логгирование которого переопределено. Для получения дополнительной информации смотрите View the Signal Logging Configuration and Override Signal Logging Settings.
Simulink® сохраняет данные логгирования сигналов в Simulink.SimulationData.Dataset
объект, который является переменным Рабочим пространством MATLAB. Имя по умолчанию переменного логгирования сигналов logsout
. Вы можете изменить имя переменной. Для получения дополнительной информации смотрите Задать имя для данных логгированию сигналов.
Можно задать, хотите ли вы, чтобы данные для отдельных сигналов в наборе данных использовали MATLAB timeseries
или timetable
элементы. Установите параметр конфигурации Dataset signal format (для получения дополнительной информации см. Формат сигнала набора данных).
Релизы раньше, чем R2016a, также поддерживали ModelDataLogs
формат. Для получения дополнительной информации смотрите Миграция скриптов, которые используют Legacy ModelDataLogs API.
Можно использовать Simulink.SimulationData.Dataset
API для программного доступа к данным логгирования сигналов. Для доступа к Dataset
элементы объекта, используйте индексацию фигурными скобками. Для примера можно получить доступ к первому элементу topOut
логгирование сигналов Dataset
объект с использованием индексных 1
. Этот пример основан на использовании настройки по умолчанию timeseries
для элементов набора данных. Для получения дополнительной информации о timeseries
и timetable
форматировать данные, см. Формат сигнала набора данных.
open_system(docpath(fullfile(docroot,'toolbox','simulink',... 'examples','ex_bus_logging'))); open_system(docpath(fullfile(docroot,'toolbox','simulink',... 'examples','ex_mdlref_counter_bus'))); sim('ex_bus_logging') topOut
Simulink.SimulationData.Dataset 'topOut' with 4 elements Name BlockPath ____________ ________________________________________ 1 [1x1 Signal] COUNTERBUS ex_bus_logging/COUNTERBUSCreator 2 [1x1 Signal] OUTPUTBUS ex_bus_logging/CounterA 3 [1x1 Signal] INCREMENTBUS ex_bus_logging/IncrementBusCreator 4 [1x1 Signal] inner_bus ...erA|ex_mdlref_counter_bus/Bus Creator - Use braces { } to access, modify, or add elements using index.
element1 = topOut{1}
element1 = Simulink.SimulationData.Signal Package: Simulink.SimulationData Properties: Name: 'COUNTERBUS' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 struct] Methods, Superclasses
element1.Values
ans = data: [1x1 timeseries] limits: [1x1 struct]
Поиск определенных элементов в Dataset
объект, используйте find
способ. Как вернуть имена Dataset
элементы объекта, используйте getNames
способ.
Совет
Вызов функции на каждом указанном MATLAB timeseries
объект, вы можете использовать Simulink.SimulationData.forEachTimeseries
функция. Например, можно использовать эту функцию, чтобы упростить повторную выборку каждого элемента массива структуры timeseries
объекты, полученные путем регистрации сигнала шины.
Этот пример показывает три сигнала, которые иллюстрируют, как имена логгирования сигналов:
Сигнал с именем, содержащим пространство
Сигнал с именем, содержащим новую линию
Неназванный сигнал, который возникает на блоке с именем, которое содержит новую линию
Симулируйте модель, а затем посмотрите на результаты логгирования сигнала в logsout
переменная. Вы можете увидеть, что имена в Dataset
объект использует пространство, где имя сигнала содержало пробел и новую строку, где имя содержало новую строку. Неназванный сигнал имеет пустой символьный массив в качестве своего имени.
logsout
logsout = Simulink.SimulationData.Dataset 'logsout' with 3 elements Name BlockPath ____ ______________________________________ 1 [1x1 Signal] x y ex_signal_names_with_spaces/Sine Wave 2 [1x1 Signal] a b ex_signal_names_with_spaces/Sine Wave1 3 [1x1 Signal] '' ex_signal_names_with_spaces/Sine Wave2 - Use braces { } to access, modify, or add elements using index.
Вы можете получить доступ к сигналу с именем, которое содержит пространство по наименованию или по индексу. Вам просто нужно включить пространство в имя, которое вы передаете getElement
функция. Для доступа к сигналу с именем, содержащим новую строку, используйте индекс.
>> logsout{2}
ans = Simulink.SimulationData.Signal Package: Simulink.SimulationData Properties: Name: 'a↵b' PropagatedName: '' BlockPath: [1×1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1×1 timeseries]
ModelDataLogs
ФорматПеред R2016a можно войти в систему ModelDataLogs
формат. Начиная с R2016a, вы не можете войти данные в ModelDataLogs
формат. Логгирование сигналов использует Dataset
формат.
Однако можно использовать данные, которые были зарегистрированы в предыдущем релизе с помощью ModelDataLogs
формат.
Для получения дополнительной информации см.
. Simulink.ModelDataLogs
find
| get
| getElementNames
| numElements
| setElement
| Simulink.SimulationData.BlockPath
| Simulink.SimulationData.Dataset
| Simulink.SimulationData.forEachTimeseries
| Simulink.SimulationData.Signal