なんでかやった事のないヒルベルト変換をしてみるなり.
ヒルベルト変換とはこうゆうことのようだ.
狭義のヒルベルト変換: 原波形の90度位相のずれた波形を作ること
ヒルベルト変換の広義・応用:
・原波形を複素時間領域表現できるようになる
・包絡線を綺麗に計算できる(AM復調)
ーーーー
まずは、90度位相変換をFIRフィルタでやってみる.
↓最初に、100行のtext fileに、gain=1、phase=90°の数字を並べる.
↓これを逆フーリエ変換するとFIRのタップ係数(100タップ)を得る.このFIRは90度移相フィルタに他ならない.このタップ形状は、ヒルベルト変換のインパルス応答として知られるものと同じである. x90 = FIR(x)
適当に生成したxと、x90をグラフにするとこうなる↓ (なんかへんかも)
つぎに包絡線を考える.
原信号の複素表現をzとする、
z = x + jx90 = A(t) e jθ(t)
包絡線Aは複素数の大きさなので、
A = √(x*x + x90*x90)
↓それではxとx90からAを求めてみよう.
あれぇ? 包絡線っぽいけどなんかおかしい.ビロビロしちゃってる.これには原因がある.100tapのFIRを通すと、約50遅れのx90が出てくるので、x90は位相が遅れすぎなのだ.これを回避するには原信号xを50遅れさせて時刻合わせしてやればいい.
x90 = FIR(x)
x’= delay(x)
のように.
x’とx90からAを求めれば正しい包絡線を得られるはずだ.(めんどくさいので割愛)
以上は前座である.
FIRで90°移相させるのをヒルベルト変換とは呼ばないんじゃないのかな???
結果は同じはずだけどね.
余談だが、90°移相をアナログ回路でやると精度が悪くて嫌な気分になる.アナログ回路で時間を操作するのは限界があるものだ.時間操作はデジタルでやってスカッとスッキリしようぜ.
ーーーー
以下は本物のヒルベルト変換.
ヒルベルト変換の解説はこれが判りやすい.この文献に書かれたやり方でヒルベルト変換をやってみる.
ヒルベルト変換の手順はこうだ.
①原信号xをフーリエ変換して、Xを求める.Xは周波数領域の複素数である.
②Xを変形してZを求める.Zも周波数領域の複素数なのは言うまでもない.
z = x + jx90
zのReパートがxであり、Imパートがx90である.
④包絡線Aを求める.
A = √(x*x + x90*x90)
操作②の意味がさっぱりわからんのだが実際にやってみよう.
↓まずはxと、ヒルベルト変換③で求めたx90の比較から.今度はちゃんと出来てる.
↓つぎは包絡線Aを求めたもの④.綺麗な包絡線が出ました.包絡線をGETするには便利そうなヒルベルト変換だけど、こちらのページによると、馬脚を顕す場面もあるらしい.
1)DCを含むと上手く計算できない
2)2周波が混ざってると上手く計算できない
NTSCのカラーバーストみたいな信号には便利に使えるけど、white noiseの包絡線は苦手なのかな.
かしこ
今日、インターフェース誌4月号が、家に届いたのですが、特集の「数学100」に、さっそく、
返信削除・クオータニオン(四元数)
が、載っててウケました。
※角速度センサから、姿勢角を計算するサンプルが載ってました。
サンプルの言語がみんな「python」ばかりなのは、「時代」なんだなー、と思いました。
おはよーございます.
削除買いましたか、ナイス.
まさか見るとは思ってなかった四元数こんにちわ.
チラ見したところではヒルベルト変換は載ってなかった気がしました.
そしてみーんなpy py py言ってます.
Pay pay いってますね レジで
削除お支払どうしますか
現金というのご 恥ずかしいくらい
そうですね
うひょー
削除paypay言ってるのはわたしもそのうちの1人です
「paypayで払います」
コンビニだけでなく飲み屋でも
ソフトバンクは新言語paythonを公開したらいかがか?