为什么不能一个fft函数输出int数据类型?
13个视图(30天)
显示旧的评论
答案(1)
安迪·巴特利特
2021年6月8日
编辑:安迪·巴特利特
2021年6月8日
MATLAB的内置类型通常用来支持操作产生一个相同类型的输出作为输入。
(主要的例外是标量自由与其他类型和逻辑混合双打也混合在某些情况下)。
世界上类型的豪华数字双和单一,通常是没有缺点都使用相同的输入和输出类型。
但正如沃尔特fft运算表明,均匀使用相同的整数输入和输出不适合需要。
当处理类型,没有豪华的大范围和精度,混合不同类型的输入,输出,状态,临时变量是一个久经考验的方法实现好的数字行为和效率的平衡。
定点类型在MATLAB仿真软件和支持这些类型的函数通常用来支持类型的混合万博1manbetx物。万博1manbetx看看FFT DSP系统作为一个MATLAB工具箱可调用系统提供的对象
dsp.FFT
或者
FFT块
。在它们的文档中,您将看到他们支持定点和提供不同类型的输入,输出,productDataTy万博1manbetxpe AccumulatorDataType。不同的元素可以有不同的字和可伸缩性。
下面的例子显示了dsp。FFT系统对象处理输入整数或定点。
《不扩散核武器条约》= 2 ^ 13;
halfN = npt / 2;
Fs = 800;
t = (0: nPts-1) / Fs;
阵线= linspace (0 f halfN);
x =罪(2 *π* 250 * t) + 0.75 * cos(2 *π* 340 * t) + 0.3 *罪(2 *π* 200 * t + 0.7 *π);
u = x + 3 * randn(大小(x));%噪声信号
u = int16 (4000 * u);
%可以将输入转换为fi喂养dsp.FFT之前
%,但不需要。
% u = fi (u);
ft2 = dsp.FFT;
y2 = ft2 (u);
情节(阵线、abs (y2 (1: halfN)))
宋惠乔
默认情况下,FFT自动选择输出数据类型的对象。
> > numerictype (y2)
ans =
DataTypeMode:定点:二进制扩展
Signedness:签署
字:29
FractionLength: 0
在引擎盖下,dsp。FFT是设计来处理定点对象,而不是内置的MATLAB整数。但对象有一个友好的设计,自动将内置整数输入转换为fi等价的。
如果你遇到一些代码问题处理内置整数,试着做一个转换
= int16 (1234)
b = fi (a)
c = castIntToFi (a)
这两种方法中的任何一个容易内置整数的fi等价转换。
一个=
int16
1234年
b =
1234年
numerictype (1 16 0)
c =
1234年
numerictype (1 16 0)