プロが教えるわが家の防犯対策術!

”あるアナログ的な信号をデジタルデータにサンプリングする場合、原信号に含まれる周波数成分をすべて正確にサンプリングするためには、原周波数の2倍以上のサンプリング周波数が必要となる。これを標本化定理という。”

と言うことですが、サンプリングした時点で途中の情報を捨てているのに何故完全に復元できるのか、納得できません。

出来れば絵付きでわかりやすく説明してください!お願いします。

A 回答 (8件)

sin,cos もちゃんと習ったし、フーリエ展開ってのもわかった(つもり :-)、


だけど、周波数て結局何なんだ?、標本化定理の式は何を意味して
いるんだろう? というのが貴方の質問かと思います。
(小生も、理系の大学を出たものの、下記本に出会うまでは
 ちいとも理解していないことに気がついたのです。)

講談社 ブルーバックス
ディジタル・オーディオの謎を解く  天外伺朗 著
ISBN4-06 13268005 C0255 P600E

を読めば、目から鱗がとれること、請け合いです!!

残念ながら、今現在はAmazon.co.jpでもその他大手のWeb本屋でも
手に入らない可能性が大です。

ちなみに、著者名:天外伺朗(てんげ・しろう) はAIBOでおなじみのソニーの
土井さん(らしい)です。 本当に理解している人だから、こういう
素晴らしい説明が書けるものだと感心せずにはいられません。

貴方がもし、教師でしたらどんなことをしても手にいれるべき本だと
おもいます。(この本では、ほかにCDに欠かせないクロスインタリーブ
符号の原理もあっとおどろくほど明快に記述されています。)

---------------
以下、小生なりに上記バイブルの内容をまとめてみたものを投稿して
おきます。( 周波数、標本化の説明のところだけ)

(具体的説明の為、音の周波数とします。また、図がずれますので
 固定フォントにしてみてください)
さて、電波にせよ音にせよ、自然界にある波動は時間の周期関数です。
ですからその意味での周波数が定義できます。しかしこの時の周期をもって
描かれる曲線(F(t))は、いわゆるsin/con curveではない、複雑な任意の
形状をした曲線です。 そこで、人間はそういう形は複雑でも周期をもって
いる曲線をなんとかもっと分析しやすくする方法はないものかと考えた
のです。 で、フーリエさんという人が熱の伝導を研究しているときに
熱の分布の周期関数ってのはsin/conの基本周期とその倍数周期の足し合わせ
になることを証明しちゃったわけです。 つまり、周期関数ってのは
(実は周期関数でなくても任意の関数でいいのですが)sin/conの足し合わせ
で表せるということです。 これは、3次元空間の座標にたとえると、ある
任意の座標を決めるにはx,y,zという直交する座標軸を決めて、その各座標値
で示せるというのと同じです。 ちょっと違うのは周期関数の場合は座標軸に
あたるのが、sin/cos関数という関数ということです。しかも無限にある。

さて、ここで周波数のもうひとつの意味がおわかりになると思います。
そう、いわゆる周波数スペクトル(分析)の周波数というのは、こうした
sin/cos 関数の基本周期・倍周期を指しているのです。基本周期は分析対象
となる元の周期関数の周期をとります。

そしてこれで、”帯域制限”の意味もおわかりになると思います。
上記で、”無限”にあるsin/cos関数といいましたが、音の場合で
いうと20KHz(sin/cos の倍周波数)で止めても、もとの周期関数
(音)の形にはちいとも影響がないと仮定するというか、してしまう
わけです。

そうそう、あと、sin/cosと2種類の関数の足し合わせですが、実は
これはsinかcosかどっちかの関数1種類にしてしまいます。

 sin(a+b) = cos(a)sin(b)-sin(a)cos(b)  とかの公式で
 a*cos(x) + b*sin(x) = c*sin(x+d) c= sqr(a*2+b*2), d=tan(b/a)

てな具合に変形できます。 

FFT(高速フーリエ変換装置)なる機械で表示される周波数スペクトル
の棒の長さは、実はこの”c”なる定数なのです。

つまり、任意の音をFFTにかけて、その周波数スペクトルをみると
下図のように表示されるのです。 

うーん、ここで、元の音のなめらかな曲線図を書けないのがつらいですが、
どうか想像してください。 そのなめらかな周期曲線が周波数(もう、
間違わないでください、ここでいう周波数とはsin/cosという直交関数の
きれいなcurveの周波数のことです)の含み具合が表示されるということです。
 
逆に言うと、下図のとおりの割合でsin/cos curveを足し合わせれば
元のなめらかな音の周期関数が再生できるということです。

|
| *
| *
| * *
| ** *
| ******
| *******
| ********
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20Khz

ふー、やっとここで標本化定理です。

まず、驚くべき事実をいっちゃいます。標本化では、周波数(sin/cosの
ほうでっせ)情報を失うようにおもわれますが、実際は逆なのです。
情報はうしなわれるどころか、おまけがついてきます。

ここでは、20KHzまでのsin/cosを残したいので、44KHzで標本を
取った場合(想像してください。元の音のなめからな曲線を44K個
の箇所でとったパルス上の棒グラフとすることです。)

すると、その44K個のパルス上の棒グラフを周波数スペクトル分析
(FFT)にかけるとどうなるでしょうか?

そう、下記になるのです!! 

|
| *...............* *
| *...............* *
| * *...............* ** * *
| ** *...............* **** *
| ******...........************
| *******.........**************
| ********.......****************
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20Khz      44Khz 
             (44Khzのところを中心に
              もとの周波数スペクトルの反転パターンを      
              背中合わせにしたパターンが現れます)


標本化を44Khzと、20Khzの2倍よりはちょっと多めにしたのは
上記図で、もとのなめらかな周期関数を再生するのに十分な
周波数のかたまりと、標本化でできる余分な周波数のかたまりの
間に隙間ができるようにするためです。 そう、これがエイリアシング
(Aliasing: Alias->"別名"というのが元の意味。)を防ぐということです。

もし、30Khzとかの20Khzの2倍以下の標本化をしてしまうと
下記図のようにAliasingが発生するわけです。こうなると
次にのべる再生方法では、もとの周期関数の再生は不可となることが
わかるでしょう。

|
| *........* *
| *........* *
| * *......* ** * *
| ** *......* **** *
| ******..************
| *********************
| *********************
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20Khz  30Khz    44Khz 


うーん、最後の説明の再生方法なんですが、これも想像してもらうしか
ないです。 なんせ連続曲線図が書けないもので。

もう、おわかりでしょう、先にも書きましたが、もとのなめらかな
周期関数曲線を得るには、標本化で得られた20Khz以下のパターンだけを
取り出せばいいわけです。 そう、20Khzまでは100%素通りさせ、20Khz
以降の周波数はカットしてしまうフィルターを通せば良いのです。
(そんな理想的なフィルターは工学的にはできないそうですが)

んで、なんで2倍なのか、3、4倍でもいいじゃないかという質問の
答えは、 2倍で十分な情報がとれるのに、そんな無駄な! ということ
です。 高周波装置ってつくるのが難しいらしいですからね。

おわり。 (一気に書いて、見直しはしておりません。あしからず。
      是非、バイブルをお読みくださいませ)
    • good
    • 2
この回答へのお礼

非常にわかりやすい回答、ありがとうございました。

実はまだ学生で、通信工学で習ったのですが、講師が悪いのか私の頭が悪いのか(^^;)なかなか理解できなかったんですが、これまでの回答と今の説明でよくわかりました(つもりです)。

図書館でそのブルーバックスを探してみます。なければクロネコブックサービスか何かで探してみたいと思います。

お礼日時:2000/12/29 00:47

*****


      *
      *
      ********************** f

*****
       *
       *
        ********************* f
なんか0と1を入れたところで表示がおかしくなってしまいましたので
もう一度送ります
    • good
    • 0

ジャスト2倍にすると理想lpfに近いものを使わないといけないので


信号を誤差なく復元することができないのです
しかし2倍を大きく越えれば越えるほど
越えた分だけ緩やかなlpfで信号を復元できるのです
1******
      *
      *
0     *********************** f

1******
       *
       *
0       ********************* f
でいいのですから楽でしょう
1から0に急に落ちるフィルタが理想lpfです
1から0にどれだけ緩やかにできるかはどれだけ2倍を大きく越えたかにかかってきます
 
    • good
    • 0

sinc関数でもとの波形がどのように再現されるかの解説が十分書けなかったので、追加しようと思ったら、TCMさんがカキコしてくださいました。

    • good
    • 2

 ARCさんとstomachmanさんの素晴らしい解説があるので不要でしょうが、私からも蛇足説明をひとつ。

また原理的な話なので、ここでは量子化誤差については無視します。
 確かにサンプリングするとサンプリング点以外の情報は捨ててしまいます。そのサンプリング点を通る曲線はどのようにでも描くことができそうで、ほんとに原信号を完全に復元ができるのか心配になりますよね。でも、ひとつ忘れていることがあります。それは原信号が帯域制限を受けているということです。もし、サンプリング点を勝手気ままに結ぶとすると、周波数成分が帯域制限内に収まらないことになるのです。ですから例の標本化定理の式
 g(t)=Σ[g(n/2W)sin{2πW(t-n/2W)}/2πW(t-n/2W)]
によって、サンプリング点以外のところもがちがちに決まってしまうという寸法です。感覚的な説明で失礼いたしました~。
    • good
    • 0
この回答へのお礼

回答ありがとうございました!(^^)

こういう感覚的な説明だと理論は難しくてもなんとか突破口がつかめますよね。ありがとうございました。

お礼日時:2000/12/21 23:23

>ところで、何故2倍なのでしょう?3倍でも良さそうなのに。

。。

あくまで、「2倍以上」であればよいので、3倍でも4倍でもかまわないのです。2倍が最低ラインっていうだけで。

実際、サンプリング周波数をより細かくすればするほど、元の波形に近いデータが得られるようになりますしね。
    • good
    • 0

確かに、小難しく説明した本が多くて、困りますね。

ここではデジタル化に伴う値の量子化の効果は別問題として無視することにします。
説明の順番が逆になりますが、まず、ナイキスト周波数について。
●サンプリング周波数が、信号に含まれる最高周波数の2倍未満であると、エリアシング(Aliasing)が発生します。
まず実際にグラフを描いてやってみてください。
例えばサンプリング周波数が1である場合、
cos(0.125x2πt)という波形(周波数0.125)と、cos(0.875x2πt)という波形(周波数0.875)とが区別出来ません。或いは、cos(0 x 2πt)という波形(周波数0)と、cos(1x2πt)という波形(周波数1)とが区別出来ません。サンプリング周波数が1である場合、信号に0.5以上の周波数(xとする)の成分が含まれていると、あたかも0.5-xの周波数成分であるかのように見えてしまいます。これがエリアシングです。
 つまり、エリアシングが起こると、元の周波数が幾らであったか分からなくなり、再現不能になります。サンプリング周波数の半分(ナイキスト周波数)以下の周波数成分しか含まない信号でないと、再現できる可能性はありません。

●ナイキスト周波数以下の周波数成分しか含まない信号なら再生できること。
きちんと理解するにはフーリエ変換を一応知っていることが前提になります。
「周波数ωでサンプリングする」とは、数学的には元の関数f(t)にサンプリング関数s(t)をかけ算することです。s(t)は周期1/ωでスパイク(δ関数)が並んでいるものです。
s(x) = δ(x) + δ(x-1/ω) + δ(x+1/ω) + δ(x-2/ω) + δ(x+2/ω) + .....
 |  |  |  |  |  |  |
 |  |  |  |  |  |  |
-+--+--+--+--+--+--+-> t
サンプリングされたデータ{f(t) s(t)}をフーリエ変換して周波数空間に写したものは F(x) * S(x) です。ここにF(x)はf(t)のフーリエ変換:つまり元の信号のスペクトル、S(x)はs(x)のフーリエ変換、* は畳み込み積分(convolution)です。S(x)は周期ωでスパイク(δ関数)が並んでいるものです。このため、F(x) * S(x)は次のように表すことができます。
F(x) * S(x) = F(x) +( F(x-ω) + F(x+ω) + F(x-2ω) + F(x+2ω) + ...... )
(なぜならδ(x-c)*F(x) = F(x-c))
ここで「エリアシングが生じた」ということは、「|x|<ω/2の範囲において()内の部分が0でない」ということと同等です。一度混ざり合ってしまうと、分離は不可能になります。
またF(x) * S(x)は、xに関して、周期ωの周期関数になっています。
F(x)
         ・   
        ・ ・・  
       ・    ・ 
---+------+------+------+-> x
   -ω     0      ω      2ω

S(x) = δ(x) + δ(x-ω) + δ(x+ω) + δ(x-2ω) + δ(x+2ω) + .....

   |      |      |      |
   |      |      |      |
---+------+------+------+-> x
   -ω     0      ω      2ω
F(x) * S(x) (エリアシングがない場合)
  ・      ・      ・      ・    
 ・ ・・   ・ ・・   ・ ・・   ・ ・・  
・    ・ ・    ・ ・    ・ ・    ・ 
---+------+------+------+-> x
   -ω     0      ω      2ω

もしエリアシングがなければ、元の波形のフーリエ変換F(x)を再現することができます。それには
B(x) = |x|<ω/2 なら1, さもなくば0
B(x)
       +-----+
       |     |
---+------+------+------+-> x
   -ω     0      ω      2ω
というフィルターを使います。このフィルターを掛けると (周波数空間では単にかけ算をすればよい)
B(x) (F(x) * S(x)) = F(x) (B(x) * S(x)) = F(x) * δ(x) = F(x)
となるからです。これはF(x) * S(x)の波形のうちの一つの周期だけを切り出すという操作です。
もしエリアシングが生じると(すなわちF(x)がx>|ω/2|においても0でないなら、図からわかるように)F(x) * S(x)は波形が裾野のところで重なり合ってしまうので、B(x)を使って切り出しても元のF(x)には戻りません。

サンプリングしたデータ (f(x) s(x))にB(x)の逆フーリエ変換であるフィルターb(t)を掛けても同じ事です。信号空間ではフィルターを掛けるには畳み込み積分を行いますから、
b(t) * (f(x) s(x)) = f(x)
ということになる。ここで、b(t)とは sinc関数(「シンク」と読みます)
b(t) = sin(πωt)/(πωt)
です。b(0)=1、b(t) = -b(t)であることに注意して、グラフを描いてみてください。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございました。

お礼日時:2000/12/21 23:18

まず、「正確にサンプリング」は「完全にサンプリング」とは異なるのです。


デジタル化する以上、元の波形からの劣化は避けられません。
「正確にサンプリング」とは、元のデータが上り坂の時には、サンプリング後のデータも上り坂、同様に下り坂の時は下り坂、が保証される最低ラインだと思ってください。

以下、等幅フォントでお読みください。

↑信号の強さ
4
3   /\      /\
2  /  \    /  \ ←元の波形
1 /    \  /    \
0/      \/      \
0 1 2 3 4 5 6 7 8 9 10111213141516→(時間)

上図が周波数nの波形の4単位分だとします
同じ周波数でサンプリングした場合、波を検出する起点によって
A:(0,0)(4,4)(8,0)(12,4)(16,0) …時間0を起点に検出を始めた場合
あるいは、
B:(2,2)(6,2)(10,2)(14,2)(18,2) …時間2を起点に検出を始めた場合
という値(時間,強さ)が得られます。

A:の場合は、まあ正確にサンプリングできたと言えますが、B:のようになってしまった場合、この信号は、起伏のない、平坦な波形であると解釈されます。
B:の場合のようなサンプリングミスを防ぐための最低ラインが、元の並みの周波数の2倍、というわけです。

A:同じ周波数でサンプリングした場合(起点0)
4
3   /\      /\
2  /  \    /  \
1 /    \  /    \
0/      \/      \
0 1 2 3 4 5 6 7 8 9 10111213141516→(時間)

B:同じ周波数でサンプリングした場合(起点2)
4
3
2  ___________________________
1  |
0  |
0 1 2 3 4 5 6 7 8 9 101112131415→(時間)


「倍の周波数」の場合は、メンドクサイのでパス(笑)。
御自分で手動サンプリングしてみてください。
    • good
    • 1
この回答へのお礼

絵付きでどうもありがとうございました(^^)

ところで、何故2倍なのでしょう?3倍でも良さそうなのに。。。そこの所も教えてもらえると嬉しいです。

お礼日時:2000/12/18 06:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!