Simulink.sdi. Запустите класс

Пакет: 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 пуст.

Пример: 'Run 1'

Описание выполнения. По умолчанию Description пуст.

Пример: 'Initial simulation'

Пометьте для получения дополнительной информации о выполнении. По умолчанию Tag пуст. Можно использовать параметр 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
экспортЭкспорт запущен к базовому рабочему пространству или файлу
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

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

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

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