Main Content

Filter input signal in frequency domain

The `dsp.FrequencyDomainFIRFilter`

System object™ implements frequency-domain, fast Fourier transform (FFT)-based filtering to
filter a streaming input signal. In the time domain, the filtering operation involves a
convolution between the input and the impulse response of the finite impulse response (FIR)
filter. In the frequency domain, the filtering operation involves the multiplication of the
Fourier transform of the input and the Fourier transform of the impulse response. The
frequency-domain filtering is efficient when the impulse response is very long. You can
specify the filter coefficients directly in the frequency domain by setting
`NumeratorDomain`

to `'Frequency'`

.

This object uses the overlap-save and overlap-add methods to perform the frequency-domain
filtering. For filters with a long impulse response length, the latency inherent to these two
methods can be significant. To mitigate this latency, the
`dsp.FrequencyDomainFIRFilter`

object partitions the impulse response into
shorter blocks and implements the overlap-save and overlap-add methods on these shorter
blocks. To partition the impulse response, set the PartitionForReducedLatency property to
`true`

. For more details on these two methods and on reducing latency
through impulse response partitioning, see Algorithms.

To filter the input signal in the frequency domain:

Create the

`dsp.FrequencyDomainFIRFilter`

object and set its properties.Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

creates a
frequency domain FIR filter System object that filters each channel of the input signal independently over time in the
frequency domain using the overlap-save or overlap-add method.`fdf`

= dsp.FrequencyDomainFIRFilter

creates a frequency domain FIR filter object with the Numerator property set to
`fdf`

= dsp.FrequencyDomainFIRFilter(num)`num`

.

```
dsp.FrequencyDomainFIRFilter(fir1(400,2 * 2000 /
8000));
```

creates a frequency domain FIR filter System object with each specified property set to the specified value. Enclose each
property name in single quotes. You can use this syntax with any previous input argument
combinations.`fdf`

= dsp.FrequencyDomainFIRFilter(`Name,Value`

)

`dsp.FrequencyDomainFIRFilter('Method','Overlap-add');`

To use an object function, specify the
System object as the first input argument. For
example, to release system resources of a System object named `obj`

, use
this syntax:

release(obj)

[1] Stockham, T. G., Jr. "High Speed
Convolution and Correlation." *Proceedings of the 1966 Spring Joint Computer
Conference, AFIPS,* Vol 28, 1966, pp. 229–233.