Можно передать данные сигнала потоком к функции обратного вызова MATLAB® в процессе моделирования с помощью функциональности Data Access в Instrumentation Properties для сигнала. Функция, которую вы обеспечиваете, получает данные в пакетах асинхронно в течение симуляции. Функция обратного вызова выполняется каждый раз, когда она получает новые данные. Можно записать функцию обратного вызова, чтобы обработать данные сигнала в процессе моделирования или создать пользовательскую визуализацию сигнала. Функция обратного вызова не влияет на значения сигналов в вашей модели. Этот пример иллюстрирует шаги, требуемые получить доступ к данным сигнала в процессе моделирования с помощью простой функции обратного вызова, которая строит сигнал.
Доступ к данным не поддерживает Быстрый Режим Accelerator, модели, на которые ссылаются, данные фиксированной точки, или соединяет шиной сигналы и только поддерживает 1D и 2D матричные сигналы.
Функция обратного вызова доступа к данным всегда получает данные сигнала в качестве первого аргумента. Можно принять решение отправить время симуляции и параметр. Когда вы включаете все три аргумента, время симуляции является вторым аргументом. Ваша функция обратного вызова может быть характерна для одного сигнала, или можно использовать тот же коллбэк, чтобы обработать и визуализировать несколько сигналов. Функция обратного вызова только имеет доступ к данным для одного сигнала за один раз. Этот пример создает функцию обратного вызова, которая получает данные сигнала, время, и параметр раньше идентифицировал, какой сигнал функция обрабатывает для данного вызова.
Создайте свою функцию обратного вызова в m-файле с тем же именем как ваша функция. Для получения дополнительной информации о записи функций MATLAB, смотрите, Создают Функции в Файлах (MATLAB). Функция обратного вызова в качестве примера использует дополнительный параметр, чтобы присвоить числовой идентификатор каждому сигналу. Параметр используется, чтобы создать уникальную фигуру для каждого сигнала и присвоить каждый сигнал различный цвет линии. Чтобы накопить данные сигнала на графике, коллбэк включает hold on
. Для каждого вызова коллбэка функция получает фрагмент данных сигнала. Можно использовать коллбэк, чтобы накопить пакеты при желании.
function plotSignals(y,time,sigNum) figure(sigNum) if isequal(sigNum,1) marker = 'ro-'; elseif isequal(sigNum,2) marker = 'go-'; else marker = 'bo-'; end hold on; plot(time,y,marker); end
Функция обратного вызова не обеспечивает возвращаемых значений. Если вы задаете функцию с возвратами, данные о возврате отбрасываются.
Используйте assignin
к данным о доступе из функции обратного вызова в базовом рабочем пространстве.
Сохраните функцию обратного вызова в месте на пути MATLAB. Если местоположение, где вы сохраняете коллбэк, не находится на пути, можно добавить его в путь. Щелкните правой кнопкой по директории, содержащей коллбэк в разделе Current Folder в MATLAB, и выберите Add to Path.
К данным о доступе для сигнала с коллбэком доступа к данным необходимо регистрировать сигнал. Чтобы отметить сигнал для логгирования, щелкните правой кнопкой по сигналу по своей модели и выберите Log Selected Signals. Чтобы сконфигурировать доступ к данным для сигнала, щелкните правой кнопкой по значку логгирования и выберите Properties. На вкладке Data Access Instrumentation Properties можно задать имя функции обратного вызова, занимает ли функция обратного вызова время в качестве аргумента и дополнительного значения параметров.
Например, откройте vdp
модель и конфигурирует x1
и x2
сигналы использовать коллбэк от предыдущего раздела.
Введите vdp
в Command Window MATLAB.
Выберите x1
и x2
сигналы. Затем щелкните правой кнопкой по выбранным сигналам и выберите Log Selected Signals из контекстного меню.
Чтобы открыть Instrumentation Properties, щелкните правой кнопкой по значку логгирования для x1
и выберите Properties.
На панели Data Access введите имя коллбэка, проверяйте Include simulation time и введите 1
как Function parameter.
Откройте Instrumentation Properties для x2
и сконфигурируйте панель Data Access, чтобы использовать plotSignals
коллбэк со значением Function parameter 2
.
Симулируйте vdp
модель. Коллбэк генерирует рисунки 1 и 2, чтобы отобразить x1
и x2
сигналы в процессе моделирования.
Можно изменить функцию обратного вызова, чтобы создать пользовательскую визуализацию или создать график обработанных данных сигнала. Ошибки, связанные с функцией обратного вызова доступа к данным, не прерывают симуляцию. Ошибки появляются в Diagnostic Viewer как предупреждение.