fi
Crear un objeto numérico de punto fijo
Descripción
Para asignar un tipo de datos de punto fijo a un número o variable, cree un objeto fi mediante el constructor fi. Puede especificar atributos numéricos y reglas matemáticas en el constructor o por medio de los objetos numerictype y fimath.
Creación
Sintaxis
Descripción
devuelve un objeto a = fifi con signo y sin valor, con una longitud de palabra de 16 bits y una longitud de fracción de 15 bits.
devuelve un objeto a = fi(v)fi con signo y con valor v, con una longitud de palabra de 16 bits y una longitud de fracción de máxima precisión.
devuelve un objeto a = fi(v,s,w,slopeadjustmentfactor,fixedexponent,bias)fi con valor v, representación de signo s, longitud de palabra w, slopeadjustmentfactor, fixedexponent y bias.
devuelve un objeto a = fi(v,T)fi con valor v y numerictype T.
devuelve un objeto a = fi(___,Name,Value)fi con valores de propiedad especificados por uno o más argumentos de par nombre-valor.
Argumentos de entrada
Valor del objeto fi, especificado como escalar, vector, matriz o arreglo multidimensional.
El valor del objeto fi devuelto es el valor de la entrada v cuantizado al tipo de datos especificado en el constructor fi. Cuando la entrada v es un valor no doble y no se especifica la longitud de palabra o la longitud de fracción, el objeto fi devuelto conserva el numerictype de la entrada. Para ver un ejemplo, consulte Crear un objeto fi a partir de un valor no doble.
Puede especificar los valores no finitos -Inf, Inf y NaN como valor solo si especifica completamente el numerictype del objeto fi. Cuando fi se especifica como un numerictype de punto fijo,
NaNequivale a0.Cuando la propiedad
'OverflowAction'del objetofise establece en'Wrap',-InfeInfse asignan a0.Cuando la propiedad
'OverflowAction'del objetofise establece en'Saturate',Infse asigna al mayor valor representable y-Infse asigna al menor valor representable.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi
Representación de signo del objeto fi, especificado como un 1 (true) o 0 (false) numérico o lógico. Un valor de 1 (true) indica un tipo de datos con signo. Un valor de 0 (false) indica un tipo de datos sin signo.
Tipos de datos: logical
Longitud de palabra en bits del objeto fi, especificada como un entero escalar positivo.
La longitud de palabra debe ser un entero en el rango 1 ≤ w ≤ 65535.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Longitud de fracción en bits del valor entero almacenado del objeto fi, especificado como un entero escalar. La longitud de fracción debe ser un entero en el rango -65535 ≤ f ≤ 65535.
Si no se especifica una longitud de fracción, el objeto fi utiliza automáticamente la longitud de fracción que proporciona la máxima precisión evitando el desbordamiento para el valor, la longitud de palabra y representación de signo especificados.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Pendiente de escalado del objeto fi, especificado como un escalar positivo.
Esta ecuación representa el valor real de un número escalado en base a pendiente y sesgo.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Sesgo de escalado del objeto fi, especificado como un escalar.
Esta ecuación representa el valor real de un número escalado en base a pendiente y sesgo.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Factor de ajuste de la pendiente del objeto fi, especificado como un escalar mayor o igual que 1 y menor que 2.
La siguiente ecuación demuestra la relación entre la pendiente, el exponente fijo y el factor de ajuste de la pendiente.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Exponente fijo del objeto fi, especificado como un escalar.
La siguiente ecuación demuestra la relación entre la pendiente, el exponente fijo y el factor de ajuste de la pendiente.
Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Propiedades de los tipos numéricos del objeto fi, especificadas como un objeto numerictype.
Propiedades matemáticas de punto fijo del objeto fi, especificadas como un objeto fimath.
Si no se especifican propiedades de fimath, el constructor fi usa el redondeo más cercano y satura en desbordamiento para crear el objeto fi independientemente de la configuración de globalfimath. Para ver un ejemplo de este comportamiento, consulte Especificar los modos de redondeo y desbordamiento en el constructor de objetos fi.
Propiedades
El objeto fi tiene tres tipos de propiedades:
Puede establecer estas propiedades al crear un objeto fi. Utilice las propiedades de datos para acceder a los datos de un objeto fi. Las propiedades fimath y numerictype son, por transitividad, también propiedades del objeto fi. Las propiedades fimath determinan las reglas para realizar operaciones aritméticas de punto fijo en objetos fi. El objeto numerictype contiene todos los atributos de escalado y tipo de datos de un objeto de punto fijo.
Ejemplos
Cree un objeto fi con el constructor predeterminado. El constructor devuelve un objeto fi con signo y sin valor, con una longitud de palabra de 16 bits y una longitud de fracción de 15 bits.
a = fi
a =
[]
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 15
Cree un objeto fi con signo y un valor de pi, una longitud de palabra de 16 bits y una longitud de fracción de máxima precisión. La longitud de la fracción se ajusta automáticamente para lograr la máxima precisión posible sin desbordamiento.
a = fi(pi)
a =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
Cree un objeto fi sin signo y con un valor de pi. Cuando se especifica solo el valor y representación de signo del objeto fi, la longitud de palabra es, de forma predeterminada, de 16 bits con la longitud de fracción de máxima precisión.
a = fi(pi,0)
a =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 16
FractionLength: 14
Cree un objeto fi con signo con una longitud de palabra de 8 bits y una longitud de fracción de máxima precisión. En este ejemplo, la longitud de fracción de a es 5 porque se necesitan tres bits para representar la parte entera del valor cuando el tipo de datos es con signo.
a = fi(pi,1,8)
a =
3.1562
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 5
Si el objeto fi no tiene signo, solo se necesitan dos bits para representar la parte entera, lo que deja seis bits fraccionarios.
b = fi(pi,0,8)
b =
3.1406
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 8
FractionLength: 6
Cree un objeto fi con signo con un valor de pi, una longitud de palabra de 8 bits y una longitud de fracción de 3 bits.
a = fi(pi,1,8,3)
a =
3.1250
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 3
Cree un arreglo de objetos fi con una longitud de palabra de 16 bits y una longitud de fracción de 12 bits.
a = fi((magic(3)/10),1,16,12)
a =
0.8000 0.1001 0.6001
0.3000 0.5000 0.7000
0.3999 0.8999 0.2000
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 12
El valor real de un número escalado en base a pendiente y sesgo se representa mediante
.
Para crear un objeto fi que utilice escalado de pendiente y sesgo, incluya los argumentos slope y bias después de la longitud de palabra en el constructor. Por ejemplo, cree un objeto fi con una pendiente de 3 y un sesgo de 2.
a = fi(pi,1,16,3,2)
a =
2
DataTypeMode: Fixed-point: slope and bias scaling
Signedness: Signed
WordLength: 16
Slope: 3
Bias: 2
La propiedad DataTypeMode del objeto fi a es Fixed-point: slope and bias scaling.
También puede especificar el factor de ajuste de la pendiente y el exponente fijo donde
.
Por ejemplo, cree un objeto fi con un factor de ajuste de pendiente de 1.5, un exponente fijo de 1 y un sesgo de 2.
a = fi(pi,1,16,1.5,1,2)
a =
2
DataTypeMode: Fixed-point: slope and bias scaling
Signedness: Signed
WordLength: 16
Slope: 3
Bias: 2
Un objeto numerictype contiene toda la información del tipo de datos de un objeto fi. Las propiedades numerictype también son propiedades de los objetos fi.
Puede crear un objeto fi que utilice todas las propiedades de un objeto numerictype existente especificando el objeto numerictype en el constructor fi.
T = numerictype(0,24,16)
T =
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 24
FractionLength: 16
a = fi(pi,T)
a =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 24
FractionLength: 16
Los atributos aritméticos de un objeto fi se definen mediante un objeto fimath que se adjunta a dicho objeto fi.
Cree un objeto fimath y especifique las propiedades OverflowAction, RoundingMethod y ProductMode.
F = fimath('OverflowAction','Wrap',... 'RoundingMethod','Floor',... 'ProductMode','KeepMSB')
F =
RoundingMethod: Floor
OverflowAction: Wrap
ProductMode: KeepMSB
ProductWordLength: 32
SumMode: FullPrecision
Cree un objeto fi y especifique el objeto fimath F en el constructor.
a = fi(pi,F)
a =
3.1415
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
RoundingMethod: Floor
OverflowAction: Wrap
ProductMode: KeepMSB
ProductWordLength: 32
SumMode: FullPrecision
Utilice la función removefimath para eliminar el objeto fimath asociado y restablecer los valores predeterminados de la configuración matemática.
a = removefimath(a)
a =
3.1415
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
Cuando el argumento de entrada v de un objeto fi no es un doble y no se especifican las propiedades de longitud de palabra o longitud de fracción, el objeto fi devuelto conserva el tipo numérico de la entrada.
Crear un objeto fi a partir de un entero predefinido
Cuando la entrada es un entero predefinido, los atributos de punto fijo coinciden con los atributos del tipo entero.
v1 = uint32(5); a1 = fi(v1)
a1 =
5
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 32
FractionLength: 0
v2 = int8(5); a2 = fi(v2)
a2 =
5
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 0
Crear un objeto fi a partir de un objeto fi
Cuando el valor de entrada es un objeto fi, la salida utiliza la misma longitud de palabra, longitud de fracción y representación de signo que el objeto fi de entrada.
v = fi(pi,1,24,12); a = fi(v)
a =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 24
FractionLength: 12
Crear un objeto fi a partir de un valor lógico
Cuando el valor de entrada es lógico, la propiedad DataTypeMode del objeto fi de salida es Boolean.
v = true; a = fi(v)
a =
1
DataTypeMode: Boolean
Crear un objeto fi a partir de un valor simple
Cuando el valor de entrada es simple, la propiedad DataTypeMode de la salida es Single.
v = single(pi); a = fi(v)
a =
3.1416
DataTypeMode: Single
Puede establecer las propiedades de fimath, como los modos de redondeo y desbordamiento, durante la creación del objeto fi.
a = fi(pi,'RoundingMethod','Floor',... 'OverflowAction','Wrap')
a =
3.1415
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
RoundingMethod: Floor
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecision
Las propiedades RoundingMethod y OverflowAction son propiedades del objeto fimath. Cuando se especifican estas propiedades en el constructor fi, se asocia un objeto fimath local con el objeto fi.
Utilice la función removefimath para eliminar el objeto local fimath y restablecer las propiedades matemáticas a sus valores predeterminados.
a = removefimath(a)
a =
3.1415
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
La creación de un objeto fi sin propiedades establecidas usará los valores predeterminados RoundingMethod y OverflowAction, independientemente de cualquier configuración de globalfimath.
Para observar este comportamiento, especifique globalfimath.
resetglobalfimath globalfimath('RoundingMethod','floor','OverflowAction','wrap')
ans =
RoundingMethod: Floor
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecision
Cree un objeto fi sin configuración fimath en el constructor.
b = fi([3.6 128],1,8,0)
b =
4 127
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 0
El valor resultante de b usa el redondeo Nearest y Saturate como acción de desbordamiento. Si este comportamiento no es adecuado para su aplicación, consulte fi Constructor Does Not Follow globalfimath Rules para encontrar una solución temporal.
Restablezca globalfimath para restaurar los valores predeterminados.
resetglobalfimath;
Estos ejemplos muestran cómo utilizar el ajuste DataTypeOverride del objeto fipref para anular los objetos fi con valores dobles, simples o dobles escalados. El objeto fipref define los atributos de visualización y registro de todos los objetos fi.
Guarde los ajustes de fipref actuales para restaurarlos más adelante.
fp = fipref; initialDTO = fp.DataTypeOverride;
Cree un objeto fi con la configuración predeterminada y la configuración de fipref original.
a = fi(pi)
a =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
Utilice el objeto fipref para activar la anulación del tipo de datos a valores dobles.
fipref('DataTypeOverride','TrueDoubles')
ans =
NumberDisplay: 'RealWorldValue'
NumericTypeDisplay: 'full'
FimathDisplay: 'full'
LoggingMode: 'Off'
DataTypeOverride: 'TrueDoubles'
DataTypeOverrideAppliesTo: 'AllNumericTypes'
Cree un objeto fi sin especificar la propiedad DataTypeOverride para que utilice la configuración de anulación de tipo de datos especificada mediante fipref.
a = fi(pi)
a =
3.1416
DataTypeMode: Double
Cree otro objeto fi y establezca su configuración de DataTypeOverride en off para que ignore la configuración de anulación de tipo de datos del objeto fipref.
b = fi(pi,'DataTypeOverride','Off')
b =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13
Restablezca la configuración fipref guardada al inicio del ejemplo.
fp.DataTypeOverride = initialDTO;
Para utilizar los valores no numéricos -Inf, Inf y NaN como valores de punto fijo con fi, debe especificar completamente el tipo numérico del objeto de punto fijo. No se admite el escalado automático de máxima precisión para estos valores.
Saturar en desbordamiento
Cuando el tipo numérico del objeto fi se especifica para saturar en desbordamiento, Inf se asigna al mayor valor representable del tipo numérico especificado y -Inf se asigna al menor valor representable. NaN equivale a cero.
x = [-inf nan inf]; a = fi(x,1,8,0,'OverflowAction','Saturate') b = fi(x,0,8,0,'OverflowAction','Saturate')
a =
-128 0 127
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 0
RoundingMethod: Nearest
OverflowAction: Saturate
ProductMode: FullPrecision
SumMode: FullPrecision
b =
0 0 255
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 8
FractionLength: 0
RoundingMethod: Nearest
OverflowAction: Saturate
ProductMode: FullPrecision
SumMode: FullPrecision
Envolver en desbordamiento
Cuando el tipo numérico del objeto fi se especifica para envolver en desbordamiento, -Inf, Inf y NaN equivalen a cero.
x = [-inf nan inf]; a = fi(x,1,8,0,'OverflowAction','Wrap') b = fi(x,0,8,0,'OverflowAction','Wrap')
a =
0 0 0
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 0
RoundingMethod: Nearest
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecision
b =
0 0 0
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 8
FractionLength: 0
RoundingMethod: Nearest
OverflowAction: Wrap
ProductMode: FullPrecision
SumMode: FullPrecision
Sugerencias
Utilice el objeto
fiprefpara controlar las preferencias de visualización, registro y anulación del tipo de datos de los objetosfi.
Capacidades ampliadas
Indicaciones y limitaciones de uso:
No se admite la sintaxis del constructor predeterminada sin argumentos de entrada.
Si
numerictypeno se especifica completamente, la entrada afidebe ser una constante, un objetofi, un valor simple o un valor entero predefinido. Si la entrada es un valor doble predefinido, debe ser una constante. Esta limitación permite afiescalar automáticamente la longitud de su fracción basándose en el tipo de datos conocido de la entrada.Todas las propiedades relacionadas con el tipo de datos deben ser constantes para la generación de código.
La información del objeto
numerictypedebe estar disponible para las entradas de punto no fijo de Simulink®.
Generación de código HDL
Genere código VHDL, Verilog y SystemVerilog para diseños FPGA y ASIC mediante HDL Coder™.
Historial de versiones
Introducido antes de R2006aEn versiones anteriores, los nombres de propiedad inexactos de los objetos fi, fimath y numerictype generaban una advertencia. A partir de la versión R2021a, no se admiten nombres de propiedad inexactos. En su lugar, utilice nombres de propiedad exactos.
En versiones anteriores, fi devolvía un error cuando se pasaban los valores de entrada no finitos -Inf, Inf o NaN. Ahora, fi trata estas entradas del mismo modo que MATLAB® y Simulink tratan -Inf, Inf y NaN en el caso de los tipos de datos enteros.
Cuando fi se especifica como un tipo numérico de punto fijo,
NaNequivale a0.Cuando la propiedad
'OverflowAction'del objetofise establece en'Wrap',-InfeInfse asignan a0.Cuando la propiedad
'OverflowAction'del objetofise establece en'Saturate',Infse asigna al mayor valor representable y-Infse asigna al menor valor representable.
Para ver un ejemplo de este comportamiento, consulte Comportamiento de fi para -Inf, Inf y NaN.
Nota
No se admite el escalado de máxima precisión para valores de entrada de -Inf, Inf o NaN.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)