主要内容

构造fi对象的方法

fi构造函数的类型

您可以创建fi对象使用Fixed-Point Designer™软件以下列任何一种方式:

  • 你可以使用fi构造函数来创建fi对象。

  • 你可以使用你以后构造函数来创建一个新的签名fi对象。

  • 你可以使用ufi构造函数来创建一个新的unsignedfi对象。

  • 你可以用任何fi构造函数复制已存在的fi对象。

要开始,要创建一个fi对象的默认数据类型,值为0:

一个= fi (0)
a = 0 DataTypeMode:定点:二进制点缩放Signedness: Signed WordLength: 16 FractionLength: 15

这个构造函数语法创建一个有符号的fi对象的值为0,字长为16位,分数长为15位。因为你没有指定任何fimath对象属性的fi构造函数,由此产生的fi对象一个没有地方fimath

看到所有的fi你以后,ufi构造函数语法,请参阅各自的参考页。

的显示格式fi对象,请参考定点数据视图

构造fi对象的例子

下面的示例向您展示了几种不同的构造方法fi对象。对于其他人,更多的基本构造的例子fi对象,请参阅以下构造函数参考页面的示例部分:

请注意

fi构造函数创建fi对象使用RoundingMethod最近的和一个OverflowAction饱和.如果你构造一个fi从浮点值,默认值RoundingMethodOverflowAction未使用属性设置。

使用属性名称/属性值对构造一个fi对象

您可以使用属性名称/属性值对进行设置fifimath对象的fi对象:

一个= fi(π,“RoundingMethod”“地板”“OverflowAction”“包装”
a = 3.1415 DataTypeMode:定点:二进制点缩放Signedness: Signed WordLength: 16 FractionLength: 13 RoundingMethod: Floor OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision

您不必指定每一个fimath对象的fi构造函数。的fi对象对所有未指定的对象使用默认值fimath对象属性。

  • 如果您指定至少一个fimath对象的fi构造函数,fi对象具有局部fimath对象。的fi对象对其余未指定的对象使用默认值fimath对象属性。

  • 如果您没有指定任何fimath对象属性的fi对象的构造函数,fi对象使用默认fimath值。

使用数字类型对象构造一个fi对象

你可以用numerictype对象来定义fi对象:

T = numerictype
T = DataTypeMode:定点:二进制点缩放Signedness: Signed WordLength: 16 FractionLength: 15
a = fi(, T)
a = 1.0000 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 15

你也可以用afimath对象与一个numerictype对象来定义fi对象:

F = fimath (“RoundingMethod”“最近的”...“OverflowAction”“饱和”...“ProductMode”“FullPrecision”...“SumMode”“FullPrecision”
F = RoundingMethod: Nearest OverflowAction: Saturate ProductMode: FullPrecision SumMode: FullPrecision
a = fi(pi, T, F)
a = 1.0000 DataTypeMode: Fixed-point: binary point scaling signdness: Signed WordLength: 16 FractionLength: 15 RoundingMethod: Nearest OverflowAction: Saturate ProductMode: FullPrecision SumMode: FullPrecision

请注意

的语法一个= fi(π,T、F)相当于一个= fi(π,F, T).你可以用这两个表述来定义fi对象使用fimath对象和一个numerictype对象。

使用fimath对象构造一个fi对象

您可以创建fi对象使用特定的fimath对象。当你这样做的时候,一个当地人fimath对象被赋给fi对象创建。如果您没有指定任何numerictype对象的字长fi对象默认为16位。分数长度由最佳精度缩放决定:

F = fimath (“RoundingMethod”“最近的”...“OverflowAction”“饱和”...“ProductMode”“FullPrecision”...“SumMode”“FullPrecision”
F = RoundingMethod: Nearest OverflowAction: Saturate ProductMode: FullPrecision SumMode: FullPrecision
F.OverflowAction =“包装”
F = RoundingMethod: Nearest OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision
a = fi(, F)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling signdness: Signed WordLength: 16 FractionLength: 13 RoundingMethod: Nearest OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision

您还可以创建fi对象的使用fimath对象,同时指定各种numerictype属性在创建时:

b = fi(pi, 0, F)
b = 3.1416 DataTypeMode: Fixed-point: binary point scaling signdness: Unsigned WordLength: 16 FractionLength: 14 RoundingMethod: Nearest OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision . b = 3.1416 DataTypeMode: Fixed-point: binary point scaling sign: Unsigned WordLength: 16 FractionLength: 14 RoundingMethod: Nearest OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision
c = fi(pi, 0, 8, F)
c = 3.1406 DataTypeMode:定点:二进制点缩放符号:Unsigned WordLength: 8 FractionLength: 6 RoundingMethod: Nearest OverflowAction: Wrap ProductMode: FullPrecision SumMode: FullPrecision
d = fi(pi, 0, 8, 6, F)
d = 3.1406 DataTypeMode:定点:二进制点缩放signed: Unsigned WordLength: 8 FractionLength: 6 RoundingMethod: Nearest OverflowAction: wrap ProductMode: FullPrecision SumMode: FullPrecision

在GUI中构建fi对象构造函数

当你在MATLAB中处理文件时®,你可以建立你的fi对象的构造函数插入fi构造函数对话框。属性的值和属性fi对象,则可以插入预填充的fi对象构造函数在文件中的特定位置。

例如,要创建一个签名fi对象的值为pi,单词长度为16位,分数长度为13位:

  1. 首页选项卡,文件部分中,点击>脚本打开MATLAB编辑器。

  2. 编辑器选项卡,编辑部分中,点击插入按钮组。点击插入fi……打开插入fi构造函数对话框。

  3. 属性的编辑框和下拉菜单可指定以下属性fi对象:

    • 价值π

    • 数据类型模式定点:二值点缩放

    • Signedness签署

    • 字长16

    • 部分长度13

  4. 插入的fi对象构造函数,将光标放在文件中所需的位置,然后单击好吧插入fi构造函数对话框。点击好吧关闭插入fi构造函数对话框,并自动填充fi文件中的对象构造函数:

确定属性优先级

属性的值来自于上次设置它的时间。例如,创建一个numerictype值为的对象真正的签署属性和的分数长度14

T = numerictype (“签署”,真的,“FractionLength”14)
T = DataTypeMode:定点:二进制点缩放Signedness: Signed WordLength: 16 FractionLength: 14

现在,创建以下内容fi对象,在其中指定numerictype财产签署属性,以便得到fi对象签署:

一个= fi(π,“签署”假的,“numerictype”, T)
a = 1.9999 DataTypeMode:定点:二进制点缩放Signedness: Signed WordLength: 16 FractionLength: 14

对比fi对象中的fi对象。的numerictype属性中指定的之前签署属性,因此得到fi对象是无符号:

b = fi(π,“numerictype”T“签署”假)
b = 3.1416 DataTypeMode:定点:二进制点缩放Signedness: Unsigned WordLength: 16 FractionLength: 14

复制一个fi对象

复制一个fi对象,只需使用赋值:

一个= fi(π)
a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
b =一个
b = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13

创建用于类型表的fi对象

通过将算法变量的数据类型保存在一个单独的类型表中,可以编写一个可重用的MATLAB算法。例如,

函数T = mytypes (dt)开关dt情况下“双”结核病=双([]);T.x =双([]);T.y =双([]);情况下“fixed16”肺结核= fi(15)[], 16日;T.x = fi(15)[], 16日;T.y = fi(14)[], 16日;结束结束

将算法中的变量转换为类型表中的数据类型,如手动定点转换最佳实践

函数[y,z]=myfilter(b,x,z,T)“喜欢”, T.y);N =1:length(x) z(:) = [x(N)];z (1: end-1)];Y (n) = b * z;结束结束

在一个单独的测试文件中,设置输入数据以提供给算法,并指定输入的数据类型。

%测试输入0.25 b = fir1(11日);t = linspace(0, 10 *π,256);x =罪((π/ 16)* t。^ 2);%线性啁啾%将输入T = mytypes (“fixed16”);b =投(b,“喜欢”、肺结核);x =投(x,“喜欢”, T.x);z = 0(大小(b),“喜欢”, T.x);运行%[y, z] = myfilter (b, x, z, T);