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.
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.
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:
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.
Complete las conexiones con el bloque MATLAB Function.
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.
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.
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.
El bloque también representa los datos de entrada en una ventana separada.
Consulte también
MATLAB Function | MATLAB Function Block Editor | add_block
Temas
- Comparison of Custom Block Functionality
- Call MATLAB Function Files in MATLAB Function Blocks
- Configure MATLAB Function Blocks Programmatically