Main Content

Especificar el tamaño de los datos de Stateflow

En un gráfico de Stateflow® de un modelo de Simulink®, puede especificar el tamaño de un objeto de datos:

  • Estableciendo la propiedad Size, como se describe en Set Data Properties. Para obtener más información, consulte Size.

  • Estableciendo la propiedad Props.Array.Size a través de la API de Stateflow. Para obtener más información, consulte Stateflow.Data.

Utilice uno de estos métodos para especificar el tamaño:

  • Heredar el tamaño de una señal de Simulink o de su definición en el gráfico de Stateflow.

  • Introducir un valor numérico.

  • Introducir una expresión de MATLAB®.

La admisión de cada uno de los métodos para especificar el tamaño depende del ámbito de los datos.

Ámbito de los datosMétodo para especificar el tamaño de los datos
Heredar el tamañoUtilizar valores numéricosUtilizar expresiones de MATLAB
LocalSolo en gráficos que utilizan MATLAB como lenguaje de acción
ConstanteNo
Parámetro
Entrada
Salida
Memoria de almacenamiento de datosNoNo

Heredar el tamaño de los datos

Para configurar que un objeto de datos de Stateflow herede el tamaño de la señal de Simulink correspondiente o de su definición en el gráfico, especifique un tamaño de –1. Después de simular o construir el modelo, puede encontrar el tamaño heredado de los datos en Model Explorer, en la columna CompiledSize.

Nota

Los gráficos no pueden heredar los tamaños de los datos de señales basadas en tramas de Simulink. Para obtener más información, consulte Sample- and Frame-Based Concepts (DSP System Toolbox).

Especificar el tamaño de los datos utilizando valores numéricos

Cuando especifique el tamaño de los datos introduciendo un valor numérico, siga las directrices siguientes:

  • Para especificar un escalar, introduzca 1 o deje el campo vacío.

  • Para especificar un vector columna de n por 1, introduzca n.

  • Para especificar un vector fila de 1 por n, introduzca [1 n].

  • Para especificar una matriz de n por m, introduzca [n m], donde m y n son mayores que 1.

  • Para especificar un arreglo de n dimensiones, introduzca [d1 d2dn], donde di es el tamaño de la i-ésima dimensión.

En gráficos que utilizan C como lenguaje de acción, los vectores de Stateflow de una dimensión son compatibles con los vectores fila o columna de Simulink del mismo tamaño. Por ejemplo, un dato de entrada de Stateflow de tamaño 3 es compatible con un vector fila de tamaño [1 3] o con un vector columna de tamaño [3 1] de Simulink.

Especificar el tamaño de los datos utilizando expresiones

Puede especificar el tamaño de los datos introduciendo una expresión de MATLAB que se evalúe como una de las especificaciones de tamaño descritas en Especificar el tamaño de los datos utilizando valores numéricos. Estas directrices también son aplicables:

  • Las expresiones pueden contener una mezcla de valores numéricos, constantes, parámetros, variables, operaciones aritméticas y llamadas a funciones de MATLAB.

  • Las expresiones que especifican el tamaño de una dimensión deben evaluarse como un valor entero positivo.

  • Las expresiones solo pueden combinar valores compatibles. Por ejemplo, los enteros solo se pueden combinar con otros enteros del mismo tipo o con dobles escalares.

  • Si la expresión contiene un valor enumerado, debe incluir el prefijo de tipo a fin de que sean congruentes con las convenciones de nomenclatura de MATLAB. Por ejemplo, Colors.Red es válido, pero Red no lo es. Para obtener más información, consulte Notation for Enumerated Values.

  • No se puede utilizar una expresión de MATLAB para:

    • Especificar el tamaño heredado de los datos. No utilice expresiones que se evalúen como -1.

    • Especificar el tamaño de los datos de entrada de Stateflow que acepten datos basados en tramas de Simulink. Para obtener más información, consulte Sample- and Frame-Based Concepts (DSP System Toolbox).

Ejemplos de expresiones de tamaño de datos válidas

Estos ejemplos son expresiones de MATLAB válidas para especificar el tamaño de los datos del gráfico:

  • K+3, donde K es una constante o parámetro de Stateflow en el nivel de gráfico.

  • N/2, donde N es una variable en el área de trabajo base de MATLAB.

  • [P Q], donde P y Q son parámetros de Simulink. Los gráficos que utilizan C como lenguaje de acción propagan estas dimensiones simbólicas en todo el modelo. Consulte Propagar dimensiones simbólicas de los datos de Stateflow.

  • 2*Colors.Red, donde Red es un valor enumerado de tipo Colors.

  • size(u), donde u es una variable en el nivel de gráfico. La función size permite especificar el tamaño de un objeto de datos en función del tamaño de otro objeto de datos. Este tipo de expresión es útil en un gráfico de biblioteca que se reutiliza con datos de tamaños diferentes. En otras situaciones, puede mejorar la claridad del gráfico evitando la función size y especificando el tamaño de los datos directamente.

  • floor((a*b)/c), donde a y c son escalares de tipo int16 y b es un escalar de tipo double.

  • [fi(2,1,16,2) fi(4,1,16,2)]. Esta expresión especifica un tamaño de datos de [2 4] llamando a la función fi (Fixed-Point Designer). Esta función devuelve números con signo de punto fijo con una longitud de palabra de 16 y una longitud de fracción de 2.

Evitar las variables que puedan provocar conflictos de nombres

Cuando un modelo contiene múltiples variables con nombres idénticos, se utiliza la variable con la mayor prioridad para especificar el tamaño.

PrioridadVariable
1Parámetro de máscara
2Variable del área de trabajo del modelo
3Variable del área de trabajo base de MATLAB
4Datos de Stateflow

Para evitar confusiones, no especifique el tamaño de los datos utilizando un nombre de variable que defina en varios niveles del modelo.

Propagar dimensiones simbólicas de los datos de Stateflow

Cuando selecciona el parámetro de configuración Allow symbolic dimension specification del modelo, los gráficos que utilizan C como lenguaje de acción pueden propagar las dimensiones simbólicas de los datos de Stateflow en todo el modelo. Si tiene Embedded Coder®, las dimensiones simbólicas van en el código generado para objetivos ERT. Especifique el tamaño de las dimensiones simbólicas utilizando parámetros de Simulink con una de estas clases de almacenamiento:

  • Define o ImportedDefine con un archivo de encabezado especificado

  • CompilerFlag

  • Una clase de almacenamiento personalizada definida por el usuario que defina los datos como una macro en un archivo de encabezado especificado

Para obtener más información, consulte Allow symbolic dimension specification (Simulink) y Implement Symbolic Dimensions for Array Sizes in Generated Code (Embedded Coder).

Los gráficos de Stateflow que utilizan MATLAB como lenguaje de acción no admiten la propagación de dimensiones simbólicas. Para especificar el tamaño de los datos utilizando parámetros de Simulink, desactive la casilla Allow symbolic dimension specification.

Consulte también

(Fixed-Point Designer) |

Temas relacionados