Пакет: 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
пуст.
Пример: 'Run 1'
Описание
Запустите описаниеОписание выполнения. По умолчанию Description
пуст.
Пример: 'Initial simulation'
Тег
Информационный тегПометьте для получения дополнительной информации о выполнении. По умолчанию Tag
пуст. Можно использовать параметр Tag
, чтобы категоризировать данные моделирования или присоединить дополнительную информацию к выполнениям симуляции.
Пример: 'Gain = 2'
DateCreated
— Запустите время созданияДата и время выполнение была создана.
Типы данных: datetime
SignalCount
— Количество сигналов в выполненииКоличество сигналов содержится в выполнении.
Model
— Модель, которая создала выполнениеИмя модели, которая создала выполнение.
SimMode
— SimulationРежим Simulation раньше создавал выполнение для выполнений, созданных симуляцией.
Время начала
Запустите время началаПервый момент времени совместно используется всеми сигналами в выполнении.
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 |
экспорт | Экспорт запущен к базовому рабочему пространству или файлу |
getDatasetRef | Создайте Simulink.sdi. Объект DatasetRef для выполнения |
getSignalByIndex | Получите объект Simulink.sdi.Signal индексом |
getSignalIDByIndex | Возвратите ID сигнала для сигнала в индексе |
isValidSignalID | Определите, допустим ли ID сигнала в рамках выполнения |
Указатель. Чтобы изучить, как классы Handle влияют на операции копии, смотрите Копирование Объектов (MATLAB).
Этот пример демонстрирует, как получить доступ к объекту Simulink.sdi.Run
для выполнения, созданного путем журналирования сигналов Инспектору Данных моделирования. От объекта Simulink.sdi.Run
можно получить объекты Simulink.sdi.Signal
, которые можно использовать, чтобы просмотреть данные.
% Simulate model to create a run sim('sldemo_fuelsys') % Get runID for the run runIDs = Simulink.sdi.getAllRunIDs; runID = runIDs(end); % Get run object for the run fuelRun = Simulink.sdi.getRun(runID); % Check signal count of the run fuelRun.signalCount
ans = int32
15
% Get signal objects for the signals in the run signal1 = fuelRun.getSignalByIndex(4); signal2 = fuelRun.getSignalByIndex(9); signal3 = fuelRun.getSignalByIndex(10); % Create subplot layout to display signals Simulink.sdi.setSubPlotLayout(3, 1) % Plot signals signal1.checked = true; signal2.plotOnSubPlot(2, 1, true); signal3.plotOnSubPlot(3, 1, true); % View plots in the Simulation Data Inspector 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.