Можно просмотреть данные о регистрации сигнала во время симуляции, с помощью Инспектора Данных моделирования, или для приостановленных или остановленных симуляций, с помощью других интерфейсов визуализации. Смотрите Решают, Как Визуализировать Данные моделирования.
Также можно получить доступ к данным о регистрации сигнала программно, с помощью команд MATLAB®, как описано в этой теме.
Если вы не видите данные о регистрации для сигнала, что вы отметили в модели для журналирования сигнала, проверяйте настройку журналирования. Используйте Селектор Журналирования Сигнала, чтобы позволить регистрировать для сигнала, журналирование которого заменено. Для получения дополнительной информации, вид на море Сигнал Настройки и Переопределения Журналирования Сигнала Журналирование Настроек.
Simulink® сохраняет данные о журналировании сигнала в объекте Simulink.SimulationData.Dataset
, который является переменной рабочего пространства MATLAB. Именем по умолчанию переменной журналирования сигнала является logsout
. Можно поменять имя переменной. Для получения дополнительной информации смотрите, Задают Имя для Данных о Регистрации Сигнала.
Можно задать, хотите ли вы, чтобы данные для отдельных сигналов в наборе данных использовали MATLAB элементы timetable
или timeseries
. Установите параметр конфигурации Dataset signal format (для получения дополнительной информации смотрите формат сигнала Набора данных).
Релизы ранее, чем 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