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