2010年12月アーカイブ

今回は乱入(?)ネタ。9月に井上さんの書いた IGOR Pro の微分方程式ネタの記事についたコメントにあった、「微分方程式中のパラメーターをフィッティングで求められないか」という話題に対する Mathematica 的な解法の紹介。
もっと早く乱入すべきだったんだけど、最近しばらく心を落ち着けて検討することができなかったので、ようやく着手した次第。ちなみに以下は、最近日本語版がリリースされた ver.8 で行なった結果だが、ver.7 でも同じ方法で実行可能だ。

モデルの系は、井上さん記事で紹介されたのと同じものを使おう。 Mathematica で連立微分方程式モデルは、割と見たままの表記で入力することができる。こんな感じ。

In[1]:= model = {a'[t] == b'[t] == -k1 a[t] b[t] + k2 c[t],
          c'[t] == k1 a[t] b[t] - k2 c[t] - k3 c[t],
          d'[t] == k3 c[t],
          a[0] == a0, b[0] == b0, c[0] == c0, d[0] == d0};

組み込み以外のシンボルは小文字から始めるという Mathematica の通常流儀にならって A 〜 D ではなく a 〜 d を使っていること、a 〜 d を t の関数の形で書いていること、t の微分は ' で書けること、a[0] 〜 d[0] の初期条件値も a0 〜 d0 というパラメーターでモデルに含めていること、くらいがポイントだろうか。

しばらくご無沙汰していたと思ったら急に連投モードですみません。

年明けから通常のローテーションに戻る予定です。投稿者がまた三人に戻ってしまったのでローテーションが厳しめですが。

今回タイトルにしたカラーマッピング、以前からたまにお問い合わせ頂くことがありました。が、正直なところ具体的に何を指しているのか明確には理解できていませんでした。

数日前にあるイベントでお客様からご質問され、そのお客様がくださったキーワードと、そのイベントの説明員でいらした某計測機器メーカーの方のアシストでようやく理解することができました (Y 社の Y 村さん、ありがとうございました)。

横軸に時間、縦軸に周波数、垂直軸に周波数の強度をとったサーフェイスあるいはコンターのことを指していたんですね。それであれば FlexPro ではショートタイムフーリエ (短時間フーリエ、STFT) または離散ウェーブレット変換 (CWT) (STFT、CWT ともスペクトル解析モジュールが必要) を使って時間 - 周波数解析を行い、サーフェイスか等高線としてダイアグラム (グラフ) 化すれば可能です。

 

 

少し前の記事の冒頭で、断面(プロファイル)を縦に並べたグラフをお見せしました。今回は、この断面データを IGOR Pro で得る方法をご紹介しようと思います。

しばらくご無沙汰していたら今度は連投になってしまいました。

前回FlexPro のイベント検出の意味でのフィルタ機能をご紹介しましたが、今回は FFT フィルタの機能をご紹介したいと思います。

時間領域のデジタルフィルタについて、ごく一般的な IIR フィルタ (ローパス、ハイパス、バンドパス、バンドストップ) は FlexPro Standard および Professional に標準装備していますし、デジタルフィルタモジュールというオプションモジュールを追加すると FIR フィルタや CFC フィルタも使用できるようになります。が、周波数領域のフィルタは装備されていません。時々お問い合わせをいただくことがありますが、「残念ながら」な回答をしなければなりません。毎回それも心苦しいので、今回その方法をご紹介したいと思います。

前回の投稿から時間がなく、肝心のフィルタ部分については適当というかかなり手抜きな内容になってしまいました。すみません。FlexPro で FFT フィルタを実行するためのヒント程度にご覧ください。

本当なら Mathematica ver.8 の話を書くべきなのだろうが、僕はまだいろいろ分かるほどは触っていない。 ver.8 の話は、日本語版の販売が開始されてから腰を落ち着けて書くことにして、今日は、紹介しようと思ってのびのびになっていた、半年くらい前の Wolfram Blog の記事を紹介する。元記事のアドレスは下記。

http://blog.wolfram.com/2010/07/08/doing-spy-stuff-with-mathematica/

この記事で紹介されている内容は本稿のタイトルの通りで、画像を別のデータの入れ物にするというものだ。

一般的なフルカラー画像は、RGB 各色の情報を 0〜255 の 8-bit の数値として保持している。この各色それぞれの 8-bit 目の 0 or 1 を入れ替えたとしても、自然画像の場合は、ほとんど見た目は変わらない。例えば、下の1番左の画像の、RGB 各色の 8-bit 目をすべて 0 にしたものが中央の画像なのだが、この違いが目視で即座にに分かる人はほとんどいないだろう。いちばん右は、両者の差を極端にしたもので、実際には左と中央の画像はこのように違うものなのだ。

Row[{neko = Import["http://blog.hulinks.co.jp/2010/12/mathe-neko.png"],
  trNeko = Image[BitAnd[ImageData[neko, "Byte"], 2^^11111110], "Byte"],
  ImageAdjust[ImageSubtract[neko, trNeko]]}, " "]
元画像各色末尾の1-bitをゼロクリアした画像差分を極端化したもの

ご無沙汰しておりました。

締切日を勘違いしていたり、PC が大乱調だったり、本人が鬼の霍乱だったりで久しぶりのエントリになってしまいました。

久しぶりになってしまったお詫び、というわけではありませんが今回は真面目に FlexPro の機能をご紹介したいと思います。

IIR フィルタや FIR フィルタ、CFC フィルタなどはそのままの名前がメニューに現れますので呼び出しやすいのですが、極値やレベルクロッシングなどのフィルタリングは「事象隔離」というなんだかわからない難しい名前のメニュー下にあるためアクセスしにくいところがあります。

英語版では Event Isolation というメニュー名ですので「イベント検出」あたりが適訳なのかもしれません。次のバージョンで変更を検討した方が良いかな。