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 пуст.

Пример: 'Запуститесь 1'

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

Пример: 'Начальное моделирование'

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

Пример: 'Получите = 2'

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

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

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

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

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

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

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

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

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

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

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

Имя задачи моделирования, которая создала выполнение для выполнений, созданных с Параллельными вычислениями рабочие Toolbox™.

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

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

Пример: ode45

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

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

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

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

Методы

добавлениеДобавьте сигналы запуститься
создатьСоздайте Simulink.sdi. Объект Run
экспортЭкспорт запущен в Simulink. SimulationData. Объект Dataset
getDatasetRefСоздайте Simulink.sdi. Объект DatasetRef для выполнения
getSignalByIndexПолучите объект Simulink.sdi.Signal индексом
getSignalIDByIndexВозвратите ID сигнала для сигнала в индексе
isValidSignalIDОпределите, допустим ли ID сигнала в рамках выполнения

Копировать семантику

Указатель. Чтобы изучить, как классы Handle влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Этот пример демонстрирует, как получить доступ к объекту Simulink.sdi.Run для выполнения, созданного путем журналирования сигналов к Моделированию Data Inspector. От объекта 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

Этот пример показывает, как создать выполнение, добавьте данные к нему, и затем просмотрите данные в Моделировании Data Inspector.

Создайте данные для выполнения

Этот пример создает объекты timeseries для синуса и косинуса. Чтобы визуализировать ваши данные, Моделирование, Data Inspector требует, по крайней мере, временного вектора, который соответствует вашим данным.

% 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';

Создайте моделирование запущенный Data Inspector и добавьте свои данные

Чтобы предоставить Моделированию доступ Data Inspector к вашим данным, используйте метод create и создайте выполнение. Этот пример изменяет некоторые свойства выполнения помочь идентифицировать данные. Можно легко просмотреть выполнение и предупредить о свойствах с Моделированием Data Inspector.

% 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, который может использоваться, чтобы построить график сигнала в Моделировании Data Inspector. Можно также программно управлять аспектами внешнего вида графика, такими как цвет и стиль строки, представляющей сигнал. Этот пример настраивает размещение подграфика и характеристики сигнала.

% 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

Закройте моделирование Data Inspector и сохраните свои данные

Simulink.sdi.close('sinusoids.mat')

Этот пример выполняет параллельные моделирования образцового slexAircraftExample с различными входными временными константами фильтра и показывает несколько способов получить доступ к данным с помощью Моделирования Data Inspector программируемый интерфейс.

Настройка

Запустите путем обеспечения Моделирования, Data Inspector пуст, и поддержка 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 получить доступ к данным с Моделированием Data Inspector. После цикла 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

Обработайте параллельные данные моделирования в моделировании Data Inspector

Можно также создать локальные объекты Run анализировать и визуализировать данные с помощью Моделирования API Data Inspector. Этот пример добавляет тег, указывающий на значение временной константы фильтра для каждого выполнения.

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

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

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

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

Была ли эта тема полезной?