Documentation

# double

Cast fixed-point filter to use double-precision arithmetic

## Syntax

```hd = double(h) ```

## Description

`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.

## Examples

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=norm(yd-double(y),inf)`
```FixedFloatNormDiff = 2.1234e-05 ```

Watch now