Simulink.sdi.Run class

Пакет: Simulink.sdi

Доступ к запущенным сигналам и метаданным

Описание

Simulink.sdi.Run объект управляет метаданными запуска и сигналами, которые включают запуск. Можно использовать несколько методов, чтобы получить Simulink.sdi.Signal объекты получить доступ к данным сигнала и метаданным.

Конструкция

runObj = Simulink.sdi.Run.create создает пустой Simulink.sdi.Run объект.

runObj = Simulink.sdi.getRun(runID) создает Simulink.sdi.Runобъект, runObj, для запуска, соответствующего runID.

Можно также использовать Simulink.sdi.createRun и Simulink.sdi.createRunOrAddToStreamedRun функции, чтобы создать Run объекты.

Входные параметры

развернуть все

Уникальный номер, идентифицирующий запуск.

Свойства

развернуть все

Уникальная числовая идентификация для запуска.

Имя запуска. По умолчанию, name isempty.

Пример: 'Run 1'

Описание запуска. По умолчанию, Description isempty.

Пример: 'Initial simulation'

Пометьте для получения дополнительной информации о запуске. По умолчанию, Tag isempty. Можно использовать Tag параметр, чтобы категоризировать ваши данные моделирования или присоединить дополнительную информацию к запускам симуляции.

Пример: 'Gain = 2'

Дата и время запуск была создана.

Типы данных: datetime

Количество сигналов содержится в запуске.

Имя модели, которая создала запуск.

Режим Simulation раньше создавал запуск для запусков, созданных симуляцией.

Первый момент времени совместно используется всеми сигналами в запуске.

Последний момент времени совместно используется всеми сигналами в запуске.

Версия Simulink® использовала в симуляции, которая создала запуск.

Версия модели, симулированной, чтобы создать запуск, взятый из Model Properties.

Системная учетная запись использовала в симуляции, которая создала запуск. UserID только имеет значение для запусков, произведенных с симуляциями Simulink.

Имя машины использовало в симуляции, которая создала запуск. MachineName только имеет значение для запусков, произведенных с симуляциями Simulink.

Имя задачи симуляции, которая создала запуск для запусков, созданных с рабочими Parallel Computing Toolbox™.

Тип решателя использовал в симуляции, которая создала запуск. SolverType только имеет значение для запусков, произведенных с симуляциями Simulink.

Имя решателя использовало в симуляции, которая создала запуск. SolverName только имеет значение для запусков, произведенных с симуляциями Simulink.

Пример: ode45

Количество времени, чтобы инициализировать модель для симуляции, которая создала запуск. ModelInitializationTime только имеет значение для запусков, произведенных с симуляциями Simulink.

Время выполнения симуляции модели, которая создала запуск. ModelExecutionTime только имеет значение для запусков, произведенных с симуляциями Simulink.

Время, чтобы отключить симуляцию, которая создала запуск. ModelTerminationTime только имеет значение для запусков, произведенных с симуляциями Simulink.

Общее время, чтобы запустить симуляцию модели, которая создала запуск. 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

Альтернативы

Можно просмотреть запуски и их свойства в Инспекторе Данных моделирования пользовательский интерфейс. Можно также импортировать данные, чтобы создать запуски в Инспекторе Данных моделирования графический интерфейс пользователя. Для получения дополнительной информации, Данные о виде на море с Инспектором Данных моделирования.

Представленный в R2012b