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
, 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
v
— Valor
escalar | vector | matriz | arreglo multidimensional
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
s
— Representación de signo
true
o 1
(predeterminado) | false
o 0
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
w
— Longitud de palabra en bits
16 (predeterminado) | entero escalar positivo
Longitud de palabra en bits del objeto fi
, especificada como un entero escalar positivo.
El objeto fi
tiene un límite de longitud de palabra de 65535 bits.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
f
— Longitud de fracción en bits
15 (predeterminado) | entero escalar
Longitud de fracción en bits del valor entero almacenado del objeto fi
, especificado como un entero escalar.
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
slope
— Pendiente
escalar positivo
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
bias
— Sesgo
escalar
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
slopeadjustmentfactor
— Factor de ajuste de la pendiente
escalar mayor o igual que 1
y menor que 2
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
fixedexponent
— Exponente fijo
escalar
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
T
— Propiedades de los tipos numéricos
Objeto numerictype
Propiedades de los tipos numéricos del objeto fi
, especificadas como un objeto numerictype
.
F
— Propiedades matemáticas de punto fijo
Objeto fimath
Propiedades matemáticas de punto fijo del objeto fi
, especificadas como un objeto fimath
.
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
Crear un objeto fi
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
Cree un objeto fi
con escalado de pendiente y sesgo
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
Crear un objeto fi
a partir de un objeto numerictype
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
Crear un objeto fi
con fimath
asociado
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
Crear un objeto fi
a partir de un valor no doble
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 del 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
Especificar los modos de redondeo y desbordamiento en el constructor de objetos fi
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
Establecer la anulación del tipo de datos en el objeto fi
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;
Comportamiento de fi
para -Inf
, Inf
y NaN
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
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
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 R2006aR2021a: No se admiten nombres de propiedad inexactos para objetos fi
, fimath
y numerictype
En 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.
R2020b: Cambio en el comportamiento predeterminado de fi
para -Inf
, Inf
y NaN
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
.
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)