0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

サンプリング定理

Last updated at Posted at 2021-10-06

この記事で行うこと

サンプリング定理をpythonで実際に書いてみました。

サンプリング定理は

サンプリング定理は$ |\omega| \geq W $で$ F(\omega) = 0 $のとき(これを信号$ f(t) $は帯域幅$ W $に帯域制限されているという)サンプリング間隔$ \tau = \frac{\pi}{W}$のサンプル点$ {t_k} $でのサンプル値$ {f_k} $のみから$ f(t) $を再現できる。 $$ f(t) = \sum_{k = -\infty}^{\infty} f_ksinc \frac{t - t_k}{\tau} $$

実験

``` import numpy as np import matplotlib.pyplot as plt import cmath ``` ライブラリのインポート
x = np.arange(-10 * cmath.pi, 10 * cmath.pi, 0.05)
y1 = np.sin(x)
y2 = 2 * np.sin(2 * x + cmath.pi)
y3 = 2 * np.sin(2 * cmath.pi * x + cmath.pi)
y = y1 + y2 + y3 #合成波

今回は三つの簡単な波の合成を使用する

y_1 = sin(x)\\
y_2 = 2sin(2x + \pi)\\
y_3 = 2sin(2\pi x + \pi)

この時の最大周波数$f_m = 1$である。
image.png

これが合成波グラフです。

t = 0.4 #サンプリング周期
n = len(x)
Y = []
for i in range(n):
  y_tmp = 0
  for j in range(n):
    y_tmp += y[j] * np.sinc((x[i] - x[j]) / t)
  Y.append(y_tmp)

image.png

波が完全に復元できていることが分かります。

t = 5 #サンプリング周期
n = len(x)
Y = []
for i in range(n):
  y_tmp = 0
  for j in range(n):
    y_tmp += y[j] * np.sinc((x[i] - x[j]) / t)
  Y.append(y_tmp)

image.png

サンプリング周期は$ 0.5 $より小さくないと(0.5はダメ)復元することはできません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?