RでFIRフィルタ設計(2)
Rでfir1を使って信号をフィルタリングしてみる
R関連の情報は少ないので、MATLAB関連のページを見て、実際にRに適用してみる。
http://www.phon.ucl.ac.uk/courses/spsci/matlab/lect8.html
上記ページを参考に、Rで10000Hzでホワイトノイズを作成して、2000-3000Hzをフィルタリングするバンドパスフィルタを作成する。
バンドパスフィルタを作成する
> N = 128 #フィルタの次数
> fil = fir1(N-1,c(2000,3000) / (Fs / 2), type="pass")
第2引数のc(0,1)の1はナイキスト周波数(Fs/2)となるので、Fs/2でスケーリングする。
ホワイトノイズを時間領域で畳み込み、フィルタリングする
> x2 = convolve(x,fil,type="o")
ここでは、時間領域の畳み込みのために、convolve()を使う。conv()でもいいみたいだが、conv()の戻り値はtsとして返ってくるので扱いに注意が必要。
convolve()のソースを見ると入力信号の2つをフーリエ変換して、積をとっている。
時間領域の畳み込みは周波数領域での積となり、周波数領域ではその逆となる(らしい)。
http://www.wakayama-u.ac.jp/~kawahara/signalproc/CH2cont2discrete/signalshint.html#anchor1831284
ちなみに、typeは”open”にしておく。"circular"や”filter”では所望の信号を得ることができない。
あと、畳み込みにより、信号長が変わっている。これは畳み込みで、n = length(x) + length(fil) - 1の長さで処理が行われるためである。
> length(x)
[1] 10000
> length(x2)
[1] 10127
なので、信号を128から10127の区間にする。
> x3 = x2[128:length(x2)]
フィルタリング結果のパワースペクトラムを見てみる
> plot(abs(fft(x3))^2,type="l")
2000-300Hzでフィルタリングされていることがわかる。
7000-800Hzのところもスペクトルがあるのは、サンプリング定理により、ナイキスト周波数(5000(=Fs/2))でエイリアシングがおきているため。
最後に
なんとか、Rでバンドパスフィルタの作成とその適用をすることができた(ように思う)。あまりにも、これ系のページが少ない+難しくてわかりにくいので、わかりやすいようにやりかたを書いてみた。間違いがあるかもしれないので、そのときは、コメント欄にでも指摘よろしく。
RでFIRフィルタ設計
R言語でFIRフィルタ設計の参考ページがほとんどない。
RってMATLABに似ているからMATLABのページが参考になるけど、少しづつ違うところがある。
RでもFIRフィルタ設計ができることがわかったので書いておく。
> sampleFreq = 128; #サンプリング周波数
> f = fir1(sampleFreq - 1, c(12, 20)/(sampleFreq / 2), "pass"); #12Hzから20Hzをフィルタリング
> freqz(f, Fs=sampleFreq) # 周波数応答表示
一つ目のポイントは、やはりなんといってもポイントはfreqz()の使い方。サンプリング周波数Fsは何も指定しないとπになる。なので、表示される図がなんのことかわからない。サンプリング周波数Fsを指定することで、横軸の周波数軸があう。
二つ目のポイントは、所望のバンドパスフィルタの範囲を指定し、firの第2引数で(sampleFreq/2)で割ってあげること。
間違っているかもしれないが、自分としては思い通りの結果を得ることができた。
ユーザの私生活を丸裸にするAmazon Silk
米国時間9月28日朝のイベントで発表された7インチの「Kindle Fire」。
Kindle Fireは「Amazon Silk」と呼ばれるウェブブラウザが搭載される。Amazon Silkはスプリットアーキ技術を使うことで、ユーザに高速なWeb体験を提供できるそうだ。
このスプリットアーキ技術とはKindle Fire上で動作するクライアントアプリとなるブラウザとAmazonのクラウドEC2を連動させ、クラウド側でコンテンツの先読みや圧縮などを行うことでクライアントとなるブラウザ上の処理を速くできる技術だ。
こういったサーバ側で処理をさせるという技術は10年くらい前に山のようにアイデアや特許が出されているし、最近ではOperaMiniとかもサーバと連動するといったアプローチをとっている。そのくらいの時期に次世代ブラウザを考えていた技術者にとって、このスプリットアーキ技術は「えっ、何これ??」といったものであろう。
クライアントの代わりにサーバ側で処理をするという方式は、クライアント側の処理性能が高くなってきたこの時代にはあわないアーキだと思っていたし、どちらかというと当時からキワモノ技術的な扱いをうけていた。
それがAmazonによって生まれ変わろうとしている。スプリットブラウザ技術により性能の悪いマシンでも高速なWeb体験を得ることができるというベーシックな、誰でも考えつく方式*1を実際にAmazonが採用した。「コロンブスの卵」的に流行るのだろうか。それとも「イノベーションのジレンマ」のようにブラウザそのものを再定義するのだろうか*2。
何にせよ、ユーザによりよいWeb体験を提供するということは悪いことではない。ユーザから取ったら、裏で何が行われていようが、気持ちよく動けばそれでよい。
という建前はよく聞く話だが、意味もなくAmazonがサーバを使ってまで、ブラウザを革新しようとしているわけではないことは明らかである。
そう、ユーザのブラウザ操作を抑えることにより、「ユーザの行動履歴」を取得しようとしていることはあきらか。ユーザがどのコンテツにいつ、何時、アクセスしたのか、その文脈は何であったか、などなど、Amazonにとっては嬉しい情報が山のように取得できることとなる。まさに、スプリットアーキ技術はユーザの私生活を丸裸にする技術と言えよう。
ユーザの行動履歴をマーケティングに活かすことで、よりよいユーザ体験をユーザへ提供できる。Amazonのマーケットのレコメンドに使えるだけでなく、次の新しいニーズを見つけ出すのにも使える。*3
新しいユーザ体験を提供するという建前のもと、ユーザの行動履歴を搾取するスプリットアーキ技術。どこまでユーザを惹きつけることができるか楽しみだ。
「それでも、生きてゆく」の最終回を見て
フジTVのドラマ「それでも、生きてゆく」の最終回が終わりました。
内容的には非常に重いドラマでしたが、演者の力でとてもすがすがしいドラマだったと思います。
人はいつまでたっても、何も変わりません。でも、ぶつかる人がいれば、いつか変われるのかもしれません。
深見と双葉は心を通じあわせることができました。同じ明日を見て、生きていくことができました。いつか、双葉の「行ってきます」という言葉に対して、深見が「おかえり」という日が来ることでしょう。
甘ったるい終わり方を選ばなかったドラマでした。とてもよいドラマだったと思います。
ところで、深見が借りていたビデオの延滞料はいくらになったのでしょうか。
アイデアを捻り出す最もシンプルな方法
アイデアを出すフレームワークは多々ある。書籍としても多々売られています。
どんなフレームワークを使おうが、最終的には自分の中にしかアイデアはありません。例え、モノマネであっても、自分のモノに仕立て上げないと、モノマネすらできないというのが実情です。モノマネができた上で、ようやく次のステップとして、アイデアを出すフレームワークを活用できるようになるのです。
それでは、自分の中にあるアイデアを自分の中で定着させるための有効な手段は何かわかりますか?
この定着させるという行為を有効なものにする方法が「ひたすら自分の考えていることを文に起こす」という方法です。騙されたと思ってやってみてください。何も書かずにぼーっとしていると、いろいろ考えたんだけど、何も残りませんでした、という結論になることは多々あります。対して、ひたすら、頭に浮かんだことを書き連ねれば、少なくともあとから見直すことができます。たくさんでてきたアイデアをあとで整理しなおすことも可能になります。
新しいアイデアを捻り出したいときは「ひたすら自分の考えていることを文に起こす」という方法をとってみて下さい。これを1週間も繰り返せば、頭の中にアイデアが定着するだけでなく、それまでに考えたことが膨大なデータベースとなり、あとから再利用することが可能となります。
私はこの方法で何度かアイデアを捻り出すことに成功しています。とにかく、書きまくってください。それだけで、変わった世界が見えてくることは間違いありません。