Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Implementar funciones de MATLAB en Simulink con bloques MATLAB Function

Los bloques MATLAB Function permiten definir funciones personalizadas en modelos de Simulink® utilizando el código de MATLAB®. Utilice estos bloques cuando:

  • Una función existente de MATLAB modela una funcionalidad personalizada, o resulta fácil crear una función de ese tipo.

  • Su modelo requiere una funcionalidad personalizada que no se ha capturado o no se puede capturar en el lenguaje gráfico de Simulink.

  • Resulta más fácil modelar una funcionalidad personalizada utilizando una función de MATLAB que un diagrama de bloques de Simulink.

  • La funcionalidad personalizada que desea modelar no incluye estados dinámicos continuos o discretos. Para modelar estados dinámicos, utilice las funciones S. Consulte Crear bloques con las funciones S de MATLAB.

Calcular la desviación media y estándar con un bloque MATLAB Function

Este ejemplo empieza con un modelo que incluye un bloque MATLAB Function y explica cómo personalizar el bloque a fin de calcular la desviación media y estándar para un vector de valores. Abra el modelo call_stats_block1 para ver los resultados. El modelo incluye un bloque MATLAB Function vacío y los bloques necesarios para el ejemplo.

The starting model. The model contains a MATLAB Function block in the center, a Constant block that has a vector with four values to the left, and two Display blocks to the right. The blocks are not connected.

Programar el bloque MATLAB Function

Programe el bloque para calcular la desviación media y estándar para un vector de valores. Para abrir MATLAB Function Block Editor, haga doble clic en el bloque MATLAB Function. En MATLAB Function Block Editor aparece una función predeterminada con dos variables: un argumento de entrada y un argumento de salida.

This image shows the MATLAB Function Block Editor after it has been opened from the call_stats_block1 model. It includes a default function.

Defina las entradas y las salidas de la función editando la instrucción de declaración de función:

function [mean, stdev] = stats(vals)

Esta instrucción define una función denominada stats con tres variables. La instrucción define un argumento de entrada, vals, y dos argumentos de salida, mean y stdev.

En una nueva línea después de la instrucción de declaración de función, elimine el código existente y añada el siguiente:

% Calculates a statistical mean and a standard
% deviation for the values in vals.

len = length(vals);
mean = avg(vals,len);
stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len);
plot(vals,"-+");

function mean = avg(array,size)
mean = sum(array)/size;

El código final tendrá este aspecto:

The MATLAB Function Block Editor showing the final version of the code. It includes the code from the previous steps.

Salga del bloque. El bloque actualiza los nombres de los puertos. Las salidas mean y stdev de la función se corresponden con los puertos de salida mean y stdev del bloque, y la entrada vals de la función se corresponde con el puerto de entrada vals del bloque.

This shows the outline of the block without connections between the blocks.

Complete las conexiones con el bloque MATLAB Function.

This shows the connected signals between the blocks established in the previous image.

Guarde el modelo. Para ver la versión completa de este modelo, abra el modelo call_stats_block2.

Comprobar las propiedades de variables de bloques MATLAB Function

Puede comprobar y gestionar las propiedades para las variables de los bloques MATLAB Function. En este ejemplo, verifique que el argumento de entrada vals hereda sus propiedades de tipo y tamaño. Haga doble clic en el bloque MATLAB Function. Abra el panel Symbols y Property Inspector. En la pestaña Function, haga clic en Edit Data.

The Function tab in the Simulink Editor while the MATLAB Function block Editor is open. The Edit Data button on the left is enclosed in a red box.

El panel Symbols muestra los nombres de las variables en la columna Name. La columna Type determina la asignación de los puertos de los argumentos de las funciones y dónde aparece en la instrucción de declaración de función. En este ejemplo, vals se asigna a un puerto de entrada. mean y stdev se asignan a puertos de salida. Si cambia la entrada Type de cualquiera de las variables, la instrucción de declaración de función también cambia.

Compruebe las propiedades de vals. En el panel Symbols, haga clic en la fila de vals. Property Inspector se actualiza para mostrar las propiedades de vals. La propiedad Scope coincide con la columna Type.

The Property Inspector and the Symbols pane. The vals input variable is selected, and the Property Inspector displays the variable properties.

Para obtener más información sobre cómo crear variables en el bloque MATLAB Function y establecer propiedades, consulte Create and Define MATLAB Function Block Variables.

Simular el modelo

En Simulink, haga clic en Run para simular el modelo. El modelo genera los datos de la función como salida para los dos bloques Display.

The Display blocks show the simulation results of the model. The first Display block shows 3.5 and the second shows 1.118.

El bloque también representa los datos de entrada en una ventana separada.

A plot of the input values and a line drawn through the values. The line is blue.

Consulte también

| |

Temas

Sitios web externos