Системные объекты позволяют вам разрабатывать и моделировать свою систему в MATLAB®. Вы используете Системные объекты в MATLAB как показано в этой схеме.
Создайте Отдельные Компоненты — Создают Системные объекты, чтобы использовать в вашей системе. Создайте Отдельные Компоненты. В дополнение к Системным объектам, которым предоставляют Системные Тулбоксы, можно также создать собственные Системные объекты. См. Создание системных объектов.
Сконфигурируйте Компоненты — При необходимости, измените значения свойств объектов, чтобы смоделировать вашу конкретную систему. Вся Система object™ свойства имеет значения по умолчанию, которые можно смочь использовать, не изменяя их. Смотрите Конфигурируют Компоненты.
Соберите Компоненты В Систему — Запись программа MATLAB, которая включает те Системные объекты, соединяя их использующий переменные MATLAB в качестве вводов и выводов, чтобы моделировать вашу систему. Смотрите Соединяющиеся Системные объекты.
Запустите Свою Систему — Выполнение ваша программа. Можно изменить настраиваемые свойства, в то время как система запускается. Смотрите Выполнение Ваша Система и Реконфигурировавшие Объекты.
Пример в этом разделе показывает, как использовать Системные объекты, которые предопределены в программном обеспечении. Если вы используете функцию, чтобы создать и использовать Системный объект, задайте создание объекта с помощью условного кода. Conditionalizing создание предотвращает ошибки, если эта функция называется в цикле. Можно также создать собственные Системные объекты, видеть Создание системных объектов.
Этот раздел показывает, как настроить вашу систему с помощью предопределенных компонентов от DSP System Toolbox™ и Audio Toolbox™:
dsp.AudioFileReader
— Считайте файл аудиоданных
dsp.FIRFilter
— Отфильтруйте аудиоданные
audioDeviceWriter
— Проигрывайте отфильтрованные аудиоданные
Во-первых, создайте объекты компонента, с помощью настроек свойства по умолчанию.
audioIn = dsp.AudioFileReader; filtLP = dsp.FIRFilter; audioOut = audioDeviceWriter;
Если бы вы не установили свойства объекта, когда вы создали его, и не хотят использовать значения по умолчанию, необходимо явным образом установить те свойства. Некоторые свойства позволяют вам изменять свои значения, в то время как ваша система запускается. Смотрите Объекты Реконфигурирования для получения информации.
Большинство свойств независимо друг от друга. Однако некоторые свойства Системного объекта включают или отключают другое свойство или ограничивают значения другого свойства. Чтобы избежать ошибок или предупреждений, необходимо установить свойство управления прежде, чем установить зависимое свойство.
Чтобы отобразить текущие значения свойств для объекта, введите имя указателя того объекта в командной строке (такой как audioIn
). Чтобы отобразить значение определенного свойства, введите objecthandle.propertyname
(такой как audioIn.FileName
).
Этот раздел показывает, как сконфигурировать компоненты для вашей системы путем установки свойств объектов компонента.
Используйте эту процедуру, если вы создали свои компоненты отдельно из конфигурирования их. Можно также создать и сконфигурировать компоненты одновременно, как описано в более позднем примере.
Для объекта средства чтения файлов задайте файл, чтобы считать и установить тип выходных данных.
Для объекта фильтра задайте коэффициенты числителя фильтра с помощью функции fir1, которая задает порядок фильтра нижних частот и частоту среза.
Для объекта средства записи аудио устройства задайте частоту дискретизации. В этом случае используйте ту же частоту дискретизации в качестве входных данных.
audioIn.Filename = "speech_dft_8kHz.wav"; audioIn.OutputDataType = "single"; filtLP.Numerator = fir1(160,.15); audioOut.SampleRate = audioIn.SampleRate;
Этот пример показывает, как создать ваши компоненты Системного объекта и сконфигурировать желаемые свойства одновременно. Задайте каждое свойство с 'Именем', парой аргумента Value.
Создайте объект средства чтения файлов, задайте файл, чтобы считать, и установить тип выходных данных.
audioIn = dsp.AudioFileReader("speech_dft_8kHz.wav",... 'OutputDataType',"single");
Создайте объект фильтра и задайте числитель фильтра с помощью функции fir1. Задайте порядок фильтра нижних частот и частоту среза функции fir1.
filtLP = dsp.FIRFilter('Numerator',fir1(160,.15));
Создайте объект аудиоплеера и установите частоту дискретизации на тот же уровень как входные данные.
audioOut = audioDeviceWriter('SampleRate',audioIn.SampleRate);
После того, как вы определили компоненты, вы нуждаетесь и создали и сконфигурировали свои Системные объекты, соберите свою систему. Вы используете Системные объекты как другие переменные MATLAB и включаете их в код MATLAB. Можно передать переменные MATLAB в и из Системных объектов.
Основное различие между использованием Системных объектов и использованием функций - то, что Системные объекты используют двухступенчатый процесс. Сначала вы создаете объект и устанавливаете его параметры и затем, вы запускаете объект. Выполнение объекта инициализирует его и управляет потоком данных и управлением состоянием вашей системой. Вы обычно вызываете Системный объект в цикле кода.
Вы используете вывод от объекта как вход к другому объекту. Для некоторых Системных объектов можно использовать свойства тех объектов изменить вводы или выводы. Чтобы проверить, что соответствующее количество вводов и выводов используется, можно использовать nargin
и nargout
на любом Системном объекте. Для получения информации обо всех доступных функциях Системного объекта смотрите Функции Системного объекта.
Этот раздел показывает, как соединить компоненты вместе, чтобы считать, отфильтровать и проигрывать файл аудиоданных. Цикл с условием продолжения использует функцию isDone
, чтобы прочитать целый файл.
while ~isDone(audioIn) audio = audioIn(); % Read audio source file y = filtLP(audio); % Filter the data audioOut(y); % Play the filtered data end
Запустите свой код или вводящий непосредственно в командной строке или петляющий, содержа вашу программу. Когда вы запускаете код для своей системы, данные обрабатываются через ваши объекты.
Первый вызов Системного объекта инициализирует и запускает объект. Когда Системный объект начал обрабатывать данные, вы не можете изменить ненастраиваемые свойства.
В зависимости от Системного объекта могут также быть ограничены дополнительные спецификации:
Введите размер
Введите сложность
Тип входных данных
Настраиваемые типы данных свойства
Типы данных дискретного состояния
Если автор Системного объекта ограничил эти спецификации, вы получаете ошибку, при попытке изменить их, в то время как Системный объект используется.
Когда Системный объект начал обрабатывать данные, вы не можете изменить свойства nontunable. Можно использовать isLocked
на любом Системном объекте, чтобы проверить, обрабатывает ли объект данные. Когда обработка завершена, можно использовать функцию release
, чтобы высвободить средства и позволить изменения в ненастраиваемых свойствах.
Некоторыми свойствами объектов является tunable, который позволяет вам изменить их, даже если объект используется. Большинство свойств Системного объекта является ненастраиваемым. Обратитесь к странице с описанием объекта, чтобы определить, является ли отдельное свойство настраиваемым.
Во время объектного использования, после того, как вы вызвали алгоритм, некоторые Системные объекты не позволяют изменения во входной сложности, размере или типе данных. Если Системный объект ограничивает эти спецификации, можно вызвать release
, чтобы изменить эти спецификации. Вызов release
также сбрасывает другие аспекты Системного объекта, такие как состояния и Дискретные состояния.
Этот пример показывает, как изменить тип фильтра на фильтр высоких частот, когда код запускается путем изменения свойства Numerator
объекта фильтра. Изменение вступает в силу в следующий раз, когда объект называется.
reset(audioIn);% Reset audio file Wn = [0.05,0.1,0.15,0.2]; for x=1:4000 Wn_X = ceil(x/1000); filtLP.Numerator = fir1(160,Wn(Wn_X),'high'); audio = audioIn(); % Read audio source file y = filtLP(audio); % Filter the data audioOut(y); % Play the filtered data end