Implementar funciones de MATLAB en Simulink con bloques MATLAB Function
Los bloques MATLAB Function permiten definir funciones personalizadas en modelos de Simulink® utilizando el lenguaje de MATLAB®. Utilice estos bloques cuando:
Tiene una función existente de MATLAB que 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 utilizando 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 le guía para personalizar el bloque a fin de calcular la desviación media y estándar para un vector de valores.
Abrir el modelo
El modelo call_stats_block1
incluye un bloque MATLAB Function vacío y los bloques que necesita para el ejemplo. Abra el modelo.
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
ystdev
.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
ystdev
de la función se corresponden con los puertos de salida mean y stdev del bloque, y la entradavals
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 como
call_stats_block2
.
Comprobar las propiedades para las variables de un bloque 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
ystdev
se asignan a puertos de salida. Si cambia la entrada Type para cualquier variable, 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 devals
. Property Inspector se actualiza para mostrar las propiedades devals
. 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 .
Simular el modelo
En Simulink, haga clic en Run para simular el modelo. El modelo produce datos de la función como salida para los dos bloques Display.
El bloque también representa los datos en una ventana separada.
Consulte también
MATLAB Function | MATLAB Function Block Editor | add_block
Temas relacionados
- Specify MATLAB Function Block Properties
- Comparison of Custom Block Functionality
- Call MATLAB Function Files in MATLAB Function Blocks
- Configure MATLAB Function Blocks Programmatically