主要内容

铸造

将变量强制转换为不同的数据类型

描述

实例

b=铸件(A.“喜欢”,P)皈依A.同样numerictype,复杂性(真实或复杂),以及菲马斯P. 如果A.P都是真的吗B也是真实的。否则,B这很复杂。

例子

全部崩溃

定义标量8位整数。

a=int8(5);

创建一个签名fi字长为的对象24和分数长度12.

p = fi([], 1, 24岁,12);

转换A.定点numerictype,复杂性(真实或复杂),以及菲马斯指定的fi对象,P.

b=铸件(a,“喜欢”,p)
b=5 DataTypeMode:定点:二进制点缩放符号性:符号字长:24分位数长度:12

定义一个2乘3的1矩阵。

A=一(2,3);

创建一个签名fi字长为的对象16和分数长度8..

p=fi([],1,16,8);

转换A.与相同的数据类型和复杂性(真实或复杂)P.

B=铸件(A,“喜欢”,p)
B=1 DataTypeMode:定点:二进制点缩放符号性:有符号字长:16分位数长度:8

写一个MATLAB®可以在不更改算法本身的情况下使用不同数据类型运行的算法。若要重用该算法,请将数据类型与算法分开定义。

这种方法允许您通过使用浮点数据类型运行算法来定义基线。然后,您可以使用不同的定点数据类型测试算法,并将定点行为与基线进行比较,而无需对原始MATLAB代码进行任何修改。

编写MATLAB函数,我的滤镜,它接受一个输入参数,T,该结构定义了系数以及输入和输出数据的数据类型。

函数[y,z]=my_过滤器(b,a,x,z,T)%将系数强制转换为系数类型b=铸造(b,“喜欢”,T.coefs);a=铸件(a,“喜欢”,T.coefs);%使用数据类型的零创建输出y = 0(大小(x),“喜欢”,T.data);对于I = 1:length(x) y(I) = b(1)*x(I) + z(1)Z (1) = b(2)*x(i) + Z (2) - a(2) * y(i);Z (2) = b(3)*x(i) - a(3) * y(i);终止终止

编写MATLAB函数,0\u 1\u铸造\u示例,电话我的滤镜使用浮点步长输入和定点步长输入,然后比较结果。

函数0\u 1\u铸造\u示例%使用规范定义过滤器的系数%[b,a]=黄油(2,0.25)B = [0.097631072937818 0.195262145875635 0.097631072937818];A = [1.000000000000000 -0.942809041582063 0.3333333333333];%定义浮点类型T_float。多项式系数=双([]);T_float。data =双([]);%使用带有%浮点数据类型t=0:20;x_浮点数=个(尺寸(t),“喜欢”,T_float.data);属性中使用0初始化状态%浮点数据类型z_float=0(1,2,“喜欢”,T_float.data);%运行浮点算法y_float=my_过滤器(b、a、x_float、z_float、T_float);%定义定点类型T_fixed.coefs=fi([],真,8,6);T_fixed.data=fi([],真,8,6);%使用带有%定点数据类型x_固定=个(尺寸(t),“喜欢”, T_fixed.data);属性中使用0初始化状态%定点数据类型z_固定=零(1,2,“喜欢”, T_fixed.data);%运行定点算法y_fixed=my_过滤器(b、a、x_fixed、z_fixed、T_fixed);%比较结果coder.extrinsic (“clf”,“子地块”,“阴谋”,“传奇”)clf子地块(211)图(t,y_浮动,“合作”,t,y_固定,“kx-”)传奇(“浮点输出”,“定点输出”)头衔(的阶跃响应) subplot(212) plot(t,y_float - double(y_fixed),“rs-”)传奇(“错误”)图(gcf)终止

输入参数

全部崩溃

变量,指定为fi对象或数值变量。

复数支持:是金宝app

原型,指定为fi对象或数字变量。要使用原型指定复杂对象,必须为原型指定一个值。否则,不需要指定值。

复数支持:是金宝app

提示

使用b=铸造(a,'like',p)与算法代码分开指定数据类型的语法允许您:

  • 使用不同的数据类型重用算法代码。

  • 使用不同数据类型的数据类型规范和切换语句保持算法的整洁。

  • 提高算法代码的可读性。

  • 在定点和浮点数据类型之间切换以比较基线。

  • 在不更改算法代码的情况下,在不同的定点设置之间切换。

介绍了R2013a