Main Content


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 coefficients as h, but whose arithmetic property is set to double to use double-precision arithmetic for filtering. double(h) is not the same as the reffilter(h) function:

  • hd, the filter returned by double has the quantized coefficients of h represented in double-precision floating-point format

  • The reference filter returned by reffilter has 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 double to create a filter hd that operates in double-precision but uses the quantized filter coefficients.


collapse all

Construct a Lowpass Filter

h = dfilt.dffir(firgr(27,[0 .4 .6 1],... 
[1 1 0 0]));

Set h to use fixed-point arithmetic to filter. Quantize the coefficients.

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(:));

Fixed-point output.

y = filter(h,x);

Floating-point output.

yd = filter(hd,x);

Compare the Fixed-point output with Floating-point output

FixedFloatNormDiff = 2.1234e-05
Introduced in R2011a