---
title: "FrequencySamplingFilterKernel"
language: "en"
type: "Symbol"
summary: "FrequencySamplingFilterKernel[{a1, ..., ak}] creates a finite impulse response (FIR) filter kernel using a frequency sampling method from amplitude values ai. FrequencySamplingFilterKernel[{a1, ..., ak}, m] creates an FIR filter kernel of type m."
keywords: 
- frequency sampling filter
- digital filter
- kernel
- FIR kernel
- FIR
- finite impluse response
- fir2
canonical_url: "https://reference.wolfram.com/language/ref/FrequencySamplingFilterKernel.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Signal Filtering & Filter Design"
    link: "https://reference.wolfram.com/language/guide/SignalFilteringAndFilterDesign.en.md"
related_functions: 
  - 
    title: "LeastSquaresFilterKernel"
    link: "https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.en.md"
  - 
    title: "EquirippleFilterKernel"
    link: "https://reference.wolfram.com/language/ref/EquirippleFilterKernel.en.md"
  - 
    title: "ListConvolve"
    link: "https://reference.wolfram.com/language/ref/ListConvolve.en.md"
  - 
    title: "InverseFourierSequenceTransform"
    link: "https://reference.wolfram.com/language/ref/InverseFourierSequenceTransform.en.md"
  - 
    title: "ListFourierSequenceTransform"
    link: "https://reference.wolfram.com/language/ref/ListFourierSequenceTransform.en.md"
---
# FrequencySamplingFilterKernel

FrequencySamplingFilterKernel[{a1, …, ak}] creates a finite impulse response (FIR) filter kernel using a frequency sampling method from amplitude values ai.

FrequencySamplingFilterKernel[{a1, …, ak}, m] creates an FIR filter kernel of type m.

## Details and Options

* Possible types ``m`` for FIR filters created for a list ``{a1, a2, …, ak}`` of amplitudes are:

[image]

* The default type is $1$.

* The frequency sampling method uniformly samples the frequency domain from 0 to $\pi$.

* ``FrequencySamplingFilterKernel`` by default uses a sampling of the frequency domain at integer multiples of $2 \pi /n$, where $n$ is the length of the filter. With ``"Shifted" -> True``, the frequencies are shifted from 0 by $\pi /n$. »

* Amplitude values should be non-negative. Typically, values ``ai = 0`` specify a stopband, and values ``ai = 1`` specify a passband.

* The kernel ``ker`` returned by ``FrequencySamplingFilterKernel`` can be used in ``ListConvolve[ker, data]`` to apply the filter to ``data``.

* The following options can be given:

|                  |                  |                                              |
| ---------------- | ---------------- | -------------------------------------------- |
| "Shifted"        | False            | whether the first frequency is offset from 0 |
| WorkingPrecision | MachinePrecision | precision to use in internal computations    |

---

## Examples (12)

### Basic Examples (1)

A symmetric odd-length FIR lowpass kernel:

```wl
In[1]:= a = FrequencySamplingFilterKernel[{1, 1, 1, 1, 0, 0, 0, 0}]

Out[1]= {-0.0498159, 0.0412023, 0.0666667, -0.0364879, -0.107869, 0.034078, 0.318892, 0.466667, 0.318892, 0.034078, -0.107869, -0.0364879, 0.0666667, 0.0412023, -0.0498159}

In[2]:= Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All]

Out[2]= [image]
```

### Scope (7)

A type 1 FIR kernel with even symmetry and odd length:

```wl
In[1]:=
a = FrequencySamplingFilterKernel[{1, 1, 1, 1, 0, 0, 0, 0}, 1];
Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All]

Out[1]= [image]
```

---

A type 2 FIR kernel with even symmetry and even length:

```wl
In[1]:=
a = FrequencySamplingFilterKernel[{1, 1, 1, 1, 0, 0, 0, 0}, 2];
Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All]

Out[1]= [image]
```

---

A type 3 FIR kernel with odd symmetry and odd length:

```wl
In[1]:=
a = FrequencySamplingFilterKernel[{1, 1, 1, 1, 0, 0, 0, 0}, 3];
Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All]

Out[1]= [image]
```

---

A type 4 FIR kernel with odd symmetry and even length:

```wl
In[1]:=
a = FrequencySamplingFilterKernel[{1, 1, 1, 1, 0, 0, 0, 0}, 4];
Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All]

Out[1]= [image]
```

---

A symmetric odd-length FIR highpass kernel:

```wl
In[1]:=
a = FrequencySamplingFilterKernel[{0, 0, 0, 0, 1, 1, 1, 1}];
Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All]

Out[1]= [image]
```

---

A symmetric even-length FIR bandpass kernel:

```wl
In[1]:=
a = FrequencySamplingFilterKernel[{0, 0, 1, 1, 1, 1, 0, 0}, 2];
Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All]

Out[1]= [image]
```

---

A full-band differentiator FIR kernel:

```wl
In[1]:=
a = FrequencySamplingFilterKernel[(Range[4] - 1 / 2) / 4, 4, "Shifted" -> True];
Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All]

Out[1]= [image]
```

### Options (1)

#### "Shifted" (1)

By default, first frequency is sampled at 0:

```wl
In[1]:= a = FrequencySamplingFilterKernel[{1, 1, 0, 0}]

Out[1]= {-0.114563, 0.0792797, 0.320997, 0.428571, 0.320997, 0.0792797, -0.114563}

In[2]:= Show[Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All], ListPlot[{{(0Pi / 14), 1}, {(4Pi / 14), 1}, {(8Pi / 14), 0}, {12Pi / 14, 0}}, Filling -> 0, PlotStyle -> {Red, PointSize[Large]}]]

Out[2]= [image]
```

With ``"Shifted" -> True``, first frequency is offset from 0 by $\pi /7$ :

```wl
In[3]:= a = FrequencySamplingFilterKernel[{1, 1, 0, 0}, "Shifted" -> True]

Out[3]= {-0.114563, -0.0792797, 0.320997, 0.571429, 0.320997, -0.0792797, -0.114563}

In[4]:= Show[Plot[Abs[ListFourierSequenceTransform[a, x]], {x, 0, π}, PlotRange -> All], ListPlot[{{(2Pi / 14), 1}, {(6Pi / 14), 1}, {(10Pi / 14), 0}, {Pi, 0}}, Filling -> 0, PlotStyle -> {Red, PointSize[Large]}]]

Out[4]= [image]
```

### Applications (2)

Smooth data by convolving it with a lowpass filter kernel:

```wl
In[1]:=
data = Table[ Sin[x] + RandomReal[.2], {x, 0, 2 Pi, 0.05}];
ker = FrequencySamplingFilterKernel[{1, 1, 0, 0, 0, 0, 0}];
ListLinePlot /@ {data, ListConvolve[ker, data, 7]}

Out[1]= {[image], [image]}
```

---

Apply a derivative filter to rows of an image:

```wl
In[1]:=
a = FrequencySamplingFilterKernel[{(1/8), (3/8), (5/8), (7/8)}, 4, "Shifted" -> True];
ImageConvolve[[image], {a}]//ImageAdjust

Out[1]= [image]
```

### Properties & Relations (1)

Apply a window to an FIR filter to reduce ripple in its magnitude response:

```wl
In[1]:= fir = FrequencySamplingFilterKernel[{1, 1, 1, 0, 0, 0}]

Out[1]= {0.069411, -0.0540319, -0.10942, 0.0473735, 0.319394, 0.454545, 0.319394, 0.0473735, -0.10942, -0.0540319, 0.069411}

In[2]:= win = Array[BlackmanWindow, Length[fir], {-1 / 2, 1 / 2}];

In[3]:= Plot[Evaluate[Abs[ListFourierSequenceTransform[#, x]]& /@ {fir, win fir}], {x, 0, π}]

Out[3]= [image]
```

## See Also

* [`LeastSquaresFilterKernel`](https://reference.wolfram.com/language/ref/LeastSquaresFilterKernel.en.md)
* [`EquirippleFilterKernel`](https://reference.wolfram.com/language/ref/EquirippleFilterKernel.en.md)
* [`ListConvolve`](https://reference.wolfram.com/language/ref/ListConvolve.en.md)
* [`InverseFourierSequenceTransform`](https://reference.wolfram.com/language/ref/InverseFourierSequenceTransform.en.md)
* [`ListFourierSequenceTransform`](https://reference.wolfram.com/language/ref/ListFourierSequenceTransform.en.md)

## Related Guides

* [Signal Filtering & Filter Design](https://reference.wolfram.com/language/guide/SignalFilteringAndFilterDesign.en.md)

## History

* [Introduced in 2012 (9.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn90.en.md)