Contenido principal

Gain

Multiplicar una entrada por una constante

  • Gain block

Bibliotecas:
Simulink / Commonly Used Blocks
Simulink / Math Operations
HDL Coder / Commonly Used Blocks
HDL Coder / HDL Floating Point Operations
HDL Coder / Math Operations

Descripción

El bloque Gain multiplica la entrada por un valor constante, o ganancia. La entrada y la ganancia pueden ser un escalar, un vector o una matriz.

Especifique el valor de ganancia en el parámetro Gain. El parámetro Multiplication permite especificar una multiplicación de matrices o por elemento. Para la multiplicación de matrices, este parámetro también permite indicar el orden de los multiplicandos.

La ganancia se convierte del tipo de datos dobles al tipo de datos especificado en la máscara de bloque sin conexión mediante el redondeo al valor más cercano y la saturación. La entrada y la ganancia se multiplican después y el resultado se convierte al tipo de datos de salida mediante los modos de redondeo y de desbordamiento.

Ejemplos

expandir todo

Abra y simule el modelo denominado SimpleGain.

mdl = "SimpleGain";
open_system(mdl)
sim(mdl);

A Gain block multiples input from a Constant block. A Display block displays the result.

Este modelo representa la ecuación:

2*5=10

El bloque Constant proporciona un valor de constante de 2 al bloque Gain.

El bloque Gain multiplica su entrada por 5.

El bloque Display muestra el resultado de la multiplicación.

Ejemplos ampliados

Puertos

Entrada

expandir todo

El bloque Gain acepta un escalar, un vector o una matriz con valores reales o complejos como entrada. El bloque Gain admite tipos de datos de punto fijo. Si la entrada del bloque Gain es real y la ganancia es compleja, la salida es compleja.

Tipos de datos: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
Soporte de números complejos:

Salida

expandir todo

El bloque Gain produce como salida la entrada multiplicada por un valor de ganancia constante. Cuando la entrada al bloque Gain es real y la ganancia es compleja, la salida es compleja.

Tipos de datos: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
Soporte de números complejos:

Parámetros

expandir todo

Para editar parámetros de bloque de manera interactiva, utilice Property Inspector. En la barra de herramientas de Simulink®, en la pestaña Simulation, en la galería Prepare, seleccione Property Inspector.

Principal

Especifique el valor por el que se multiplica la entrada. La ganancia puede ser un escalar, un vector o una matriz con valores reales o complejos.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: Gain
Valores: '1' (predeterminado) | real or complex-valued scalar, vector, or matrix in quotes

Especifique uno de estos modos de multiplicación:

  • Element-wise(K.*u): cada elemento de la entrada se multiplica por cada elemento de la ganancia. En caso necesario, el bloque realiza expansiones de manera que la entrada y la ganancia tienen las mismas dimensiones.

  • Matrix(K*u): la entrada y la ganancia se multiplican por una matriz con la entrada como segundo operando.

  • Matrix(u*K): la entrada y la ganancia se multiplican por una matriz con la entrada como primer operando.

  • Matrix(K*u) (u vector): la entrada y la ganancia se multiplican matricialmente con la entrada como segundo operando. Este modo es idéntico a Matrix(K*u), salvo por cómo se determinan las dimensiones.

    Supongamos que K es una matriz de m-by-n. Matrix(K*u)(u vector) establece la entrada a un vector de longitud n y la salida en un vector de longitud m. En cambio, Matrix(K*u) usa la propagación para determinar las dimensiones de la entrada y la salida. Para una matriz de ganancia m-by-n, la entrada puede propagarse a una matriz de n-by-q y la salida se convierte en una matriz de m-by-q.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: Multiplication
Valores: 'Element-wise(K.*u)' (predeterminado) | 'Matrix(K*u)' | 'Matrix(u*K)' | 'Matrix(K*u) (u vector)'

Especifique el intervalo de tiempo entre muestreos. Para heredar el tiempo de muestreo, establezca este parámetro en -1. Para obtener más información, consulte Especificar el tiempo de muestreo.

Dependencias

Este parámetro solo es visible si se establece en un valor distinto de -1. Para obtener más información, consulte, Blocks for Which Sample Time Is Not Recommended.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: SampleTime
Valores: "-1" (predeterminado) | scalar or vector in quotes

Signal Attributes

Valor inferior del rango de salida que comprueba el software.

El software usa el mínimo para realizar lo siguiente:

Sugerencias

Output minimum no satura ni recorta la señal de salida real. Use el bloque Saturation en su lugar.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: OutMin
Valores: '[]' (predeterminado) | scalar in quotes

Valor superior del rango de salida que comprueba el software.

El software usa el valor máximo para realizar lo siguiente:

Sugerencias

Output maximum no satura ni recorta la señal de salida real. Use el bloque Saturation en su lugar.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: OutMax
Valores: '[]' (predeterminado) | scalar in quotes

Elija el tipo de datos para la salida. El tipo puede heredarse, especificarse directamente o expresarse como un objeto de tipo de datos, como Simulink.NumericType.

Cuando selecciona una opción heredada, el bloque muestra estos comportamientos:

  • Inherit: Inherit via internal rule: el software elige un tipo de datos para equilibrar la precisión numérica, el rendimiento y el tamaño del código generado, al mismo tiempo que tiene en cuenta las propiedades del hardware objetivo integrado. Si cambia la configuración del objetivo integrado, el tipo de datos seleccionado por la norma interna puede cambiar. Por ejemplo, si el bloque multiplica una entrada de tipo int8 por una ganancia de int16, y ASIC/FPGA está especificado como el tipo de hardware objetivo, el tipo de datos de salida es sfix24. Si Unspecified (assume 32-bit Generic), es decir, un microprocesador genérico de 32 bit se especifica como hardware objetivo, el tipo de datos de salida es int32. Si ninguna de las longitudes de palabras proporcionadas por el microprocesador objetivo puede adecuarse al rango de salida, el software muestra un error en Diagnostic Viewer.

  • Inherit: Keep MSB: el software elige un tipo de datos que mantiene el rango completo de la operación y, luego, reduce la precisión de la salida hasta un tamaño adecuado para el hardware objetivo integrado.

    Sugerencia

    Para un código generado más eficiente, desactive Saturate on integer overflow.

    Esta norma nunca genera desbordamientos.

  • Inherit: Match scaling: el software elige un tipo de datos cuyo escalado coincide con el escalado de los tipos de entrada. Si el rango completo del tipo no encaja en el hardware objetivo integrado, el rango se reduce hasta producir un tipo adecuado para el hardware objetivo integrado. Esta norma puede generar desbordamientos.

    El software no siempre puede optimizar la eficiencia del código y la precisión numérica al mismo tiempo. Si estas normas internas no cumplen con sus necesidades de precisión numérica o rendimiento, use una de las siguientes opciones:

    • Especifique el tipo de datos de salida de manera explícita.

    • Use la opción Inherit: Same as input.

    • Especifique de manera explícita un tipo de datos predeterminado como fixdt(1,32,16) y, luego, use la herramienta de punto fijo para proponer tipos de datos al modelo. Para obtener más información, consulte fxptdlg (Fixed-Point Designer).

    • Para especificar su propia regla de herencia, use Inherit: Inherit via back propagation y un bloque Data Type Propagation. Puede encontrar ejemplos de cómo usar este bloque en el bloque Data Type Propagation Examples de la biblioteca Signal Attributes.

  • Inherit: Inherit via back propagation: usa el tipo de datos del bloque controlador.

  • Inherit: Same as input: usa el tipo de datos de la señal de entrada.

Dependencias

Cuando la entrada es un tipo de datos de punto flotante más pequeño que la precisión simple, el tipo de datos de salida Inherit: Inherit via internal rule depende de los ajustes del parámetro de configuración Inherit floating-point output type smaller than single precision. Los tipos de datos son más pequeños que la precisión simple cuando el número de bits necesarios para codificar el tipo de datos es inferior a los 32 bits necesarios para codificar el tipo de datos de precisión simple. Por ejemplo, half e int16 son más pequeños que la precisión simple.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: OutDataTypeStr
Valores: 'Inherit: Inherit via internal rule' (predeterminado) | 'Inherit: Keep MSB' | 'Inherit: Match scaling' | 'Inherit: Inherit via back propagation' | 'Inherit: Same as input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'

Seleccione este parámetro para evitar que las herramientas de punto fijo anulen el tipo de datos de Output que se especificó en el bloque. Para obtener más información, consulte Use Lock Output Data Type Setting (Fixed-Point Designer).

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: LockScale
Valores: 'off' (predeterminado) | 'on'

Especifique el modo de redondeo para operaciones de punto fijo. Para obtener más información, consulte Rounding Modes (Fixed-Point Designer).

Los parámetros de bloque siempre se redondean al valor representable más cercano. Para controlar el redondeo de los parámetros de bloque, introduzca una expresión mediante una función de redondeo de MATLAB® en el campo de máscara.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: RndMeth
Valores: 'Floor' (predeterminado) | 'Ceiling' | 'Convergent' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'

Especifique si los desbordamientos saturan o ajustan valores.

  • on: los desbordamientos saturan al valor mínimo o máximo que el tipo de datos puede representar.

  • off: los desbordamientos se ajustan al valor adecuado que el tipo de datos puede representar.

Por ejemplo, el valor máximo que el entero de 8 bits int8 con signo puede representar es 127. Cualquier resultado de la operación del bloque mayor que este valor máximo provocará el desbordamiento del entero de 8 bits.

  • Con el parámetro seleccionado, la salida del bloque satura a 127. De forma similar, la salida del bloque satura a un valor de salida mínimo de -128.

  • Con este parámetro desactivado, el software interpreta que el valor que genera el desbordamiento es int8, que puede provocar un resultado no intencionado. Por ejemplo, un resultado del bloque de 130 (binario 1000 0010) expresado como int8, es -126.

Sugerencias

  • Considere la posibilidad de seleccionar este parámetro cuando su modelo tenga un desbordamiento posible y desee una protección explícita de saturación en el código generado.

  • Considere la posibilidad de desactivar este parámetro cuando desee optimizar la eficiencia del código generado. Desactivar este parámetro también ayuda a evitar especificar cómo trata un bloque las señales fuera de rango. Para obtener más información, consulte Troubleshoot Signal Range Errors.

  • Cuando se selecciona este parámetro, la saturación se aplica a cada operación interna del bloque, no solo a la salida o al resultado.

  • Por lo general, el proceso de generación de código puede detectar cuándo el desbordamiento no es posible. En este caso, el generador de código no produce código de saturación.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: SaturateOnIntegerOverflow
Valores: 'off' (predeterminado) | 'on'

Selecciona la categoría de datos que desee especificar.

  • Inherit: reglas de herencia para tipos de datos. Seleccionar Inherit activa un menú secundario o cuadro de texto a la derecha donde se puede seleccionar el modo de herencia.

  • Built in: tipos de datos integrados. Cuando selecciona Built in, se activa un menú secundario o cuadro de texto a la derecha donde se puede seleccionar un tipo de datos integrado.

  • Fixed point: tipos de datos de punto fijo. Cuando selecciona Fixed point, se activan parámetros adicionales que se pueden usar para especificar un tipo de datos de punto fijo.

  • Expression: expresiones que evalúan los tipos de datos. Cuando selecciona Expression, se activa un menú secundario o cuadro de texto a la derecha, donde se puede introducir la expresión.

Para obtener más información, consulte Specify Data Types Using Data Type Assistant.

Dependencias

Para activar este parámetro, haga clic en el botón para mostrar el asistente de tipo de datos .

Seleccione el modo de anulación del tipo de datos para esta señal.

  • Cuando selecciona Inherit, Simulink hereda la configuración de anulación del tipo de datos de su contexto, es decir, del bloque, el objeto Simulink.Signal o el gráfico de Stateflow® en Simulink que está utilizando la señal.

  • Cuando selecciona Off, Simulink ignora la configuración de anulación del tipo de datos de su contexto y usa el tipo de datos de punto fijo especificado para la señal.

Para obtener más información, consulte Specify Data Types Using Data Type Assistant en la documentación de Simulink.

Dependencias

Para activar este parámetro, establezca Mode en Built in o Fixed point.

Sugerencias

La capacidad de desactivar la anulación del tipo de datos para un tipo de datos individual proporciona más control sobre el tipo de datos del modelo cuando aplica la anulación de tipo de datos. Por ejemplo, puede utilizar esta opción para garantizar que el tipo de datos cumplen los requisitos de los bloques descendentes independientemente de la configuración de la anulación del tipo de datos.

Especifique si datos de punto fijo con o sin signo. Los datos con signo pueden representar valores positivos y negativos, pero los datos sin signo solo representan valores positivos.

  • Signed especifica los datos de punto fijo con signo.

  • Unsigned especifica los datos de punto fijo sin signo.

Para obtener más información, consulte Specify Data Types Using Data Type Assistant.

Dependencias

Para activar este parámetro, establezca Mode en Fixed point.

Especifique el tamaño en bits de la palabra que contiene el entero cuantizado. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Mode en Fixed point.

Especifique el método para escalar los datos de punto fijo para evitar condiciones de desbordamiento y reducir los errores de cuantización. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Mode en Fixed point.

Especifique la inclinación para el tipo de datos de punto fijo. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Scaling en Slope and bias.

Especifique el sesgo para el tipo de datos de punto fijo como un número real cualquiera. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Scaling en Slope and bias.

Especifique la longitud de fracción para el tipo de datos de punto fijo como un entero positivo o negativo. Para obtener más información, consulte Specifying a Fixed-Point Data Type.

Dependencias

Para activar este parámetro, establezca Scaling en Binary point.

Atributos de parámetro

Especifique el valor mínimo de ganancia. El valor predeterminado es [] (no especificado). El software usa este valor para realizar lo siguiente:

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: ParamMin
Valores: '[]' (predeterminado) | scalar in quotes

Especifique el valor máximo de ganancia. El valor predeterminado es [] (no especificado). El software usa este valor para realizar lo siguiente:

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: ParamMax
Valores: '[]' (predeterminado) | scalar in quotes

Especifique el tipo de datos del parámetro Gain.

Si se establece Parameter data type en Inherit: Inherit via internal rule, permite al bloque Gain seleccionar un tipo de datos basado en una heurística interna que consulta el valor de ganancia actual y ofrece un tipo de datos de precisión total para representar el valor de ganancia actual. Cuando se actualiza el diagrama, el software deduce un tipo de datos para que encaje el valor de ganancia 3 con una precisión alta y sin pérdida de rango. Por ejemplo, con esta heurística, si el valor de ganancia especificado es 3, el bloque Gain deduce un tipo de datos seleccionado de sfix32_En29. Por consiguiente, este tipo de datos deducido no puede retener valores mayores que 4. Durante la simulación, si ajusta el valor de ganancia a 6, se produce un desbordamiento en el tipo de datos seleccionado y el comportamiento es inesperado.

Cuando ajuste un parámetro con esta configuración de Parameter data type, especifique los parámetros Parameter Minimum y Parameter Maximum. Estas configuraciones indican al software el rango de valores que se desea durante la simulación y permite al software ofrecer un tipo de datos de precisión total con suficiente rango como para permitir un ajuste seguro del valor de ganancia dentro del rango especificado.

Uso programático

Para establecer el valor del parámetro de bloque de forma programática, use la función set_param.

Parámetro: ParamDataTypeStr
Valores: 'Inherit: Inherit via internal rule' (predeterminado) | 'Inherit: Same as input' | 'Inherit: Inherit from 'Gain'' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'

Características del bloque

Tipos de datos

Boolean | double | fixed point | half | integer | single

Paso directo

Señales multidimensionales

Señales de tamaño variable

Detección de cruce por cero

no

Capacidades ampliadas

expandir todo

Generación de código C/C++
Genere código C y C++ mediante Simulink® Coder™.

Generación de código PLC
Genere código de texto estructurado mediante Simulink® PLC Coder™.

Conversión de punto fijo
Diseñe y simule sistemas en punto fijo mediante Fixed-Point Designer™.

Historial de versiones

Introducido antes de R2006a