Можно просмотреть данные регистрации сигнала во время моделирования, с помощью Моделирования Data Inspector, или для приостановленных или остановленных моделирований, с помощью других интерфейсов визуализации. Смотрите Решают, Как Визуализировать Данные Моделирования.
Также можно получить доступ к данным регистрации сигнала программно, с помощью команд MATLAB®, как описано в этой теме.
Если вы не видите данные регистрации для сигнала, что вы отметили в модели для журналирования сигнала, проверьте настройку журналирования. Используйте Селектор Журналирования Сигнала, чтобы позволить регистрировать для сигнала, журналирование которого заменено. Для получения дополнительной информации смотрите Представление Сигнал Настройки и Переопределения Журналирования Сигнала Журналирование Настроек.
Simulink® сохраняет данные журналирования сигнала в объекте Simulink.SimulationData.Dataset
, который является переменной MATLAB workspace. Именем по умолчанию переменной журналирования сигнала является logsout
. Можно поменять имя переменной. Для получения дополнительной информации смотрите, Задают Имя для Данных Регистрации Сигнала.
Можно задать, хотите ли вы, чтобы данные для отдельных сигналов в наборе данных использовали MATLAB элементы timetable
или timeseries
. Установите параметр конфигурации формата сигнала Набора данных (для получения дополнительной информации смотрите формат сигнала Набора данных).
Релизы ранее, чем R2016a также поддержали формат ModelDataLogs
. Для получения дополнительной информации смотрите, Перемещают Скрипты Тот Устаревший ModelDataLogs API Использования.
Можно использовать API Simulink.SimulationData.Dataset
, чтобы получить доступ к данным регистрации сигнала программно. К элементам объекта 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
для данных регистрации сигнала.
logsout
Simulink.SimulationData.Dataset 'logsout' with 3 elements Name BlockPath ____ ____________________ 1 [1x1 Signal] '' untitled/Sine Wave2 2 [1x1 Signal] x y untitled/Sine Wave 3 [1x1 Signal] x y untitled/Sine Wave1 - Use braces { } to access, modify, or add elements using index.
Чтобы получить доступ к сигналу с пробелом или новой строкой, используйте индекс. Например, чтобы получить доступ к сигналу x y
:
>> logsout.getElement{2}
ans = Simulink.SimulationData.Signal Package: Simulink.SimulationData Properties: Name: 'x y' PropagatedName: '' BlockPath: [1x1 Simulink.SimulationData.BlockPath] PortType: 'outport' PortIndex: 1 Values: [1x1 timeseries]
ModelDataLogs
Перед R2016a вы могли регистрировать сигналы в формате ModelDataLogs
. Начиная в R2016a, вы не можете данные логов в формате ModelDataLogs
. Журналирование сигнала использует формат Dataset
.
Однако можно использовать данные, который был зарегистрирован предыдущий релиз с помощью формата ModelDataLogs
.
Для получения дополнительной информации смотрите
. Simulink.ModelDataLogs
Simulink.SimulationData.BlockPath
| Simulink.SimulationData.Dataset
| Simulink.SimulationData.Dataset.find
| Simulink.SimulationData.Dataset.get
| Simulink.SimulationData.Dataset.getElementNames
| Simulink.SimulationData.Dataset.numElements
| Simulink.SimulationData.Dataset.setElement
| Simulink.SimulationData.Signal
| Simulink.SimulationData.forEachTimeseries