Что такое системные объекты?

Системный object™ является специализированным MATLAB® объект. Многие тулбоксы включают системные объекты. Системные объекты специально разработаны для реализации и симуляции динамических систем с входами, которые изменяются с течением времени. Многие системы обработки сигналов, связи и управления являются динамическими. В динамической системе значения выходных сигналов зависят как от мгновенных значений входных сигналов, так и от прошлого поведения системы. Системные объекты используют внутренние состояния, чтобы сохранить прошлое поведение, которое используется на следующем вычислительном шаге. В результате системные объекты оптимизируются для итерационных расчетов, которые обрабатывают большие потоки данных в сегментах, таких как системы обработки видео и аудио. Эта способность обрабатывать потоковые данные обеспечивает преимущество, заключающееся в отсутствии необходимости хранения больших объемов данных в памяти. Использование потоковых данных также позволяет использовать упрощенные программы, которые эффективно используют циклы.

Например, можно использовать Системные объекты в системе, которая считывает данные из файла, фильтрует эти данные и затем записывает отфильтрованный выход в другой файл. Обычно заданный объем данных передается в фильтр в каждой итерации цикла. Объект reader файла использует состояние, чтобы отследить, где в файле, чтобы начать следующее чтение данных. Аналогично, объект средства записи файлов отслеживает, где он последний раз записывал данные в выходной файл, так что данные не перезаписываются. Объект фильтра поддерживает свои собственные внутренние состояния, чтобы убедиться, что фильтрация выполняется правильно. Эта схема представляет один цикл системы.

Эти преимущества делают системные объекты хорошо подходящими для обработки потоковых данных.

Многие Системные объекты поддерживают:

  • Арифметика с фиксированной точкой (требует лицензии на Fixed-Point Designer™)

  • Генерация кода C (требует MATLAB Coder™ или Simulink® Лицензия кодера)

  • Генерация HDL-кода (требуется лицензия HDL- Coder™)

  • Генерация исполняемых файлов или общих библиотек (требуется лицензия MATLAB Compiler™)

Примечание

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

Системные объекты используют минимум две команды для обработки данных:

  • Создание объекта (например, fft256 = dsp.FFT)

  • Выполнение данных через объект (например, fft256(x))

Это отделение создания от выполнения позволяет вам создать несколько, постоянных, переиспользуемых объектов, каждый с различными настройками. Использование этого подхода избегает повторной валидации и верификации входов, позволяет легко использовать их в цикле программирования и повышает общую эффективность. Напротив, функции MATLAB должны проверять параметры каждый раз, когда вы вызываете функцию.

В дополнение к системным объектам, поставляемым с Системными тулбоксами, можно создать собственные Системные объекты. См. «Создание системных объектов».

Выполнение системного объекта

Чтобы запустить Системный объект и выполнить операцию, заданную его алгоритмом, вы вызываете объект, как будто он является функцией. Например, чтобы создать объект БПФ, который использует dsp.FFT Системный объект, задает длину 1024 и называет его dft, использовать:

dft = dsp.FFT('FFTLengthSource','Property','FFTLength',1024);
Чтобы запустить этот объект с входом x, использовать:
dft(x);
Если вы запускаете Системный объект без каких-либо входных параметров, необходимо включать пустые круглые скобки. Для примера, asysobj().

Когда вы запускаете Системный объект, он также выполняет другие важные задачи, связанные с обработкой данных, такие как инициализация и обработка состояний объекта.

Примечание

Альтернативным способом запуска Системного объекта является использование step функция. Для примера, для объекта, созданного с помощью dft = dsp.FFT, можно запустить его, используя step(dft,x).

Функции системного объекта

После создания системного объекта вы используете различные функции объекта для обработки данных или получения информации от объекта или о нем. Синтаксис использования функций <object function name>(<system object name>), плюс возможные дополнительные входные параметры. Для примера, для txfourier = dsp.FFT, где txfourier - это имя, которое вы присваиваете, вы вызываете reset функция, использующая reset(txfourier).

Общие функции объекта

Все системные объекты поддерживают следующие функции объекта. В случаях, когда функция не применима к конкретному объекту, вызов этой функции не влияет на объект.

ФункцияОписание
Запустите функцию объекта, или
step

Запускает объект для обработки данных с помощью алгоритма, заданного этим объектом.

Пример: Для объекта dft = dsp.FFT;, запустите объект через:

  • y = dft(x)

  • y = step(dft,x)

В рамках этой обработки объект инициализирует ресурсы, возвращает выходы и обновляет состояния объектов по мере необходимости. Во время выполнения можно изменять только настраиваемые свойства. Оба способа выполнения системного объекта возвращают обычные переменный MATLAB.

release

Отпустите ресурсы и разрешите изменения в значениях свойств системного объекта и дополнительных характеристиках, которые ограничены во время использования объекта System.

resetУстанавливает начальные значения для системного объекта.
narginВозвращает количество входов, принятых определением алгоритма Системного объекта. Если определение алгоритма включает varargin, а nargin выход отрицательный.
nargoutВозвращает количество выходов, принятых определением алгоритма системного объекта. Если определение алгоритма включает varargout, а nargout выход отрицательный.
cloneСоздает другой объект того же типа с теми же значениями свойств
isLockedВозвращает логическое значение, указывающее, был ли объект вызван, и вы еще не вызвали release на объекте.
isDoneПрименяется только к исходным объектам, которые наследуют от matlab.system.mixin.FiniteSource. Возвращает логическое значение, указывающее, достигнут ли конец файла данных. Если конкретный объект не имеет возможности конца данных, это значение функции всегда возвращается false.

См. также

Похожие темы