Cast fixed-point filter to use double-precision arithmetic
hd = double(h)
hd = double(h) returns
a new filter
hd that has the same structure and
h, but whose arithmetic property
is set to
double to use double-precision arithmetic
double(h) is not the same as the
hd, the filter returned by
the quantized coefficients of
h represented in
double-precision floating-point format
The reference filter returned by
double-precision, floating-point coefficients that have not been quantized.
You might find
double(h) useful to isolate
the effects of quantizing the coefficients of a filter by using
create a filter
hd that operates in double-precision
but uses the quantized filter coefficients.
Use the same filter, once with fixed-point arithmetic and once with floating-point, to compare fixed-point filtering with double-precision floating-point filtering.
h = dfilt.dffir(firgr(27,[0 .4 .6 1],... [1 1 0 0])); % Lowpass filter. % Set h to use fixed-point arithmetic to filter. % Quantize the coeffs. h.arithmetic = 'fixed'; % Cast h to double-precision hd = double(h); % Set up an input signal. n = 0:99; x = sin(0.7*pi*n(:)); y = filter(h,x); % Fixed-point output. yd = filter(hd,x); % Floating-point output. FixedFloatNormDiff=norm(yd-double(y),inf);