Пакет: 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.