Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Objetos del sistema vs funciones de MATLAB

Objetos de sistema frente a funciones de MATLAB

Muchos objetos del sistema tienen contrapartes de función.MATLAB® Para simples cálculos de una sola vez, utilice funciones.MATLAB Sin embargo, si necesita diseñar y simular un sistema con muchos componentes, utilice objetos del sistema. El uso de objetos del sistema también es adecuado si los cálculos requieren la administración de Estados internos, tienen entradas que cambian con el tiempo o procesan grandes flujos de datos.

La creación de un sistema dinámico con diferentes fases de ejecución y Estados internos que utilicen sólo funciones requeriría una programación compleja.MATLAB Necesitaría código para inicializar el sistema, validar los datos, administrar los Estados internos y restablecer y terminar el sistema. Los objetos del sistema realizan muchas de estas operaciones de gestión automáticamente durante la ejecución. Al combinar objetos del sistema en un programa con otras funciones, puede agilizar el código y mejorar la eficacia.MATLAB

Procesar datos de audio utilizando sólo el código de funciones de MATLAB

En este ejemplo se muestra cómo escribir código de solo función de MATLAB® para leer datos de audio.

El código Lee los datos de audio de un archivo, los filtra y reproduce los datos de audio filtrados. Los datos de audio se leen en fotogramas. Este código produce el mismo resultado que el código de objetos del sistema en el siguiente ejemplo, lo que permite comparar enfoques.

Localice el archivo de audio de origen.

fname = 'speech_dft_8kHz.wav';

Obtenga el número total de muestras y la frecuencia de muestreo del archivo de origen.

audioInfo = audioinfo(fname); maxSamples = audioInfo.TotalSamples; fs = audioInfo.SampleRate;

Defina el filtro que desea utilizar.

b = fir1(160,.15);

Inicializar los Estados de filtro.

z = zeros(1,numel(b)-1); 

Defina la cantidad de datos de audio que se procesan al mismo tiempo e inicialice el índice del bucle while.

frameSize = 1024; nIdx = 1; 

Defina el bucle while para procesar los datos de audio.

 while nIdx <= maxSamples(1)-frameSize+1     audio = audioread(fname,[nIdx nIdx+frameSize-1]);     [y,z] = filter(b,1,audio,z);     sound(y,fs);     nIdx = nIdx+frameSize; end   

El bucle utiliza la indexación explícita y la administración de estado, que puede ser un enfoque tedioso y propenso a errores. Debe tener un conocimiento detallado de los Estados, como, tamaños y tipos de datos. Otro problema con este código de solo MATLAB es que la función de sonido no está diseñada para ejecutarse en tiempo real. El audio resultante es entrecortado y apenas audible.

Procesar datos de audio mediante objetos de sistema

En este ejemplo se muestra cómo escribir código de objetos del sistema para leer datos de audio.

El código utiliza objetos del sistema del software DSP System Toolbox™ para leer datos de audio de un archivo, filtrarlos y, a continuación, reproducir los datos de audio filtrados. Este código produce el mismo resultado que el código de MATLAB® mostrado anteriormente, lo que le permite comparar enfoques.

Localice el archivo de audio de origen.

fname = "speech_dft_8kHz.wav"; 

Defina el para leer el archivo.System object™

audioIn = dsp.AudioFileReader(fname,'OutputDataType','single'); 

Defina la para filtrar los datos.System object

filtLP = dsp.FIRFilter('Numerator',fir1(160,.15)); 

Defina el para reproducir los datos de audio filtrados.System object

audioOut = audioDeviceWriter('SampleRate',audioIn.SampleRate); 

Defina el bucle while para procesar los datos de audio.

while ~isDone(audioIn)     audio = audioIn();    % Read audio source file     y = filtLP(audio);   % Filter the data     audioOut(y);         % Play the filtered data end 

Este código de objetos del sistema evita los problemas presentes en el código de solo MATLAB. Sin necesidad de indización explícita, el objeto de lector de archivos administra los tamaños de marco de datos mientras el filtro administra los Estados. El objeto de escritor de dispositivo de audio reproduce cada fotograma de audio mientras se procesa.