2019年10月30日

SINC() というものがありましてん・・・・ふーーん

デジタル信号処理の本では必ず出てくるSINC関数 = sin(πx)/(πx) である。
この場合にはx = ± nでは0になる。このSINC関数を用いて復号というかサンプル値のパルス列を補間して元の信号を得る事ができるのである。仕組みは数式で書くと・・・・書かぬ。

図のようなSINC()があるとして。x が整数の位置では値はその点のSINC()のピークが出る。他のSINCの裾野は0である。

整数でない場所ではたくさんのSINC()の裾野が重なっている。よって和を取ればサンプル値は滑らかにつながる。これがサンプリング定理の説明で出てくる理想低域フィルターを通すということになる。足してみたのがその下のグラフだ。なお、係数はテキトー   


 

image

  なるほど、滑らかになったですね。まーこれが原理である。帯域の倍より大きい周波数でサンプルする。サンプル値は理想低域フィルタを通すと元に戻る。。。。。。

image

これは原理であって実際はそうはいかぬ。サンプル値は理想的には線幅のないパルスだからである。これは数学の世界だ。理想低域フィルタは矩形波の特性であり数学の世界だ。そういうものは作れない。
この原理は要するに妄想なのである。想像の世界である。理想的状態とも言う。だが、妄想というと分かりやすい。デタラメという意味ではない。(あくまでも個人の感想であり・・・)

実際はパルス列には幅がある。低域フィルターは垂直な崖の特性ではなく傾きがあり斜めってしまう。
まー、そこでサンプルホールドとかね。用語で言うと0次ホールドとか1次ホールドとか出てくる。さらに低域フィルタの特性が緩やかに下るのも考慮すると帯域の数倍の周波数でサンプリングすればいい。
まあね、原理は妄想であってスタートであって現実化する際には別の工夫が必要になるのだよ、ちみぃ!!  工学というものはそういうものだぉ。
しかし、原理は強力だ。これがなければなにも始まらないんだぉ だぉだぉ だおーーん

(ちなみに、図はwxMaximaで出した)

posted by toinohni at 10:24| 東京 ☀| Comment(0) | エレクトロニクス雑学 | このブログの読者になる | 更新情報をチェックする

OneNoteのファイルはどこにあるでござるか?

Win 10のOneNoteはOSの一部なのである。。。。たぶん。で、ファイルを保存という機能がないのである。変更があれば自動的に保存されるのである。どこにあるかを意識する必要はないのである。便利である。
だが、いったいOneNoteの容量っていくらだ?  無料で使えるOneDriveは5GBであり満杯になったらOneNoteのスリム化を考えねばならぬ。そういうときはOneNoteの容量はいくらだ、どこにあるんだ?  って知りたいと思うでごじゃります。
で、調べたらわからないである(笑) Google検索名誉十段(テキトー)のワタクシがググリングしても見つからないのである。きしょーーーめ!!
   とりあえず見つけたのはOneDrive ドキュメントにOneNoteの名前がある。シュートカットがある。では、そのショートカットはどこを指しているのか?
クリックしたらWeb のOneDriveに飛んで、そこでOneNoteを表示した次第である。だが、ネットワークつながっていない時はどないなる?

LANケーブル引っこ抜いてテストである。そのショートカットをクリックしたである。つながらないである。そりゃLANケーブル引っこ抜いたからな。

では、このときにOneNoteを編集する、読む、書く。それはどこに保存されるであるか? とっとと教えてくれたまへよ、マイクロソフトさんよ!!

posted by toinohni at 08:57| 東京 ☀| Comment(0) | ソフト系雑学 | このブログの読者になる | 更新情報をチェックする

FFTというものがありまして

それはDFTを高速化するアルゴリズムであり日本語で高速フーリエ変換と言うのだが、字句通りにフーリエ変換を高速で処理するのではない。フーリエ変換は連続世界での話だ。FFTは離散フーリエ変換という離散世界での話なのである。
だがFFTを高速フーリエ変換と言う。分かっている人はそれでいいのである。

というわけで本の例題。CAIディジタル信号処理・コロナ社 にBASICでのプログラムがあったのでC言語に書き換えて試した。 N = 16 で入力信号をインパルスにしたりsin波形にしたりして結果をExcelのフーリエ解析と比較したり・・・・で正しいとする。
N = 65536 とかにしてですね、時間計測した次第である。
さらに同じ処理をPythonでも書いて見た。時間計測した次第である。
そして、PythonのScipyモジュールにあるfft()も使ってみた次第である。時間計測した次第である。
一番速いの   Python + Scipy fft()
二番目 C言語によるFFT
三番目 Pythonによる記述のfft

教科書の例題は高速化を狙ったものではなくてFFTアルゴリズムの解説が主眼だ。これは工夫すればさらに高速化が可能である・・・・かもね。
Python + Scipy のfftは、そもそもモジュールはCかFortranで作られているらしいので高速だわ。単純な教科書例題とは異なり工夫が凝らされているのであろう。基数2のアルゴリズムかどうかも知らないのだが。
Pythonによる記述が遅いのはしゃーない。コンパイラとの違いは出る。

まー学習用にCで書いたりPythonで書いたりしたわけです。移植だけど。

Pythonによる記述のFFTを1とすると、C言語の場合は数100倍ぐらい速い、Scipy fft()はC言語より数10倍速いって感じだった。テキトー

他にC言語によるFFTプログラムは、奥村のアルゴリズム辞典1990年後半かな、というのがあって動かしたら動いたが時間計測はしていない。Codeは眺めたが理解はしていないよん。だいたい人が書いたCode見てコメントも少ないのにどうやって理解しろって。
ずらずらと数字が画面に出たのであるが、これはファイル化してwgnuplotでグラフ出した。

まあしかし、ライブラリを使いましょう、うむうむ。

posted by toinohni at 08:07| 東京 ☀| Comment(0) | ソフト系雑学 | このブログの読者になる | 更新情報をチェックする

技術系の本はね、ゆっくりと精読すべきなんですよ

理解するためには流し読みは不可。じっくりと考えるには精読・熟読。技術系でなくても科学入門書でもそうだ。
KBBの科学入門書も流し読みしたものはアタマに入っとらん。再読も何回かすると、あ、と思うことがある。読み飛ばしていたところに大事な事があったりして。
ここ1-2ヶ月、FFTの勉強というか復習というかやった。30年ぐらい前の本も読み返し。以前は理解したつもりでいた・・・・のは気のせいだった。わかっていないじゃーん、おれ!!

そういうわけなので本はじっくり読みます。ようにしたい。モノによるけどさ。

FFTと絡んでディジタル信号処理のではサンプリング定理が必ず出てくる。それ、実に不思議な話なんだよ。
オレは昔から、そんなのありえねーと思っていた。帯域WとするとWより大きな周波数でサンプリングすると元に戻す事ができるとかいう。オレはありえねーと思っていた。
フーリエ変換は積分が±無限大だ。これもありえねーと思っていた。k = -∞ から k = + ∞までの積分だ。マイナスから今まで来るのはいい。だが未来へ渡って∞に計算するってなによさ!!
  まー、ここらが数学と日常の間隔の違いではある。

離散フーリエ変換でも±∞だ。だいたい、ここらになると負の周波数なんてのも出てくる。妄想だな、もはや(笑)

で、実はサンプリング定理がいまいち理解出来なかったのは、この妄想の部分と現実の部分との区別がしっかりしなかったからだ。妄想の部分とは理想的とも言う。
帯域の倍より大きな周波数でサンプリングする。パルス列ができる。このパルス列は現実にはありえない。そして、理想帯域フィルタも現実にはありえない。だから、オレはこんな定理はバカけでいると昔おもった次第である。妄想に妄想を重ねている。わっはっは。

そう、理想的なパルス列は実現できない。そのパルスは線幅がゼロだ。ありえねー。ありえねーパルス列を考えて、さらにありえねー帯域フィルタを持ってくる。妄想に妄想を重ねている(笑)

なんてね。ガッコの先生もたんたんと教科書に書いてある説明をするだけだったので、こんなことってありうるの?  と疑問を持ったオレはそこでドンヅマリだ。こんなの納得できん、キリッ)

そういう妄想の世界と現実の世界とはキチンと説明しなくてはね。えー、妄想というのは理想的ともいいます(笑)

現実のパルス列はパルスに幅がある。特性が矩形の理想帯域フィルタは現実にはない。
とはいうものの、この妄想世界は楽しいところがある。理想的な線幅がゼロのパルス列を理想帯域フィルターに通すと、sinc()関数のグラフが出てきて。サンプリング点ではサンプル値だけがあるがサンプル値とサンプル値との間はいくつものsinc()関数の裾野が重なる。
この裾野の重なりに寄与する点はずーーーと遠い点のsinc()関数の裾野も考慮する。無限大離れたサンプリング点のsinc()関数の裾野が寄与するわけだ。ただし、妄想の世界では。

回路化するにしてもプログラム組むにしても無限大時間が出てきたら計算終わらんぞ。そこで打ち切る。妄想から目が覚める(笑)

どうもガッコの授業ではここらの説明があやふやだった気がする。がっこの授業はだいたいが駆け足なので途中で考え込んでしまうと直ぐにドンヅマリに陥るワタクシであった。
不勉強が身にしみる次第である!!

   というわけで復習したら、なーーんだ、そんなことだったか。理解が進んだ・・・のではなくて、思い出した。30年ぐらい前もこんなこと考えた気がする。たぶん。

まー中には理想低域フィルタの制作は不可能であり、・・・・という話が続く本もある。0次ホールドや1次ホールドの話になり、数式がズラーーと出るものもある。

こいつら、妄想してら・・・・と冷ややかに見ると教科書も楽しい一面がある次第であるよ。以上、テキトーな話を終わりますm(_ _)m

posted by toinohni at 07:50| 東京 ☀| Comment(0) | 物理科学雑学 | このブログの読者になる | 更新情報をチェックする