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.


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.

See Also

Was this topic helpful?