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.

Diseño de sistemas en Matlab usando objetos del sistema

Diseño y simulación de sistemas en Matlab

Los objetos del sistema le permiten diseñar y simular su sistema en MATLAB®. Los objetos del sistema se utilizan en MATLAB como se muestra en este diagrama.

  1. Crear componentes individuales: Permite crear los objetos del sistema que se usarán en el sistema. Crear componentes individuales. Además de los objetos del sistema proporcionados con los cuadros de herramientas del sistema, también puede crear sus propios objetos del sistema. Véase Create System Objects.

  2. Configurar componentes — Si es necesario, cambie los valores de propiedad de los objetos para modelar su sistema particular. Todas las propiedades System object™ tienen valores predeterminados que puede utilizar sin cambiarlos. Véase Configurar componentes.

  3. Ensamble los componentes en el sistema — Escribe un programa MATLAB que incluya esos objetos del sistema, conectándolos usando variables MATLAB como entradas y salidas para simular tu sistema. Véase Conexión de objetos del sistema.

  4. Ejecute su sistema — Ejecuta tu programa. Puede cambiar las propiedades sintonizables mientras el sistema se está ejecutando. Vea Ejecute su sistema y Reconfigurar objetos.

Crear componentes individuales

El ejemplo de esta sección muestra cómo utilizar los objetos del sistema predefinidos en el software. Si utiliza una función para crear y utilizar un System object, especifique la creación de objetos mediante código condicional. La condicionalidad de la creación evita errores si se llama a esa función dentro de un bucle. También puede crear sus propios objetos de sistema, consulte Create System Objects.

En esta sección se muestra cómo configurar el sistema mediante componentes predefinidos de DSP System Toolbox™ y Audio System Toolbox™:

  • dsp.AudioFileReader — Lee el archivo de datos de audio

  • dsp.FIRFilter — Filtra los datos de audio

  • audioDeviceWriter — Reproducir los datos de audio filtrados

En primer lugar, cree los objetos de componente, utilizando la configuración de propiedad predeterminada.

audioIn = dsp.AudioFileReader; filtLP = dsp.FIRFilter; audioOut = audioDeviceWriter; 

Configurar componentes

Cuándo configurar componentes

Si no ha establecido las propiedades de un objeto cuando la creó y no desea utilizar valores predeterminados, debe establecer explícitamente esas propiedades. Algunas propiedades le permiten cambiar sus valores mientras el sistema se está ejecutando. Consulte Reconfigurar objetos para obtener información.

La mayoría de las propiedades son independientes entre sí. Sin embargo, algunas propiedades System object habilitan o deshabilitan otra propiedad o limitan los valores de otra propiedad. Para evitar errores o advertencias, debe establecer la propiedad de control antes de establecer la propiedad dependiente.

Mostrar valores de propiedad de componentes

Para mostrar los valores de propiedad actuales de un objeto, escriba el nombre del identificador del objeto en la línea de comandos (como audioIn). Para mostrar el valor de una propiedad específica, escriba objecthandle.propertyname (como audioIn.FileName).

Configurar valores de propiedad de componentes

En esta sección se muestra cómo configurar los componentes del sistema estableciendo las propiedades de los objetos de componente.

Utilice este procedimiento si ha creado sus componentes por separado de configurarlos. También puede crear y configurar sus componentes al mismo tiempo, como se describe en un ejemplo posterior.

Para el objeto del lector de archivos, especifique el archivo que desea leer y defina el tipo de datos de salida.

Para el objeto Filter, especifique los coeficientes del numerador del filtro mediante la función FIR1, que especifica el orden de filtrado de paso bajo y la frecuencia de corte.

Para el objeto Writer de dispositivos de audio, especifique la velocidad de muestreo. En este caso, utilice la misma frecuencia de muestreo que los datos de entrada.

audioIn.Filename = "speech_dft_8kHz.wav"; audioIn.OutputDataType = "single"; filtLP.Numerator = fir1(160,.15); audioOut.SampleRate = audioIn.SampleRate;

Crear y configurar componentes al mismo tiempo

En este ejemplo se muestra cómo crear sus componentes System object y configurar las propiedades deseadas al mismo tiempo. Especifique cada propiedad con un par de argumentos ' name ' (valor).

Cree el objeto de lector de archivos, especifique el archivo que desee leer y defina el tipo de datos de salida.

audioIn = dsp.AudioFileReader("speech_dft_8kHz.wav",...                               'OutputDataType',"single"); 

Cree el objeto Filter y especifique el numerador del filtro mediante la función FIR1. Especifique el orden de filtrado de paso bajo y la frecuencia de corte de la función FIR1.

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

Cree el objeto del reproductor de audio y defina la frecuencia de muestreo en la misma velocidad que los datos de entrada.

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

Ensamble los componentes en el sistema

Conexión de objetos del sistema

Una vez que haya determinado los componentes que necesita y haya creado y configurado los objetos del sistema, Monte su sistema. Utilice los objetos del sistema como otras variables MATLAB e incluyalos en el código MATLAB. Puede pasar variables MATLAB dentro y fuera de los objetos del sistema.

La principal diferencia entre el uso de objetos de sistema y el uso de funciones es que los objetos del sistema utilizan un proceso de dos pasos. Primero se crea el objeto y se establecen sus parámetros y, a continuación, se ejecuta el objeto. Al ejecutar el objeto se inicializa y controla el flujo de datos y la administración del estado del sistema. Normalmente, se llama a un System object dentro de un bucle de código.

Se utiliza la salida de un objeto como la entrada a otro objeto. Para algunos objetos del sistema, puede utilizar propiedades de esos objetos para cambiar el número de entradas o salidas. Para comprobar que el número adecuado de entradas y salidas se está utilizando, puede utilizar getNumInputs y getNumOutputs en cualquier System object. Para obtener información sobre todas las funciones de System object disponibles, consulte Funciones de objeto de sistema.

Conectar componentes en un sistema

Esta sección muestra cómo conectar los componentes juntos para leer, filtrar y reproducir un archivo de datos de audio. El bucle while utiliza la función isDone para leer todo el archivo.

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

Ejecute su sistema

Ejecute el código escribiendo directamente en la línea de comandos o ejecutando un archivo que contenga el programa. Cuando ejecuta el código para el sistema, los datos se procesan a través de los objetos.

Lo que no puede cambiar mientras el sistema se está ejecutando

La primera llamada a un System object inicializa y ejecuta el objeto. Cuando un System object ha empezado a procesar datos, no puede cambiar propiedades no sintonizables.

Dependiendo del objeto del sistema, también se pueden restringir las especificaciones adicionales:

  • Tamaño de la entrada

  • Complejidad de entrada

  • Tipo de datos de entrada

  • Tipos de datos de propiedades ajustables

  • Tipos de datos de estado discretos

Si el autor del objeto de sistema ha restringido estas especificaciones, obtendrá un error si intenta cambiarlos mientras el objeto del sistema está en uso.

Reconfigurar objetos

Cambiar propiedades

Cuando un System object ha iniciado el procesamiento de datos, no puede cambiar las propiedades de no sintonizable. Puede utilizar isLocked en cualquier System object para comprobar si el objeto está procesando datos. Cuando se completa el procesamiento, puede utilizar la función release para liberar recursos y permitir cambios en propiedades no sintonizables.

Algunas propiedades de objeto son sintonizable, lo que le permite cambiarlos incluso si el objeto está en uso. La mayoría de las propiedades System object no son sintonizables. Consulte la página de referencia del objeto para determinar si una propiedad individual es Tunable.

Cambiar la complejidad de entrada, las dimensiones o el tipo de datos

Durante el uso de objetos, después de haber llamado al algoritmo, algunos objetos del sistema no permiten cambios en la complejidad de la entrada, el tamaño o el tipo de datos. Si el objeto del sistema restringe estas especificaciones, puede llamar a release para cambiar estas especificaciones. Llamar a release también restablece otros aspectos del objeto del sistema, como Estados y Estados discretos.

Cambiar una propiedad ajustable en el sistema

En este ejemplo se muestra cómo cambiar el tipo de filtro a un filtro de paso alto a medida que se ejecuta el código modificando la propiedad Numerator del objeto Filter. El cambio tiene efecto la próxima vez que se llame al objeto.

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