Пакет: Simulink.sdi
Доступ к запущенным сигналам и метаданным
Simulink.sdi.Run
объект управляет метаданными запуска и сигналами, которые включают запуск. Можно использовать несколько методов, чтобы получить Simulink.sdi.Signal
объекты получить доступ к данным сигнала и метаданным.
создает пустой runObj
= Simulink.sdi.Run.createSimulink.sdi.Run
объект.
создает runObj
= Simulink.sdi.getRun(runID
)Simulink.sdi.Run
объект, runObj
, для запуска, соответствующего runID
.
Можно также использовать Simulink.sdi.createRun
и Simulink.sdi.createRunOrAddToStreamedRun
функции, чтобы создать Run
объекты.
runID
— Запустите идентификаторУникальный номер, идентифицирующий запуск.
id
— Запустите идентификаторУникальная числовая идентификация для запуска.
Name
— Запустите имяИмя запуска. По умолчанию, name
isempty.
Пример: 'Run 1'
Description
— Запустите описаниеОписание запуска. По умолчанию, Description
isempty.
Пример: 'Initial simulation'
Tag
— Информационный тегПометьте для получения дополнительной информации о запуске. По умолчанию, Tag
isempty. Можно использовать Tag
параметр, чтобы категоризировать ваши данные моделирования или присоединить дополнительную информацию к запускам симуляции.
Пример: 'Gain = 2'
DateCreated
— Запустите время созданияДата и время запуск была создана.
Типы данных: datetime
SignalCount
— Количество сигналов в запускеКоличество сигналов содержится в запуске.
Model
— Модель, которая создала запускИмя модели, которая создала запуск.
SimMode
— Режим SimulationРежим Simulation раньше создавал запуск для запусков, созданных симуляцией.
StartTime
— Запустите время началаПервый момент времени совместно используется всеми сигналами в запуске.
StopTime
— Запустите время остановкиПоследний момент времени совместно используется всеми сигналами в запуске.
SLVersion
— Версия Simulink раньше создавала запускВерсия Simulink® использовала в симуляции, которая создала запуск.
ModelVersion
— Версия модели раньше создавала запускВерсия модели, симулированной, чтобы создать запуск, взятый из Model Properties.
UserID
— Системная учетная записьСистемная учетная запись использовала в симуляции, которая создала запуск. UserID
только имеет значение для запусков, произведенных с симуляциями Simulink.
MachineName
— Имя машины используется в симуляцииИмя машины использовало в симуляции, которая создала запуск. MachineName
только имеет значение для запусков, произведенных с симуляциями Simulink.
TaskName
— Имя задачиИмя задачи симуляции, которая создала запуск для запусков, созданных с рабочими Parallel Computing Toolbox™.
SolverType
— Тип решателя раньше создавал запускТип решателя использовал в симуляции, которая создала запуск. SolverType
только имеет значение для запусков, произведенных с симуляциями Simulink.
SolverName
— Имя решателя раньше создавало запускИмя решателя использовало в симуляции, которая создала запуск. SolverName
только имеет значение для запусков, произведенных с симуляциями Simulink.
Пример: ode45
ModelInitializationTime
— Время, чтобы инициализировать модельКоличество времени, чтобы инициализировать модель для симуляции, которая создала запуск. ModelInitializationTime
только имеет значение для запусков, произведенных с симуляциями Simulink.
ModelExecutionTime
— Время, чтобы выполнить модельВремя выполнения симуляции модели, которая создала запуск. ModelExecutionTime
только имеет значение для запусков, произведенных с симуляциями Simulink.
ModelTerminationTime
— Время, чтобы отключить симуляциюВремя, чтобы отключить симуляцию, которая создала запуск. ModelTerminationTime
только имеет значение для запусков, произведенных с симуляциями Simulink.
ModelTotalElapsedTime
— Общее время симуляцииОбщее время, чтобы запустить симуляцию модели, которая создала запуск. ModelTotalElapsedTime
только имеет значение для запусков, произведенных с симуляциями Simulink.
добавление | Добавьте сигналы запуститься |
создать | Создайте Simulink.sdi.Run object |
экспорт | Экспорт запущен к базовому рабочему пространству или файлу |
getDatasetRef | Создайте Simulink.sdi.DatasetRef object для запуска |
getSignalByIndex | Получите Simulink.sdi.Signal объект индексом |
getSignalIDByIndex | Возвратите ID сигнала для сигнала в индексе |
isValidSignalID | Определите, допустим ли ID сигнала в рамках запуска |
Указатель. Чтобы изучить, как классы Handle влияют на операции копии, смотрите Копирование Объектов (MATLAB).
Этот пример демонстрирует, как получить доступ к Simulink.sdi.Run
объект для Инспектора Данных моделирования, запущенного созданный путем логгирования сигналов. От Simulink.sdi.Run
объект можно получить Simulink.sdi.Signal
объекты, которые можно использовать, чтобы отобразить данные на графике.
Создайте запущенную симуляцию и доступ к Run
Объект
sldemo_fuelsys
модель включает несколько сигналов, которые отмечены для логгирования. Чтобы создать симуляцию, запущенную содержащий записанные данные, симулируйте модель.
sim('ex_vdp');
Инспектор Данных моделирования отслеживает запуски путем присвоения каждого запуска, созданного симуляцией, импортирования данных или открытия сеанса уникальный числовой ID. Чтобы получить доступ к объекту запуска для симуляции, только выполненной, используйте Simulink.sdi.getAllRunIDs
функционируйте и возьмите последний ID запуска в возвращенном векторе.
runIDs = Simulink.sdi.getAllRunIDs; runID = runIDs(end);
Если у вас есть ID запуска для запуска интереса, можно использовать Simulink.sdi.getRun
функция, чтобы получить Simulink.sdi.Run
объект, соответствующий запуску. Можно использовать Run
возразите, чтобы проверять метаданные, сопоставленные с запуском, включая количество сигналов в запуске.
vdpRun = Simulink.sdi.getRun(runID); vdpRun.SignalCount
ans = int32
2
Отобразите данные на графике Используя Signal
Объекты
Используйте getSignalByIndex
функционируйте, чтобы получить доступ к сигналам интереса от Run
объект, fuelRun
.
signal1 = getSignalByIndex(vdpRun,1); signal2 = getSignalByIndex(vdpRun,2);
Используйте Simulink.sdi.setSubPlotLayout
функция, чтобы задать размещение 3 на 1.
Simulink.sdi.setSubPlotLayout(2,1)
Прежде, чем отобразить данные на графике, используйте Simulink.sdi.clearAllSubPlots
функционируйте, чтобы очистить любые данные, которые уже отображены на графике.
Simulink.sdi.clearAllSubPlots
Постройте один сигнал на каждом подграфике. Чтобы построить сигналы на первом подграфике, можно установить checked
свойство для сигнала. Чтобы построить сигналы на подграфиках кроме первого подграфика, используйте plotOnSubPlot
функция.
signal1.Checked = true; plotOnSubPlot(signal2,2,1,true);
Просмотрите отображенные на графике данные
Чтобы просмотреть графики, вы только создали, откройте Инспектора Данных моделирования, использующего Simulink.sdi.view
функция.
В этом примере показано, как создать запуск, добавьте данные в него, и затем просмотрите данные в Инспекторе Данных моделирования.
Создайте данные для запуска
Этот пример создает timeseries
объекты для синуса и косинуса. Чтобы визуализировать ваши данные, Инспектор Данных моделирования требует, по крайней мере, временного вектора, который соответствует вашим данным.
% Generate timeseries data time = linspace(0, 20, 100); sine_vals = sin(2*pi/5*time); sine_ts = timeseries(sine_vals, time); sine_ts.Name = 'Sine, T=5'; cos_vals = cos(2*pi/8*time); cos_ts = timeseries(cos_vals, time); cos_ts.Name = 'Cosine, T=8';
Создайте запущенного инспектора данных моделирования и добавьте свои данные
Чтобы предоставить Инспектора Данных моделирования доступ к вашим данным, используйте create
метод и создает запуск. Этот пример изменяет некоторые свойства запуска помочь идентифицировать данные. Можно легко просмотреть запуск и предупредить о свойствах с Инспектором Данных моделирования.
% Create a run sinusoidsRun = Simulink.sdi.Run.create; sinusoidsRun.Name = 'Sinusoids'; sinusoidsRun.Description = 'Sine and cosine signals with different frequencies'; % Add timeseries data to run sinusoidsRun.add('vars', sine_ts, cos_ts);
Отобразите свои данные на графике Используя Simulink.sdi.Signal
Объект
getSignalByIndex
метод возвращает Simulink.sdi.Signal
объект, который может использоваться, чтобы построить сигнал в Инспекторе Данных моделирования. Можно также программно управлять аспектами внешнего вида графика, такими как цвет и стиль линии, представляющей сигнал. Этот пример настраивает размещение подграфика и характеристики сигнала.
% Get signal, modify its properties, and change Checked property to true sine_sig = sinusoidsRun.getSignalByIndex(1); sine_sig.LineColor = [0 0 1]; sine_sig.LineDashed = '-.'; sine_sig.Checked = true; % Add another subplot for the cosine signal Simulink.sdi.setSubPlotLayout(2, 1); % Plot the cosine signal and customize its appearance cos_sig = sinusoidsRun.getSignalByIndex(2); cos_sig.LineColor = [0 1 0]; cos_sig.plotOnSubPlot(2, 1, true); % View the signal in the Simulation Data Inspector Simulink.sdi.view
Закройте инспектора данных моделирования и сохраните свои данные
Simulink.sdi.close('sinusoids.mat')
Этот пример выполняет параллельные симуляции модели slexAircraftExample
с различными входными постоянными времени фильтра и показывает несколько способов получить доступ к данным с помощью Инспектора Данных моделирования программируемый интерфейс.
Настройка
Запустите путем гарантирования, что Инспектор Данных моделирования пуст, и поддержка Parallel Computing Toolbox сконфигурирована, чтобы импортировать запуски, созданные на локальных рабочих автоматически. Затем создайте вектор значений параметров фильтра, чтобы использовать в каждой симуляции.
% Make sure the Simulation Data Inspector is empty, and PCT support is % enabled. Simulink.sdi.clear Simulink.sdi.enablePCTSupport('local') % Define Ts values Ts_vals = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1];
Инициализируйте параллельных рабочих
Используйте gcp, чтобы создать пул локальных рабочих, чтобы идти параллельно симуляции, если у вас уже нет того. В spmd
блок кода, загрузите slexAircraftExample
модель и выбор сигнализируют, чтобы регистрировать. Избегать проблем параллелизма данных с помощью sim
в parfor
, создайте временную директорию для каждого рабочего, чтобы использовать во время симуляций.
p = gcp;
Starting parallel pool (parpool) using the 'local' profile ... connected to 4 workers.
spmd % Load system and select signals to log load_system('slexAircraftExample') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot', 1, 'on') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model', 4, 'on') % Create temporary directory on each worker workDir = pwd; addpath(workDir) tempDir = tempname; mkdir(tempDir) cd(tempDir) end
Идите параллельно симуляции
Используйте parfor
запускать эти семь параллельных симуляций. Выберите значение для Ts
для каждой симуляции, и изменяют значение Ts
в рабочем пространстве модели. Затем запустите симуляцию и создайте массив Simulink.sdi.WorkerRun
объекты получить доступ к данным с Инспектором Данных моделирования. После parfor
цикл, используйте другой spmd
сегмент, чтобы удалить временные директории от рабочих.
parfor index = 1:7 % Select value for Ts Ts_val = Ts_vals(index); % Change the filter time constant and simulate modelWorkspace = get_param('slexAircraftExample','modelworkspace'); modelWorkspace.assignin('Ts',Ts_val) sim('slexAircraftExample') % Create a worker run for each simulation workerRun(index) = Simulink.sdi.WorkerRun.getLatest end spmd % Remove temporary directories cd(workDir) rmdir(tempDir, 's') rmpath(workDir) end
Получите объекты набора данных от параллельной симуляции Выход
getDataset
метод помещает данные из WorkerRun
в Dataset
возразите, таким образом, можно легко постобработать.
ds(7) = Simulink.SimulationData.Dataset; for a = 1:7 ds(a) = workerRun(a).getDataset; end ds(1)
ans = Simulink.SimulationData.Dataset '' with 2 elements Name BlockPath __________ ________________________________________ 1 [1x1 Signal] alpha, rad ...rcraftExample/Aircraft Dynamics Model 2 [1x1 Signal] Stick slexAircraftExample/Pilot - Use braces { } to access, modify, or add elements using index.
Получите объекты DatasetRef от параллельной симуляции Выход
Для больших рабочих процессов данных используйте getDatasetRef
метод, чтобы сослаться на данные, сопоставленные с WorkerRun
.
for b = 1:7 datasetRef(b) = workerRun(b).getDatasetRef; end datasetRef(1)
ans = DatasetRef with properties: Name: 'Run 3: slexAircraftExample' Run: [1×1 Simulink.sdi.Run] numElements: 2
Данные моделирования параллели процесса в инспекторе данных моделирования
Можно также создать локальный Run
объекты анализировать и визуализировать ваши данные с помощью Инспектора Данных моделирования API. Этот пример добавляет тег, указывающий на значение постоянной времени фильтра для каждого запуска.
for c = 1:7 Runs(c) = workerRun(c).getLocalRun; Ts_val_str = num2str(Ts_vals(c)); desc = strcat('Ts = ', Ts_val_str); Runs(c).Description = desc; Runs(c).Name = strcat('slexAircraftExample run Ts=', Ts_val_str); end
Очистите репозитории рабочего
Очистите файлы, используемые рабочими к свободному дисковое пространство для других симуляций, вы хотите работать на своем пуле рабочего.
Simulink.sdi.cleanupWorkerResources
Можно просмотреть запуски и их свойства в Инспекторе Данных моделирования пользовательский интерфейс. Можно также импортировать данные, чтобы создать запуски в Инспекторе Данных моделирования графический интерфейс пользователя. Для получения дополнительной информации, Данные о виде на море с Инспектором Данных моделирования.
Simulink.sdi.Signal
| Simulink.sdi.WorkerRun
| Simulink.sdi.WorkerRun.getLocalRun
| Simulink.sdi.addToRun
| Simulink.sdi.createRun
| Simulink.sdi.getRun
| Simulink.sdi.getRunIDByIndex
| Simulink.sdi.setRunNamingRule
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.