Разработка системы в MATLAB Используя системные объекты

Разработка системы и моделирование в MATLAB

Системные объекты позволяют вам разрабатывать и моделировать свою систему в MATLAB®. Вы используете Системные объекты в MATLAB как показано в этой схеме.

  1. Создайте Отдельные Компоненты — Создают Системные объекты, чтобы использовать в вашей системе. Создайте Отдельные Компоненты. В дополнение к Системным объектам, которым предоставляют Системные Тулбоксы, можно также создать собственные Системные объекты. См. Создание системных объектов.

  2. Сконфигурируйте Компоненты — При необходимости, измените значения свойств объектов, чтобы смоделировать вашу конкретную систему. Вся Система object™ свойства имеет значения по умолчанию, которые можно смочь использовать, не изменяя их. Смотрите Конфигурируют Компоненты.

  3. Соберите Компоненты В Систему — Запись программа MATLAB, которая включает те Системные объекты, соединяя их использующий переменные MATLAB в качестве вводов и выводов, чтобы моделировать вашу систему. Смотрите Соединяющиеся Системные объекты.

  4. Запустите Свою Систему — Выполнение ваша программа. Можно изменить настраиваемые свойства, в то время как система запускается. Смотрите Выполнение Ваша Система и Реконфигурировавшие Объекты.

Создайте отдельные компоненты

Пример в этом разделе показывает, как использовать Системные объекты, которые предопределены в программном обеспечении. Если вы используете функцию, чтобы создать и использовать Системный объект, задайте создание объекта с помощью условного кода. 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