2009年6月 2日 (火)

KL展開

今日は画像をいっぱい使っているので、PC からの閲覧を推奨します。

=宿題=
右図の3次元特徴空間中には、3つの特徴点が○印で示されている。
この特徴点群をKL展開し、特徴点群の射影の分散が最も大きくなる平面の法線ベクトルを求めよ。

ちなみに、毎年この類題が必ず期末試験に出題されていますので、パターン認識聴講者は必ず解き方を押さえておきましょう。

     ◆

【解き方の流れ】

1) まずは平均 m と共分散行列 Σ を求める。

数式

数式

     ◆

2) 特性方程式 |ΣI| = 0 を用いて固有値を求める。

数式

よって、固有値 λ = 9, 3, 0 となる。

     ◆

3) λ = 9 のときの固有ベクトルを求める。

Σu = λu より

数式

すなわち、

数式

を解くと、任意の定数 c (≠ 0) が存在して

数式

     ◆

4) λ = 3 のときの固有ベクトルを求める。

Σu = λu より

数式

これから、任意の定数 c (≠ 0) が存在して

数式

ベクトル u1u2 によって張られる平面が、『特徴点群の分散が最も大きくなる平面』 である。

この平面に直交するベクトルが欲しいので、次は両者の外積を計算すればよい。

     ◆

5) u1u2 の外積を求める。

ここでは簡単のため、u1u2 で c = 1 と置くと、

数式

となる。 式中の ex1ex2ex3 は、それぞれ x1、x2、x3 軸方向の単位ベクトルである。

※ ここで、適当な非零の定数 c を用いて c (2, 2, 1)t と表現してもいいと思う。 重要なのはスケールではなく向きなので……。

     ◆

べっ……べつに3年生のために解いたんじゃないんだからねっ!

大学院入試の前の力試しなんだからっ!!

| | コメント (0) | トラックバック (0)

2007年11月 2日 (金)

グラフを描こう (誕生編)

※注意 : 今日の内容はマニアックです。 ごめんなさいごめんなさい。

【Excel + VBA でグラフを描こう】

フーリエ解析のレポートの中に、

 2007110101

のグラフを描け …… みたいな課題がありました (本当は g (x ) の式も導かなきゃいけないんだけど)

     ◆

恐らく、理系のひとがグラフを描くときには、C 言語 (または Fortran) + gnuplot という組み合わせが一般的だと思います。 …… Unix の世界ではね。

しかし!!

gnuplot を Windows で使おうとすると、gz ファイルの解凍とかが面倒だし (←おい!)、ほら、C 言語ってなんかプロ仕様の言語じゃん。

もっと簡単にやりたいのです。

そこで考えました。

Windows ユーザーが手軽にグラフを描くときに用いるソフトとして、まず思い浮かぶのが Microsoft Excel。

お店やさんでパソコンを買うと、Microsoft Office がプリインストールされている。 つまり、実質タダで手に入るソフトです。

今回は、Excel だけを使ってグラフを描いてみようではありませんか!!

20071102000

     ◆

Excel には、標準で Visual Basic for Applications (以下 VBA) というプログラミング言語が附属しています。

文法は Visual Basic にそっくりです。

お金がなくて Visual Studio が買えなかった高校時代、実質タダの Excel VBA でプログラミングごっこをして遊んだものです (3年前、Visual Studio はタダではなかった)

閑話休題。

今回は VBA で座標データを大量に生成し、Excel のグラフ描画機能を駆使してステキグラフを描こうという方針です。

ただし、x 軸は -5 ~ 5 の範囲に限定します (←大した意味はないよ)

     ◆

まずは、Excel を起動しましょう。

VBA は、まがりなりにもプログラム言語なので、それ相応に危険なモノを作る事もできてしまいます。

そのため、初期状態では プログラムの実行がかなり制限されるような設定がなされています。 この設定を解除してしまいましょう。

[ツール (T)] → [オプション (O)] をクリック。

20071102001

オプション画面が出現します。

[セキュリティ] タブの、[マクロ セキュリティ (S)] をクリック。

20071102002

[中 (M)] または [低 (L)] を選択して、[OK] をクリックしましょう。

20071102003

今回は、それほど危険な実験ではないので、[低 (L)] を選択しても大丈夫です。

オプション画面は、[×] または [OK] で閉じましょう。

20071102004

いよいよ、プログラミングを始めます。 ワークシート画面に戻りましょう。

20071102005

[表示] → [ツールバー] → [Visual Basic] をクリック。

すると、こんなの (↓) が出てきます。

20071102006

Visual Basic Editor (以下、VBE) アイコンをクリックしましょう。

VBE という開発ツール (↓) が起動します。

20071102007

ちょっと解りづらいですが、[▼] → [標準モジュール (M)] をクリックしてください。

20071102008

赤枠内の領域に、以下のソースを入力しましょう。

Option Explicit

Sub DataOutPut()
    Const dx As Double = 0.001
    Const MIN As Integer = -5
    Const MAX As Integer = 5
    Dim x As Double
    Dim y As Double
    Dim i As Integer
    x = MIN
    For i = 1 To Round((MAX - MIN) / dx, 0) Step 1
        y = g(x)
        Cells(i, 1).Value = x
        Cells(i, 2).Value = y
        x = x + dx
    Next
    Range(Cells(1, 1), Cells(i - 1, 2)).Select
End Sub

Function g(ByVal x As Double) As Double
    Dim n As Integer
    Dim y As Double
    For n = 1 To 100 Step 2
        y = y + Sin(n * x) / n
    Next
    g = y * 4 / Application.WorksheetFunction.Pi()
End Function

入力したら、[×] をクリックして VBE を閉じます。 べつに、保存しなくてもかまいません。 してもいいけど。

それではさっそく、プログラムを実行してみましょう。

20071102009

Visual Basic ツールバーの [マクロの実行] アイコン を押すと、こんな画面が出てきます (↓)

20071102010

[実行 (R)] をクリック。

すると、大量のデータがセルに書き込まれます。

20071102011

実行直後は、入力されたデータが全て選択されている状態なので、このままグラフを描く事ができます。

いよいよグラフを描きますよー ヽ(´ー`)ノ

20071102012

グラフウィザードのアイコンをクリックしましょう。

今回は、散布図を描きます。

プロットした点を、なめらかな曲線で結ぶタイプです。

20071102013

完成品:

20071102014

おまけとして、「データの生成は VBA じゃなくて C がいいな」 という人のために、C のソースも載せておきます。 『続きを読む』 をクリックしてくださいね。

続きを読む "グラフを描こう (誕生編)"

| | コメント (0) | トラックバック (1)

2006年5月15日 (月)

皆様おはようございます。

(まだ寝てないけど)

 
真夜中なのに、工学部棟は電気が明々と灯っています。

 
僕は、解き終えたばかりの 数学の課題をバインダーに綴じ、仮眠を取るため座椅子に寝転がりました。

…ふと窓の外を見ると、きれいな月明かり。

そういえば、最近 夜空を見上げるような余裕なんてなかったせいか、本当に久しぶりに月を見ました。

 
ずーっと下ばかり向いて、ペンを握って、キーボードを叩いて…。

下手すれば、一日中部屋の中で勉強漬けの日だってあります。

 
もしかしたら、美しい物を見る機会を、自ら奪っているのかも…。
(美しい物とは言っても、オイラーの公式とかそういうものじゃないよ)

忙しさのせいにして、見えるはずの物を見なかったのかな…。

 
危うく、何かを失いかけていたよ…。

| | コメント (0) | トラックバック (0)

2006年1月23日 (月)

センター2日目

センター試験、受けてきました♪

2日目朝、金縛りに遭いました♪

これって、遭う人と遭わない人がいるらしい。

体が動かなくなるのは気分がいいものではないんだけど…。

 

さて、センター試験の中身なんて、つまらない上に今日の朝刊にも書きまくられていたので、割愛しますよー…。

 

問題はその後で、帰る最中に電車が止まっちゃいました♪

 ┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓
 ┃新┃┃加┃┃┃┃中┃┃平┃┃坂┃┃平┃┃岩┃┃
…┫発┣┫ ┣┫ ┣┫ ┣┫木┣┫ ┣┫ ┣┫船┣┫ ┃
 ┃田┃┃治┃┃┃┃条┃┃田┃┃町┃┃林┃┃町┃┃
 ┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛
                         
                         
                         
                         
        

原因は先行列車 (平林駅で停車中) の故障らしく、必死の復旧活動を展開している模様。

待てど暮らせど電車が動く気配もなく、金塚 (かなづか) 駅で立ち往生。

寒い上に、女が 『マジサイアクゥ~』 とか叫んでいるのを聞いて、怒りが沸々とこみ上げてきた。

ちょっと黙って座ってろ! キサマの叫び声こそが事態を悪化させとるんじゃコラ!!

そんな中で、車内アナウンス (↓)

『ただいま、ポイント故障は復旧致しましたが、先行列車、雪のため発車できなくなっております。村上から除雪車を向かわせておりますが、発車までかなり時間がかかります。大変申し訳あr…(以下略)』

さらに、車掌がやってきた。

いかにも非常事態という雰囲気を醸し出していてそれなりに気分が高まったが、さすがに除雪を終えるまで待ち続けるわけにもいかない。

電車は、坂町駅まで行くことになった。

しかし、アナウンスは 『まもなく発車』 と言ったり 『発車までしばらくお待ちください』 と言ったりと、乗客に優柔不断さを遺憾なくアピール。

結局、金塚駅から車で帰ることに。

…で、家に帰り着いたのが約22時半。

ごはんを食べて、お風呂に入って、寝仕度をしたらもう日付が変わりましたとさ。

♪ い~い~な い~い~な~ に~んげんって い~い~な~

| | コメント (0) | トラックバック (0)

2006年1月21日 (土)

センター試験1日目

今日は大学入試センター試験を受けに、わざわざ新発田まで行ったんですよー。

新発田。

 

ちなみにこれ 「しばた」 って読むそうです。

 

…で、駅構内の売店でいろいろと仕入れました。

1,000円支払っただけなのに、レジに 『オアズカリ ¥10,000』 って表示されて、あぁ、きっとライブドアショックで店員の脳みそもゲル化してしまったか…、と深く嘆いたわけです (超意味不明)。

 

センター試験は、鉛筆で解答しなければならない厄介な試験。

しかも、使える硬度は 「H」 か 「F」 か 「HB」 で、それ以外のモノを使うと採点できないらしいんです。

 

だけど、ふと手元を見たら

鉛筆、Bでした。

 

どれほど狼狽したことか。

どれほど焦燥したことか。

 

先生。

0点でも、僕を責めないで下さい。

 

むしろ、

最低新記録更新を喜んで下さい。

 

それぢゃあ、

明日もう1日がんってきます♪

| | コメント (0) | トラックバック (0)