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,
NaN
equivale a0
.Cuando la propiedad
'OverflowAction'
del objetofi
se establece en'Wrap'
,-Inf
eInf
se asignan a0
.Cuando la propiedad
'OverflowAction'
del objetofi
se establece en'Saturate'
,Inf
se asigna al mayor valor representable y-Inf
se 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
fipref
para 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
numerictype
no se especifica completamente, la entrada afi
debe 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 afi
escalar 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
numerictype
debe 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,
NaN
equivale a0
.Cuando la propiedad
'OverflowAction'
del objetofi
se establece en'Wrap'
,-Inf
eInf
se asignan a0
.Cuando la propiedad
'OverflowAction'
del objetofi
se establece en'Saturate'
,Inf
se asigna al mayor valor representable y-Inf
se 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)