2019年11月19日

どうしたことだ、当ブログのアクセス数が目下 絶賛 低下中である・・

自分でアクセスしなくなると急激にPVが減るのである。もはや、読み手はいないのである。たまのアクセスはロボットがチェックしているであろうである。
まーしかし、最近はブログは流行らんようである。ワタクシだって他人のブログはまったく興味もないのである(笑)
まーなんといっても書くという事は認知症対策、老化防止に役立つらしいである。キーボード叩くだけでなく紙にペンで書いてもいいのである。
さらに英単語覚えるとか英語に興味持つとか、認知症対策である。オツムの老化防止にはあくせくする、四苦八苦する・・・そういう行動が効くらしいであるである。

それはそれとしてだな、クラウド上に大容量のメモ帳がある・・・・Google Bloggerだけどさ。最近は、使い道がないである。メモするほどの情報がないのである。

必要に応じてGoogle使えばいいのである。自分のPCやクラウド上に情報を置く意味がワタクシにはないである。だって、ひきこもり、ですもの(笑)

posted by toinohni at 15:10| 東京 ☁| Comment(0) | 日記もどき | このブログの読者になる | 更新情報をチェックする

FFTのもやもやさまーずって・・・・シーーン

N = 32とする。単純に分解能は1Hzとする。サンプリング数32Hzなので16Hz未満の信号を入れてね。そしてワタクシは1Hzの正弦波を与えてFFTしたら1Hzと31Hzに成分が出た出たほい。
16から右は負の周波数相当である。うむうむ。フーリエ係数に複素数を導入したからね。その場合には1Hzと31Hzの成分の合成で正しい振幅になる。それぞれは1/2になっている。

そして、周波数スペクトルだけに注目すれば左半分だけで良い。正負の対称であるからである。

さてと、これから逆FFTをやって元の信号に戻るか試す。普通に戻る。

では、右半分は周波数の情報として不要だしフーリエ係数は左半分の係数使えば良い。2倍すれば良いだぎゃー!!  そこで、うんうんと頷いたが、待てよ、ものは試しだがぎゃ。
先ずは2倍しないで様子見る。16,17,… 31の点は値を0にしたである。だって周波数情報はわかってんだし。
そして逆FFTだ。IFFTだ。結果は?   もとに戻らない。1Hzの成分は出る。だが実数と虚数で出てきたのである。与えた信号は虚数成分は0だ。

そりゃな、本来は右半分の係数が持っている位相を消しちまったからな。結果は実数成分がsin(), 虚数成分がcos()だったか。合成すると1Hzと位相が出る。
ただ、それはそうだろう。本来は32個のデータを使ってIFFTすべきなんだし。。。。

自分のプログラムで確認、EXCELでも確認。右半分を0にするとIFFTで元に戻らない。位相が狂いますわ、ずれますわ。

ところが、But, そうではあるけれども、あるサイトでPython + Scipy + FFTの使用例があってですね。ナイキスト周波数から上は周波数情報としては不要なので0にしている。それからIFFTして、結果は元に戻っているのである。供給した信号が再現された、位相も正しく!! 

なんで?   右半分の係数を0にしているのだぜ。位相情報を捨てたのだぜ。なんで正しく元に戻るであるか、あんたは? 
 
というのが昨日からの謎である。

わかった次第である。まず右半分0にしてからIFFTするとこういう結果になる。
image

これはExcelの例である。C言語で処理した結果も同じである。そして、Python Scipy FFTの結果も数字列としては同じである。
ようするに、実数部、虚数部に出てくる。そして上のグラフを見ればIFFT結果Realというのが入力信号であると分かる。振幅は1/2だけど。
なので表示の際には振幅を倍にしてReal成分だけをグラフに出せば良いのであるである。
で、プログラムを見た次第である。

plt.plot(t, np.real(y1))

ななな、なななんとーーー、この著者はこういうことをやってましたん。

ナイキスト周波数から上を捨てる場合にはIFFTの結果のReal成分だけ使えばいいのである。2倍するけど。なむ・・・・・
ちなみに全データ使う場合には2倍しないでいいである。そして結果に虚数成分も出てこないである。うむうむ。昨日からの謎が解けてすっきりーーーー!!

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

FFTというのがありましてね、えーえー 名前だけは知っております

画像に対するFFTというものもありましてね。画像の場合には二次元になるんですね。それでまあ二次元FFTの結果をどうしろと?  例題としてはある領域の係数を0にする。ドーナツ状の領域を考えて、そこの係数を0にして逆FFTにして画像に戻す。すると、あら不思議。画像がボケましたかね・・・・

ってのがあって。

その前に似たようなことを教科書的な一次元の処理で試してみたい。FFTは教科書ではデータ数の1/2から右は負の周波数に相当する。N = 32であれば N = 16から31までは負の周波数に相当するわけである。さらに係数は1/2になっている。逆FFTの場合には32個のデータを使って戻す。
だが、周波数成分としては半分までに意味がある。よって N = 16から上は切り捨ててだな、N = 15までの係数を使って戻す。2倍すればいいはずだ・・・・・と思ってやってみたらキレイに戻らない。それらしい正弦波は出てきた。入力としては正弦波だ。周波数は整数ではない。

そこで再び、ワタクシってDFTを理解していないのでは?   と思った次第でありまする。

自分のプログラムがどこか間違っているのか?  とは言ってもFFTのプログラムはC言語で本に載っていたものを写経したのだが。それ自体はいじってないし。
うーーむむむのむむむ。写経したりサイトからdownloadしたりしたプログラムがいくつかあるから試すぞ。
Excelではフーリエ解析という機能がある。それ逆変換も狩野舞子か、いや、叶姉妹か、ちがう可能か。可能でありますね。じゃExcelで試すっと。

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