2014-12-19

標本平均と不偏分散

標本平均と標本分散の性質を説明しました。また、標本分散を用いて母分散を推定すると小さい方に偏るため、それを補正し、偏らないようにした不偏分散を説明しました。

2014-12-11

自然と数理

前回の問題の解答を説明し、自然科学における数理統計学の位置づけを説明しました。

2014-11-28

2014-11-27

ベイズの公式

自然と数理第三部として、ベイズの公式について説明しました。

2014-11-07

確率分布

確率分布の基本的な定義、用語を説明し、代表的な確率分布として二項分布を説明しました。

2014-10-24

相関係数

回帰係数の意味、共分散、相関係数について説明しました。

2014-10-17

平均と分散の性質

平均と分散の性質を説明し、後半では回帰直線の係数を求めました。

2014-10-10

ヒストグラム

ヒストグラムの作り方と、データの特性値の計算方法を説明しました。

2014-10-03

統計学入門

講義中に注意した環境理工学部環境数理学科以外にも、卒業要件単位として数えられない学科があるそうです。
各学部が定めていることなので、ご自分の学部の履修の手引きを参照してください。

今回の教室にはプロジェクターがないので、次回から環境理工学部101教室に変更になりました。

教科書

2014-09-27

教員免許更新講習

1変量2変量
120
106
112
168
120
140
160
160
116
118
104
172
130
124
134
142
112
112
110
120
134
136
138
144
120
120
160
108
140
98
142
130
138
126
108
120
136
118
118
122
128
124
110
134
116
138
116
158
106
166
118
158
124
124
110
166
132
126
122
132
生徒英語国語
18088
27584
37986
47781
57983
67685
77883
87983
97376
107985
118185
127583
137479
147784
157785
168085
177583
187886
197784
208088
課題用
生徒身長座高
116088
215084
315886
415481
515883
615285
715683
815883
914676
1017885
1118285
1215083
1314879
1415484
1515485
1616085
1715083
1815686
1915484
2016088

2014-09-01

au walletでの2重引き落とし:オンラインでの支払いに使ってはダメ

色々調べて書き足しているうちに長くなったので手短に結論を書きます。

au walletなどのVISA/Masterデビットカードを使っても大丈夫なのは、店頭での購入のようにその場で決済が完了する場合だけです。オンラインでの支払いに使ってはいけません。
既にクレジットカードを持っている人は、au walletの5%ボーナスのような余程のメリットがない限り、デビットカードを使う意味はありません。

「使ってはいけません」では乱暴なので、理由、使っても構わない例外など詳しく書きます。
au walletだけに問題があるのではなく、VISA/Masterデビットカードの仕組みそのものの問題です。
また、オンラインで使ってしまったからと言って即座に大問題が発生するわけではありません。もしそうならとっくに禁止されています。
ただちょっとだけ面倒なことになるかも知れません。

au walletは今年中はじぶん銀行からチャージすると5%のボーナスがつくのでお得です。
10,000円チャージすると10,500円使えます。
但し、1回の利用で2重に引き落とされたことがありました。
au walletに連絡したところ、1回目の引き落とし分は戻ってくるけれど、いつになるかは分からない、ということでしたので、原因を調べてみました。

引き落としのギモン|Visaデビット|ジャパンネット銀行と同じで、クレジットカードのシステムを利用するデビットカードの場合はau walletに限らず発生する問題のようです。
「二重引き落とし」の問題だが、VISAやMasterのデビット・プリペイドの類は、「オ... - Yahoo!知恵袋
二重請求されているのが明細で確認できてい… │ au Q&Aプラス
利用可能かどうか確認する時と実際に決済する時で金額が変更になった場合、
クレジットカードの場合は、利用限度枠が2重に減らされるだけですが(例えば30万円使えるクレジットカードで5万円買い物しただけなのに、残りの利用可能額が25万円ではなく20万円に減っている。請求額は5万円だけ)、
デビットカードの場合は残額が2重に減ります。
最初の、確認時に引き落とされた分は、購入店側がキャンセルするか、最長75日で自動的にキャンセルになって戻ってくるそうです。

このような、クレジットカードのシステムを使ったデビットカードやプリペイドカードを使う時に、2重引き落としが発生する条件、発生しない条件としては
店頭での買い物、食事の支払いなど、その場で購入と支払いが完結する場合は発生しません。
ホテルの宿泊でも、前払い制でチェックイン時に払ってしまうホテルなら発生しません。
一方、通信販売で、注文時にクレジットカードの情報を入力するけれど、商品が届いてから決済される場合は2重引き落としが発生しやすくなります。
「決済は商品が届いてから」であっても、発送前に確認はされますし(そうしないと今度はお店側が踏み倒される危険がある)、デビットカードだとこの確認の時点で引き落とされてしまいます。
この後、金額が変更されたりすると商品が届いてからの決済が、発送前確認時の引き落としとは別件だと扱われてまず間違いなく2重引き落としになります。
また、注文をキャンセルすると、2重引き落としの1回目だけは引き落とされた状態になります。
通信販売ではありませんが、楽天トラベルのオンライン決済でも同じことが起こります。
クレジットカードでのお支払いについて【楽天トラベル】から該当箇所を引用します。

<デビット機能付きクレジットカードのご利用について>
デビット機能付きクレジットカードにつきましては以下の点にご留意いただき、自己責任の上でご利用いただきますようお願いします。
(1) デビット機能付きクレジットカードを支払いに利用する場合、旅行契約成立と同時にデビット機能により口座から旅行代金全額が引き落とされます。
(2) 旅行契約内容の変更、キャンセルなどの事情で再度旅行契約締結を行なう場合は、再度クレジットカードの認証を行うため、二重に口座から引き落とされる可能性があります。
(3) 旅行契約が重複した分の旅行代金は、後日契約カード会社から返金されますが、返金されるまでの間は二重引き落としの状態となります。返金が完了するまでの期間はカード発行会社により異なり、最大で75日を要する場合がございます。
(4) 返金予定などのお問い合わせは、お客様ご自身でカード発行会社へ直接問い合わせください。
amazonにも同様の記述があります
クレジットカードでお支払いの場合には商品発送のタイミングで請求が発生しますが、Visaデビットカード、Visa プリペイドカード、au WALLETなどでお支払いの場合は、承認(与信)時点で口座またはプリペイドカード残高から該当金額が引き落とされます。
Visaデビットカード、Visaプリペイドカードの承認後に利用内容が変更された場合、再度承認を行うため変更時の金額も口座またはプリペイドカード残高から引き落とされます。変更前の利用金額は後日返金されますが、返金されるまでの間は2重引き落としの状態となります。返金が完了するまでの期間はカード発行会社により異なります。

楽天トラベル経由以外のホテルの宿泊でも、チェックイン時はカードの確認だけで、チェックアウト時に決済するホテルだと同じことが起こります。

それに、不正利用時の保険の有無も分からないので、来年になって5%のボーナスが無くなったら使う意味は無いと思います。
カード会社からすれば貸し倒れの危険が無い分、クレジットカードより儲かるわけですが、利用者にとってはメリットがないですから。
特に海外(正確には外貨)では、au walletの場合、外貨決済手数料が4%かかりますし、確認時と決済時で為替が違っていると今回のような2重引き落としになりますので、マスターカードのシステムを使うことで海外でも使えることになってはいますが国内でしか使わない方が良いです。海外では素直に普通のクレジットカードを使いましょう。

デビットカードが必要なのは…
国によってはローンを組んで返済暦を積まないとクレジットカードを作れない国があります。
また、転勤や留学で住み始めたばかりの国でもクレジットカードが作れないことはあります。
デビットカードはそのような国では役に立ちますが、既にクレジットカードを持っている人がデビットカードを作る必要はありません。
まだクレジットカードを作れる年齢に達していないお子さんとか、クレジットカードを持っていると使いすぎて返済に追われるから作らない、という人には良いかもしれません。

2014-08-24

換算F値

例えば、計算しやすいようにフルサイズの一眼レフに50mmF2.8のレンズを付けた場合と、(マイクロ)フォーサーズに25mmF1.4のレンズを付けた場合を考えます。
1インチセンサーと1/2インチセンサーでも同じです。
この場合、画角が同じであるだけでなく、
  • 撮影位置を揃えれば絞り開放でのボケの大きさは同じ。
  • 暗い場面を想定して、絞りを開放にしてシャッター速度を揃えれば高感度ノイズも同じ(フルサイズの方が2段ノイズが少ないが、レンズが暗いので感度を2段上げる)
  • 画素数が同じなら、絞りを開放から同じ段数絞れば回折の影響も同じ(フルサイズで4段絞ったF11と、フォーサーズで4段絞ったF5.6なら同じ、等)
ということで、フルサイズの50mmF2.8とフォーサーズの25mmF1.4の絞りの効果はほぼ同じになります。
勿論全てが同じではなくて、
十分明るくてフルサイズ50mmF2.8でもISO100で撮れる時、フォーサーズ25mmF1.4の感度をISO25に下げることは出来ないという点で、同じ画質にはなりません。
同じ絞り、同じシャッター速度、同じ感度で撮ることになり、フォーサーズのISO100のノイズはフルサイズのISO400と同じくらいになります。
フルサイズのISO400と同じならノイズは少ないのですが、明暗差が大きい被写体で明るい部分が飛ばないように露出を絞ると、暗い部分では少しノイズが出ます。
また、フルサイズの50mmF1.4のレンズは販売されていますが、フォーサーズの25mmF0.7のレンズはないという点も異なります。

こんな計算をする意味をいくつか挙げておきます。

コンデジの比較
1インチセンサーのF1.8と、1/1.7インチセンサーのF1.4はどちらが明るいかというと、1/1.7インチセンサーのF1.4は1インチに換算するとF2.38なので1インチセンサーのF1.8の方が明るいです。
コンデジと一眼レフの比較
ソニーのRX100はセンサーが一眼レフより小さいのに背景がよくボケると思っていたのですが、1インチセンサーのF1.8はAPS-C一眼レフに換算するとF3.2なので、一眼レフのキットレンズF3.5-5.6より明るいです。
最新のRX100M3だと望遠側でもF2.8ですから、APS-C一眼レフに換算してF5ですから、ズーム全域で一眼レフのキットレンズより明るいです。
また、フォーサーズに換算するとF2.4-3.7になります。
レンズの性能は開放F値だけで決まるわけではありませんが、少なくとも暗いところで綺麗に撮れるか、とか、背景がボケて立体的に撮れるか、という点では、これらのレンズ交換式カメラにレンズキットの暗い標準ズームを付けるくらいならRX100の方が明るいししかも小さいです。
勿論、レンズ交換が出来るとか、一眼レフなら位相差AFが使えるなどの長所もありますが、キットのレンズしか付けないならレンズ交換式を買う必要はないと思います。
フルサイズとの比較
APS-C一眼レフのF2.8は35mmフルサイズ換算でF4.2です。
フルサイズの本体は高いですが、それに安いキットレンズを付けたのではAPS-Cと大差ありません。
高いカメラには高いレンズを付けないと、単に高くて重いだけです。

2014-08-01

SONY E 50mm F1.8 OSS使用上の注意

ソニーのNEXなどEマウント用の50mm単焦点SEL50F18は安いのに写りが良いと評判なのですが、本来の写りの良さを活かすには少しだけ工夫が要ります。
1. クリエイティブスタイルのシャープネスは-3(最小)にする。
NEX発売当初のレンズが小型化優先で解像が怪しかったからなのか?ソニーの方針なのか?シャープネスが強すぎます。
このレンズにはシャープネスは不要なので弱くします。
クリエイティブスタイルをニュートラルにすると今度は彩度が落ちすぎますので、スタンダードのままシャープネスを落とします。
最小の-3まで落とした方が良いでしょう。ついでにコントラストも少し落としましょう。

2. プログラムAEは使わず絞り優先AEにする。(または感度自動を使わずに固定する)
これまで開放F値が暗いズームレンズしか使ってこなかったので分からなかったのですが、ソニーのNEXで感度を自動にすると、暗い場合でも絞りはF4を、シャッター速度は手振れ補正の有無に関わらず35mmフィルム換算焦点距離分の1と1/60秒のうち速い方を保つために感度を上げます。
このレンズは換算75mmですので、1/80秒を保とうとします。
例えば、露出をマニュアルにして、絞りは開放F1.8、シャッター速度は手振れ補正があるので1/80秒から一段遅くして1/40秒で撮ることにして、ISO100で適正露出だったとします。
ここで絞り優先AEにすると、1/80秒F1.8で感度はISO200に上がります。
シャッター速度優先AEにすると、1/40秒F4で感度はISO500に上がります。
そしてプログラムAEにすると、1/80秒F4で感度はISO1000まで上がってしまいます。
センサーサイズは大きいので感度を上げても画質はあまり悪くならない方ですが、それでも10倍上げればかなり劣化します。
ここからプログラムシフトを使って絞りを開いても、シャッター速度が速くなるだけで感度は下がりません。

絞りの選択の幅が広いことが明るいレンズの長所ですので、絞り優先にしてボケの大きさを自分で決めましょう。

単にソニーの初期設定値の問題に過ぎず、レンズそのものには問題はなく、シャープかつピント面以外は綺麗にボケます。

関係ないですが
BLOG println("Hello, Nikon world")
センサーサイズと被写界深度

2014-07-29

まとめ

半期の講義の総復習をしてから、小テストをしました。
ブログに載せる時に、小テストの解答も加えました。

2014-07-28

交差検証法:総当たり

講義は今日が最終回です。課題の締め切りは来週のこの時間です。

2014-07-22

複素数

固有方程式の解を考えるために、複素数について説明しました。

2014-07-14

技術者倫理


2012年度
2013年度
レポート課題に関して「~には問題があると思いますか?あるとすればどのような問題ですか?」という尋ね方をしました。
これは、現時点で法的に問題がない事に対して「問題がある」と指摘するならば、問題点を具体的に指摘すべきであるのに対し、「問題はない」と主張するには理由は不要(法的に問題がないのだから)という考えに基づいてこのような設問にしたのです。
しかし、レポートという性格上、「問題はないと思います」だけでは提出し辛く感じる学生さんにとっては、「問題がある」と解答せざるを得ないと感じさせてしまったのではないかと思います。

交差検証法の続き

2014-07-08

固有値

第三章で固有値を説明する時に、第四章で説明されている対角化についても説明しました。

2014-07-07

交差検証法の続き

全ての変量を用いるモデルに関する交差検証法のプログラムを解説して、緯度と標高だけを用いるモデルに関するプログラムを作ります。

2014-07-06

神戸

神戸に行ってきました。
写真を整理して載せるのは後回しにして、移動経路をGPSで記録したので地図上に表示します。
時刻と場所を記録しているので、写真を撮った時刻と照合することで、写真を撮った場所を調べることが出来ます。

2014-06-30

交差検証法

不要な変数を削除するために、交差検証法を使って変数選択します。

2014-06-22

Adblock Edge

Adblock Plusには「控えめな広告を表示する」というチェックボックスがあり、デフォルトでチェックされています。
この状態では、googleのテキスト広告などが表示されます。
チェックを外せばよいのですが、他にも何かあるかもしれないのでAdblock "Plus" から "Edge" へ乗り換えたを参考に他のアドインを探して、次の5つを入れることにしました。

1. Adblock Edge Adblock Plusの代わりに使います。
フィルターには、最初から入っている
Disable Tracking
Disable Malware Domain
Disable Social Media
の他に、fanboy-annoyances
https://secure.fanboy.co.nz/fanboy-addon.txt
を使うとfacebookの広告も消すことができ、日本独自の広告を消すにはABP Japanese Filtersの他に
fanboy-Japanese
https://secure.fanboy.co.nz/fanboy-japanese.txt
を使います。
さらに豆腐フィルタも使います。

2.Disconnect
3.FlashBlock
4.RequestPolicy
高木浩光@自宅の日記 - 「NoScript」をやめて「RequestPolicy」にしたによると
> YouTubeなどを埋め込んだページや、はてなブックマークの「○○ users」の画像なども、デフォルトでは全てのサイトでブロックされてしまうが、ステータスバーのメニューから「Allow requests to hatena.ne.jp」を選ぶことで、信用性の高い(はずの)サイトについて全サイトからの参照を許可してしまえば、その後はそのまま使うことができる。これを必要とするサイトは、そう多くはない。
> 一方、「Allow requests from example.jp」は滅多に使わない方がよい。これを許可してしまうと、そのサイトが改竄されたときに対策がパアになる。面倒でも、個別に「Allow requests from example.jp to example.com」でひとつひとつ許可して使う。そうすれば、攻撃者がexample.jpを改竄したとしても、example.comも同時に改竄しない限りこの対策はパアにならない。
Firefoxを便利に - RequestPolicyの設定例
5.Privacy Badger

関係ないですが、最近のThinkPadを買った人のブログ
espresso3389の日記
100円グリス
小型SSDの規格がmSATAからm.2というものに変わっていました。
ThinkStation E31 システム リカバリ ディスクを複数回作成する

2014-06-17

行列式

3次の行列式の性質を説明しました。
前回は演習だったのでスライドはありません。

2014-06-09

多変量回帰

今日から新しい内容に入ります。

前回の解答を今後の講義で使うのでブログ本文に書いておきます。
先月載せたものと基本的に同じですが、引数の引き渡しだけが違っています。
Sub 前回の課題()
Dim x()
Sheets(1).Select
i = 1
Do While Cells(i, 1) <> ""
  i = i + 1
Loop
p = i - 1
ReDim x(p, p + 1)
For i = 1 To p
  For j = 1 To p
    x(i, j) = Cells(i, j)
  Next j
Next i
Sheets(2).Select
For i = 1 To p
  x(i, p + 1) = Cells(i, 1)
Next i
Sheets(3).Select
場所 = 0
For i = 1 To p
  For j = 1 To p
    Cells(場所 + i, j) = x(i, j)
  Next j
Next i
Call 連立一次方程式(x(), p)
場所 = 場所 + p + 1
For i = 1 To p
 For j = 1 To p + 1
  Cells(場所 + i, j) = x(i, j)
 Next j
Next i
End Sub

Sub 連立一次方程式(係数行列(), r)
Rem (c) 2014 Kaoru Fueda
Dim 最大値()
ReDim 最大値(r)
For i = 1 To r
  If i < r Then
    最大比 = 0
    最大行 = i
    For j = i To r
      最大値(j) = 0
      For k = i To r + 1
        If Abs(係数行列(j, k)) > 最大値(j) Then
          最大値(j) = Abs(係数行列(j, k))
        End If
      Next k
      If 最大値(j) > 0 Then
        If 最大比 < Abs(係数行列(j, i) / 最大値(j)) Then
          最大比 = Abs(係数行列(j, i) / 最大値(j))
          最大行 = j
        End If
      End If
    Next j
    If 最大行 > i Then
      For k = 1 To r + 1
        temp = 係数行列(i, k)
        係数行列(i, k) = 係数行列(最大行, k)
        係数行列(最大行, k) = temp
      Next k
    End If
Rem ここは講義では説明していません。
Rem ピボットが0の場合は最も0=0に近い行を第i行に移動して、後に無視する
    If 最大比 = 0 Then
      最小値 = 最大値(i)
      最小行 = i
      For j = i + 1 To r
        If 最小値 > 最大値(j) Then
          最小値 = 最大値(j)
          最小行 = j
        End If
      Next j
      If 最小行 > i Then
        For k = 1 To r + 1
          temp = 係数行列(i, k)
          係数行列(i, k) = 係数行列(最小行, k)
          係数行列(最小行, k) = temp
        Next k
      End If
    End If
  End If
Rem ピボットを1に
  If 係数行列(i, i) <> 0 Then
    For k = i + 1 To r + 1
      係数行列(i, k) = 係数行列(i, k) / 係数行列(i, i)
    Next k
  Else
Rem ここは講義では説明していません。
    MsgBox ("解けないので解の一つを0とします。")
    For k = i + 1 To r + 1
      係数行列(i, k) = 0
    Next k
  End If
  係数行列(i, i) = 1
Rem ピボット以外を0に
  For j = 1 To r
    If j <> i Then
      For k = i + 1 To r + 1
        係数行列(j, k) = 係数行列(j, k) - 係数行列(i, k) * 係数行列(j, i)
      Next k
      係数行列(j, i) = 0
    End If
  Next j
Next i
End Sub

今日使うデータです。

都市番号 都市 気温y緯度x1経度x2標高x3
1稚内-8.0 45.42 141.68 2.8
2旭川-13.6 43.77 142.37 111.9
3札幌-9.5 43.05 141.33 17.2
4青森-5.4 40.82 140.78 3.0
5盛岡-6.7 39.70 141.17 155.2
6仙台-3.2 38.27 140.90 38.9
7金沢-0.1 36.55 136.65 26.1
8長野-5.5 36.67 138.20 418.2
9高山-7.6 36.15 137.25 560.2
10軽井沢-10.0 36.33 138.55 999.1
11名古屋-0.9 35.17 136.97 51.1
12飯田-4.7 35.52 137.83 481.8
13東京-0.4 35.68 139.77 5.3
14鳥取0.5 35.48 134.23 7.1
15京都-0.6 35.02 135.73 41.4
16広島0.2 34.37 132.43 29.3
17福岡1.5 33.58 130.38 2.5
18鹿児島2.0 31.57 130.55 4.3
19高知0.1 33.55 133.53 1.9
20那覇13.5 26.23 127.68 34.9
出典:坂元慶行、石黒真木夫、北川源四郎著「情報量統計学」共立出版株式会社

2014-06-07

Nokia Lumia1020で撮ったDNGファイルをDxO Optics Proで現像する

デジカメのRAWファイルの現像に使っているDxO Optics ProがNokiaのWindows Phone 8スマートフォンLumia 1020のカメラのDNGファイルに対応しました。
2/3インチセンサーで4100万画素という物凄い画素数で、縦横比4:3なら7136x5356画素、縦横比16:9なら7712x4348画素で記録されます。
実際のところ、そこまで解像度が高いわけではなく、ズームレンズがないので中央部を切り取ってデジタルズームするためです。
一度の撮影で、4:3なら約3822万画素のDNGファイルと約500万画素のJPEGファイルが記録されて、普通にアップロードする時はJPEGファイルの方が使われます。
広角で写すときには3800万画素を500万画素に縮小してJPEGファイルを作り、望遠で写すときには中央部の500万画素を切り抜いてJPEGファイルを作ってくれます。

このブログでは長辺1600画素までしか載せられませんが、例えば広角側で

このような写真を撮れる時、望遠にすると

このように、広角で撮った場合と同じくらいシャープな写真が撮れます。
普通のスマホで拡大して撮るとぼやけますが、Lumia1020なら元の画素数が多いのでぼやけません。

パソコンでDxOやLightroomを使って現像すると元の3800万画素のファイルが作れるので、上の写真の一部分を見てみます。
まず中央部は

このように写っていて、これで約11倍のズーム相当です。
ここまで拡大すればぼやけてきますが、それでも塔の瓦、手前の樹木の葉は一枚一枚写ってます。
端の方の写り方は、左下隅は

これくらい写っていてまだ悪くないのですが、右下隅だと

このように流れています。ZEISS銘であっても、こんな小さなレンズですから仕方ないでしょう。
広角側では縮小されますので、このようのなボケは分からなくなりますし、望遠側では中央部を切り抜きますので周辺は使いません。

DxOで現像する時の注意点として、このカメラ固有の情報が正しく設定されていないようで、ホワイトバランスのプリセットは使えません。
撮影時のオートホワイトバランスのままで現像すると

このようになる写真を、昼光プリセットで現像すると

このような色になってしまいます。
撮影時のオートホワイトバランスは色温度5780K、色相-29で、この写真の雲の白い部分で色を合わせても同じような値になります。
ホワイトバランスは撮影時の値を使うか、手動で合わせる必要があります。

2/3インチセンサーで4000万画素前後ですから、画素の大きさは1/3インチセンサーの約1000万画素と同じで、高感度ノイズは多いです。
でもDxOのノイズリダクションPrimeを使ってから縮小すれば、何せ元の画素数が大きく縮小率が高いので、ノイズは潰れてしまって分からなくなります。

この写真は感度オートの上限ISO400で撮りました。
夜空の部分にも街燈の光芒にもノイズは無く、それでいてビルの窓灯りはぼやけていません。
手動ではISO4000まで上げられます。

DxOには歪曲収差の自動補正機能がありますが、既に補正情報がDNGに書き込まれているのか良く分かりませんが、歪曲収差補正を切った方が直線が直線として写ります。
周辺光量落ちは大きいですが、DxOで補正量をAUTOにすると正しく補正されます。

トータルで見て、スマートフォンなのに望遠にしてもぼやけないのは凄いです。
ただ、センサーの大きさを、デジタルズームのための画素数の多さに使っているので、2/3インチで約1200万画素センサーのデジカメ(フジのX20など)と比べれば色、諧調の豊かさで負けます。
高感度ノイズは、等倍で見れば多いですが、他のデジカメと同じ大きさに縮小してしまえばノイズは潰れてしまうので、2/3インチセンサーのコンパクトデジカメに負けません。
個人的には縦横比3:2で撮りたいのにその設定がないのが残念ですが、周辺は流れるので4:3で撮って上下を切って7136x4758にすれば良いかなと思います。

2014-06-02

一般の連立一次方程式

連立一次方程式の最終回です。
未知数の個数を3個に限定しないようにします。

2014-05-27

斉次線型方程式

定数項が0である斉次線型方程式について説明しました。

なお、教科書の答えは間違っていることもありますので、自分の計算と教科書の答えが違う場合は検算してください。
連立方程式ですので、解になっているかどうかは代入すれば分かります。

2014-05-26

未知数が3つの連立一次方程式を最後まで解く

今後の見通しを良くするために、今回の講義では使わない先の方のスライドまで一緒に載せています。

2014-05-20

連立一次方程式と階数

連立一次方程式において、解なしや解は無数になる条件を求めて、さらに解が無数の場合の解の自由度について説明しました。

2014-05-16

連立一次方程式

計算統計学の講義の中では順を追って作って行きますが、完成したものをすぐ使う場合のために載せておきます。
解が一組だけ存在する方程式用です。
最小二乗法の最適解を求める場合は未知数の個数と式の個数が一致します。
また最適値が一組でない場合は無数にあり、最適値がないということはありません。
そこでこのプログラムでは、一意に定まらない未知数は0とおくことで一組だけ求めるようにしています。
実際には行列式が0に近い時に一般逆行列を使ったほうが良いですが、そのような処理は入れていません。

Sub 連立一次方程式(係数(), 定数(), 解(), r)
Rem (c) 2014 Kaoru Fueda
Dim 係数行列() As Double, 最大値() As Double
Dim i As Integer, j As Integer, k As Integer, 最大行 As Integer, 最小行 As Integer
Dim temp As Double, 最大比 As Double, 最小値 As Double
ReDim 係数行列(r, r + 1), 最大値(r)
For i = 1 To r
  For j = 1 To r
    係数行列(i, j) = 係数(i, j)
  Next j
  係数行列(i, r + 1) = 定数(i)
Next i
Rem iはピボット
For i = 1 To r
Rem ピボット選択
  If i < r Then
    最大比 = 0
    最大行 = i
    For j = i To r
      最大値(j) = 0
      For k = i To r + 1
        If Abs(係数行列(j, k)) > 最大値(j) Then
          最大値(j) = Abs(係数行列(j, k))
        End If
      Next k
      If 最大値(j) > 0 Then
        If 最大比 < Abs(係数行列(j, i) / 最大値(j)) Then
          最大比 = Abs(係数行列(j, i) / 最大値(j))
          最大行 = j
        End If
      End If
    Next j
    If 最大行 > i Then
      For k = 1 To r + 1
        temp = 係数行列(i, k)
        係数行列(i, k) = 係数行列(最大行, k)
        係数行列(最大行, k) = temp
      Next k
    End If
Rem ピボットが0の場合は最も0=0に近い行を第i行に移動して、後に無視する
    If 最大比 = 0 Then
      最小値 = 最大値(i)
      最小行 = i
      For j = i + 1 To r
        If 最小値 > 最大値(j) Then
          最小値 = 最大値(j)
          最小行 = j
        End If
      Next j
      If 最小行 > i Then
        For k = 1 To r + 1
          temp = 係数行列(i, k)
          係数行列(i, k) = 係数行列(最小行, k)
          係数行列(最小行, k) = temp
        Next k
      End If
    End If
  End If
Rem ピボットを1に
  If 係数行列(i, i) <> 0 Then
    For k = i + 1 To r + 1
      係数行列(i, k) = 係数行列(i, k) / 係数行列(i, i)
    Next k
  Else
    MsgBox ("解けないので解の一つを0とします。")
Rem 本来は解ベクトルの長さが最小とすべき。
    For k = i + 1 To r + 1
      係数行列(i, k) = 0
    Next k
  End If
  係数行列(i, i) = 1
Rem ピボット以外を0に
  For j = 1 To r
    If j <> i Then
      For k = i + 1 To r + 1
        係数行列(j, k) = 係数行列(j, k) - 係数行列(i, k) * 係数行列(j, i)
      Next k
      係数行列(j, i) = 0
    End If
  Next j
Next i
For i = 1 To r
  解(i) = 係数行列(i, r + 1)
Next i
End Sub

2014-05-13

行列の基本変形

時間内に終わらなかった部分を削除し、講義中に思いついた説明上の修正を加えましたので、分かりにくかった人はもう一度見てください。

2014-05-12

別のプログラムの呼び出し

機能が明確でよく使うプログラムは、独立させて呼び出したほうが使いやすいので、その方法を説明します。

2014-05-09

掃き出し法

掃き出し法に慣れるために未知数、式がともに3つの連立一次方程式の解き方を説明しました。

2014-05-06

Fuji XQ-1のセンサーサイズ

FUJIFILM XQ1の仕様表を見ると、
センサーは 2/3型 X-Trans CMOS IIセンサー 総画素数1450万画素 なのに
記録画素数は [L]<4:3>4000×3000 で1200万画素しかありません。
X20も同じです。

中央部の2/3×√(1200/1450)≒1/1.65インチ部分しか使っていないのかな?と思い、実焦点距離と35mm判換算焦点距離の換算倍率を見てみました。
参考として1インチセンサーのソニーのRX100とも比べました。

機種実焦点距離換算焦点距離換算倍率
XQ16.4253.91
XQ125.61003.91
X207.1283.94
X2028.41123.94
RX10010.4282.69
RX10037.11002.70
RX100は縦横比が異なりますが、対角線の画角を見る限りでは影響を受けません。
RX100での換算倍率が約2.7倍、同じく1インチセンサーのNikon1も2.7倍で、3.91/2.7=1.45ですから、約1/1.45インチということで
実際に使っている部分の対角線長がRX100やNikon1の約2/3倍という事は間違い無さそうで、懸念していた1/1.65インチ部分しか使っていない、ということはなさそうです。
ならば何故総画素数1450万に対して記録画素数が1200万しかないのか?は分かりませんが、X20の海外のサイトを見ると12.0 million pixelsと2/3-inch X-Trans CMOS IIだけが書かれているので、1450万画素という数字は気にしなくて良さそうです。
恐らく2/3型の外側を含めた数字なのでしょう。

2014-05-05

Adblock Plus用追加フィルター

Webページに表示される広告を減らすために、FirefoxにAdblock Plusを組み込んでいます。
しかし最初から入っているフィルターだけではfacebookに表示される広告を消せませんし、日本独自の広告を消すためのABP Japanese Filtersを使うと、一部のブログでブログ内検索のためのgoogle検索窓まで消えてしまいます。

色々試してみたところ
fanboy-annoyances
https://secure.fanboy.co.nz/fanboy-addon.txt
を使うとfacebookの広告も消すことができ、日本独自の広告を消すにはABP Japanese Filtersの代わりに
fanboy-Japanese
https://secure.fanboy.co.nz/fanboy-japanese.txt
を使えばgoogle検索窓が消えないことが分かりました。

2014-05-04

HTC関連のメモ

shipped-roms出荷時のROMなど
HTC機を工場出荷状態に戻すRom Update Utility(RUU)の利用方法 (HTC速報Dev)RUUは上記サイトから機種に合ったものを入手します。
HTCのAndroid機共通のHBOOTからの操作について (HTC速報Dev)
HTC Jに関して
HTC J (ISW13HT) : VALENTE_WX (VAE_WX) (HTC速報Dev)
HTC J (ISW13HT) VALENTE_WX : Develop関連
HTC Butterflyに関して
HTC Butterfly (X920d) : DELUXE_UB1 (DLX_B1_U)
HTC J butterfly DELUXE_J : Develop関連
【誤報でした】au HTL21 HTC J butterflyのダウングレードが可能に、やってみた (HTC速報Dev)
PL99IMG_DLXB1_U_JB_45_hTC_Asia_WWE_1.12.707.1_R_Radio_3A.22.306.10_10.07.1060.04D_release_signed.zip
HTC Butterfly X920d (台版) 官方历次OTA和RUU 更新包

Latest HTC DriversHTCDriver_4.2.0.001.exeとHTC_BMP_USB_Driver_x64_1.0.5375.msiを入手
Get the Android SDK\sdk\platform-toolsにadb.exeやfastboot.exeがあります

電源設定で高速起動をOFFにして、電源を完全に切ります。
HTCDriver_4.2.0.001.exeとHTC_BMP_USB_Driver_x64_1.0.5375.msiをインストールしてSDKを解凍したパソコンと、USBで繋ぎます。
音量-ボタンと電源ボタンを同時に押してhbootに入ります。
音量±ボタンでFastbootに合わせて電源ボタンで選択してfastbootモードに入ります。
コマンドプロンプトで\sdk\platform-toolsに移って fastboot oem rebootRUU でRUUモードに入ります。butterflyの画面が黒地にHTCと表示されます。
fastboot flash zip rom.zip ←rom.zipは上で入手したRUU*.zip、あるいはHTC機を工場出荷状態に戻すRom Update Utility(RUU)の利用方法 (HTC速報Dev)に書かれた方法でRUU*.exeから取り出します。
終わったら fastboot reboot で再起動します。

現行バージョンのfirmware.zipと前のバージョンのRUUがあれば、
fastboot oem rebootRUU
fastboot flash zip firmware.zip ←現行バージョン
FAILED (remote: 90 hboot pre-update! please flush image again )というエラーメッセージが表示されたら
fastboot flash zip PL99IMG.zip ←前のバージョン
で、root化、S-OFFしなくてもダウングレード出来るらしいです。

個人的にはSense5以降のBlinkFeedよりSense4までのFriendStreamの方が使いやすいです。

直接は関係ないですがauのimap/smtpサーバアカウントを取得する

2014-04-28

Do While~Loop

データの大きさに応じて繰り返し回数を変化させるために、Do While~Loop文を勉強します。

2014-04-21

Excel VBA

課題で前回のデータを使うので、前回欠席した人は前回のブログも見てください。

2014-04-14

計算統計学II

この講義ではMicrosoft Excelを用いてデータ解析を行う方法を説明します。
Excelは、表に数字や式を入力すればすぐ表示されるので、分かりやすく、試行錯誤もしやすいです。

講義の中で使うデータ:統計学Iの教科書の例1.6です。

生徒身長座高
115988
215084
315786
415381
515883
615285
715583
815783
914576
1015885
1116185
1215083
1314879
1415484
1515485
1615985
1714983
1815586
1915384
2016088
出典

2014-02-26

海外でスマホを使う

マニアックにやるなら現地でプリペイドSIMを買ってSIMフリー機に入れますが、SIMの入手、通信方式や周波数帯の確認などハードルが高いのでおいときます。
携帯電話会社の国際ローミングを使えば、分からないこと、困ったことは携帯電話会社が解決してくれますが、料金が高いのでこれもおいておきます。
知りたい人は携帯電話会社に聞いてください。高い料金の中にはサポート代も入っているのですから。

携帯電話会社の国際ローミングにはバルセロナでiPhone盗難にあう→悪用され99万を支払わねばならなくなった件のような心配もあるので、出来れば使いたくありません。
携帯電話会社よりは安く、現地でSIMを買うよりは手軽な方法として、モバイルWiFiルーターのレンタルがあります。
海外で使える海外Wi-Fiルーターレンタル徹底比較!
現地の業者から借りることも出来ますが、貴重な滞在時間をルーター探しに使うより(ルーター探しが目的の人も居ますが)、日本で出発前に借りた方が良いでしょう。
ただ、ルーターのレンタル代は1日単位でかかりますから、例えば旅行日程の1日目の夜に出発して、2日目に現地に着く場合、日本でルーターを借りると1日目のレンタル代が無駄になります。
現地での時間節約とのトレードオフですね。

注意点

  1. スマートフォン自身は、モバイルデータ通信をOFFにしてから機内モードをONにしておきます。
    機内モードをONにしたままでもWiFiをONに出来ると思いますが、出来ない機種は飛行機を降りてから機内モードをOFFにします。
    モバイルデータ通信をONにしていると、モバイルWiFiルーターを使わないときに、スマホ自身の国際ローミングで通信して凄く高くなりますからOFFのままにしてください。
  2. 機内モードをONにしていると通話は出来ません。LineやSkypeなどのパケット通信による通話を使ってください。
    FUSION IP-Phone SMARTなどのIP電話なら、日本国内に居る時と同じ料金で利用できます。
  3. 通信量は会社によって若干違いますが大体1日100MB~200MBくらいに制限されます。
    普通にメールやSNSを読み書きする程度なら全然大丈夫なのですが、アプリのアップデートなどを、それも1台のルーターを数人で共有していると制限に引っかかります。
    スマートフォンから見ると、WiFiの接続先が、使い放題のホットスポットなのか、容量制限があるモバイルWiFiルーターなのか区別できません。
    モバイルWiFiルーターを使うときはアプリの自動更新を切っておきましょう。

データ通信ではないですが、バルセロナでiPhone盗難にあう→悪用され99万を支払わねばならなくなった件
私の研究室の学生も数年前同様の被害に遭いました。
恐らく、かけられた相手に通話料の一部が入るダイヤルQ2にかけられたのでしょう。
対策としては

  • ドコモならWORLD WINGなどの海外での通信サービス契約をあらかじめ外しておけば、電話だけ盗んでも勝手に使われて高額請求されることは無い筈です。
    その代り自分が電話しようとしても出来ませんが、モバイルWiFiルーターでメールやSNSが使えれば大丈夫でしょう。
    追記:契約直後はWORLD WINGの上限額が5万円に設定されていましたので、悪用されても99万円も請求されることはなく5万円まででしょう。でも5万円でも請求されない方が良いのでWORLD WINGを外しておきましょう。
  • auはGLOBAL PASSPORTの契約を外せますか?とauショップで尋ねたのですが、外せないと言われました。
    海外へ行くときにはSIMを外して家に置いていく方が無難でしょう。
  • ソフトバンクは契約したことがないのでわかりませんが、海外でつかう(世界対応ケータイ)に「ご利用いただくには、お申し込みが必要です。」と書かれているので、出国前にソフトバンクに連絡して申し込んでいないことを確認しておけば大丈夫だと思います。

KIX-ITMカード免税店で見せれば5%割引など、特典の多い無料のポイントカードです。

関係ないですが
SugarSyncから意味の分からないメールが来たよ
結局 SugarSync のアカウントがロックされた件
> 使ってないと確証が取れたから消すんじゃなくて、罰ゲーム感覚で消されるんだったらたまらないんですが・ω・

au電話番号にSMS(Cメール)を送信してau IDの新規登録・パスワード再設定ができます。

2014-02-25

Capture NX-DとSilkypixの違い

NikonからCapture NX-Dのベータ版が公開されました。
Capture NX-D正式版が公開されたら、Capture NX2のバージョンアップは修了するそうです。
Capture NX2はNik Software社の技術を用いていて、この会社がgoogleに買収されたからでしょうか。

Capture NX-Dのベータ版をインストールしてみましたが、画面が何となくSilkypixっぽいです。
ファイルを調べた人の話では、Ichikawa Soft LaboratoryとかSILKYPIXという文字列が入っているそうです。
Silkypixはバージョン4の頃に使っていてハイライト処理が気に入らなかったのでその後はバージョンアップしていません。
Capture NX-Dの画像がSilkypixのようになっては嫌ですが、ニコン純正ソフトですからカメラ撮って出しJPEGと同じ画像になってくれるかも知れないと思い、比較してみました。

以前比較した記事に載せた、CaptureNX2で現像した写真です。

同じ記事でSilkypix4で現像した写真です。
青い点光源のボケが、輪郭が妙にくっきりして、まるで青いスタンプを押したようになっています。

同じRAWファイルを今回Capture NX-Dで現像して、同じ場所をトリミングしました。
但しトリミングした座標を記録してなかったので、トリミングした場所が若干ずれていますが、元のRAWファイルは同じです。

点光源のボケは、以前の記事の、Silkypixの写真よりCapture NX2の写真に近いです。
Silkypixの最近のバージョンでは、私が以前好きになれなかった点光源のボケの処理が改善したのか、
あるいはCapture NX-DではNikonのデジタルカメラやCapture NX2に似た画像になるようにSilkypixのパラメータが調整されていて、点光源のボケもCapture NX2に似たのでしょう。
この点光源のボケ具合なら大丈夫だと思います。他の色もCapture NX2に近いです。

普段使っているDxO Optics Proで現像した写真です。

どの写真も、ホワイトバランスは撮影時のままに設定して現像したのですが、ソフトによって色が若干異なります。
DxOは青い点光源が少し紫っぽくなっています。元の色がどっちだったか覚えていませんが。

関係ないですが
空の輝き

2014-02-07

2014-02-06

Webクエリ

今日の主な内容は、前回の課題の完成です。
出来た人向けに発展的な内容を書いておきます。

フォームへの入力

フォームの中にマクロを使って文字を書くこともできます。

このようなフォームを作ってください。
この時、テキストボックスは左から順にTextBox1, TextBox2, TextBox3にしてください。
そして、+のボタンが押されたら

TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text)

が実行されるようにしてください。
また、終了のボタンが押されたら

Unload Me

が実行されるようにしてください。
実行して、左側と真ん中のテキストボックスに適当な数字を書いて+のボタンを押すと右側のテキストボックスに答えが表示されます。

練習:
+のボタンの下に-、×、÷のボタンを作って、それぞれのボタンを押したら引き算、掛け算、割り算が計算できるようにしてください。

相互変換

為替が大きく動いています。
今の為替で、外貨預金するとどのようになるか計算してみましょう。
次のフォームを作ってください。

テキストボックスの順番は上が1、下が左から2,3にしてください。
そして円→ドルのボタンを押したら

TextBox3.Text = TextBox2.Text / TextBox1.Text

が実行され、終了のボタンが押されたら終わるようにしてください。
実行したら、現在の為替1ドル=の欄に90、下の段の円のところに10000と書いて、円→ドルのボタンを押すと、1万円をドルに両替すると幾らになるか表示されます。

練習:
ドル→円のボタンを押したら、ドルを円に両替すると幾らになるか表示するようにしてください。
そして今度は、下の段の円とドルの両方の欄に金額を書いて円、ドル→為替のボタンを押したら、現在の為替1ドル=の欄に為替が表示されるようにしてください。

為替の自動取得

現在の為替レートを自分で入力するのではなく、インターネットから取得しましょう。
例えば
http://stocks.finance.yahoo.co.jp/stocks/detail/?code=USDJPY=X
から見ることが出来ます。

それをExcelに見に行かせて取得したいので、Webクエリを使います。
データタブのWebクエリをクリックしてください。

アドレスの欄に http://stocks.finance.yahoo.co.jp/stocks/detail/?code=USDJPY=X を書いて、左上のチェックをクリックします。

(去年の画像を使いまわしているので1ドル約90円です。今は105円から101円になって大騒ぎしています)
するとそのページがエクセルに貼り付けられます。
どのセルから貼り付けるか尋ねられるので、A1を指定します。

このように貼り付けられて、為替を取得できました。

以上の操作を、VBAを最初に紹介した時の方法で自動化します。
開発タブの「マクロの記録」をクリックします。

名前は何でもいいのでこのままOKをクリックします。

ここで先ほどの操作を行って、記録終了をクリックします。

これで、Webから為替のページを取得するマクロが記録されたので、"アメリカ ドル / 日本 円"の右隣のセルの数字を為替として使います。

2014-01-31

統計的検定

統計的仮説検定について説明しました。来週の小テストは総復習ですので、これまでの小テストの内容を復習しておいてください。

2014-01-30

ユーザーフォームの作成

フォームの作成

メッセージボックスだけでは「はい」「いいえ」だけしか入力できませんので、自分でデザインできるフォームを使ってみましょう。

挿入から「ユーザーフォーム」を選びます。

するとこのような画面が開きますので、ここを自分でデザインします。

このフォームにはUserForm1という名前がついています。これは変更する必要がないのですが、画面に表示されるタイトルを変更しましょう。

画面の左下のプロパティの中のCaption欄がこのウィンドゥのタイトルですので、ここを「休講診断」に変更します。

すると画面のタイトルが「休講診断」に変更されました。

次にボタンを設置します。
休講診断のウィンドゥをクリックすると、「ツールボックス」が表示されます。

この中の「コマンドボタン」をクリックしてください。

するとボタンが表示されます。表示されている文字の変更もCaptionを書きかえればできます。

ここを「気象情報を確認」に書き換えてください。

次に、「気象情報を確認」をクリックしたときに開く2番目のウィンドゥを用意します。
先ほどと同じように挿入から「ユーザーフォーム」を選びます。

これにはUserForm2という名前がついています。 今度はこのウィンドゥのタイトルを「午前6時」にしてください。

次に、単に文字を表示する「ラベル」を入れます。

ツールボックスからラベルを選んでください。

UserForm2にラベルを置いて、Captionを「警報は発表されていますか?」に書き換えます。

さらに、先ほど同様にボタンを二つ置いて「はい」「いいえ」にします。

これらのボタンをクリックして、左側のプロパティのところを見てください。
CommandButton1というのがこのボタンの名前、CommandButtonというのがこのボタンの種類です。

マクロの用意

二つのFormを用意出来たので、「気象情報を確認」をクリックしたらUserForm2が表示されるようにします。

「気象情報を確認」のボタンをダブルクリックすると、マクロを書く部分が表示されます。

ここに
UserForm2.Show
Unload Me
と書きます。
最初のUserForm2.Showは、UserForm2を表示しなさい、という意味で、
次のUnload Meは自分自身(UserForm1)の表示を止めなさい、という意味です。

最後に、UserForm1を表示するマクロを書いて、実行してみましょう。

来週末までの課題

前回までのIF文を使った課題と同じ、以下の休講判断を、このフォームの組み合わせで作ってください。
UserForm3というフォームを作って「全ての授業休講」いうラベルと「はい」というボタンを置きます。そして先ほど作ったUserForm2で「はい」のボタンを押したらUserForm3が表示されるようにします。
UserForm4というフォームを作って「気象情報・交通機関の運行」というラベルと「確認」というボタンを置きます。そしてUserForm2で「いいえ」のボタンを押したらUserForm4が表示されるようにします。
UserForm5というフォームを作って午前8時40分での警報を確認します。警報がある方のボタンを押したら、先ほど作ったUserForm3が表示されるようにします。

2014-01-23

複雑なIF文

前回、迷う人が多かった箇所を簡略化して示します。
次の二つの例題に関して、xやyの値がどんな時に「いただきます」と表示されるのか、
表示される条件が例1と例2でどのように違うのか考えてみてください。
マクロを書いて実行するときにIfとEnd IFの対応が合ってなくてエラーになって、後からEnd Ifを書き足した時に、間違いの原因となります。

例1

If x > 0 Then
Msgbox ("こんにちは")
If y > 0 Then
Msgbox ("ありがとう")
Else
Msgbox ("こんばんは")
End If
Else
Msgbox ("さようなら")
If y > 0 Then
Msgbox ("おはよう")
Else
Msgbox ("いただきます")
End If
End If

例2:

If x > 0 Then
Msgbox ("こんにちは")
If y > 0 Then
Msgbox ("ありがとう")
Else
Msgbox ("こんばんは")
End If
Else
Msgbox ("さようなら")
End If
If y > 0 Then
Msgbox ("おはよう")
Else
Msgbox ("いただきます")
End If

このままでは、書いた私自身でも理解するのが大変難しいです。
そこで、If~Else~End Ifで囲まれた部分を少し右にずらします。

例1

If x > 0 Then
  Msgbox ("こんにちは")
  If y > 0 Then
    Msgbox ("ありがとう")
  Else
    Msgbox ("こんばんは")
  End If
Else
  Msgbox ("さようなら")
  If y > 0 Then
    Msgbox ("おはよう")
  Else
    Msgbox ("いただきます")
  End If
End If

例2:

If x > 0 Then
  Msgbox ("こんにちは")
  If y > 0 Then
    Msgbox ("ありがとう")
  Else
    Msgbox ("こんばんは")
  End If
Else
  Msgbox ("さようなら")
End If
If y > 0 Then
  Msgbox ("おはよう")
Else
  Msgbox ("いただきます")
End If

右にずらすのは人間が読みやすくするためであり、Excelの動作には関係ありません。
IfとEnd IFの対応が合わなくなるのを防ぐには、Ifを書いた時に中身を書く前にElseやEnd Ifを一緒に書いておくのが良いです。

前回の問題の続き

前回の条件分岐は、まず最初に二つに分かれます。

従って、マクロは
If 午前6時に警報は出ているか Then
  青の部分
Else
  緑の部分
End If
となり、さらに緑の部分が二つに分かれるので、

この部分を詳しく書き足して
If 午前6時に警報は出ているか Then
  青の部分
Else
  If 午前8時40分に警報は出ているか Then
    赤の部分
  Else
    黄の部分
  End If
End If
となります。
このようにIf Then~Else~End Ifの対応に注意しながら、包含関係を考えてください。

課題

前回の課題を完成させて、出来た人は次のフォームの作り方を自習してください。

フォームの作成

メッセージボックスだけでは「はい」「いいえ」だけしか入力できませんので、自分でデザインできるフォームを使ってみましょう。

挿入から「ユーザーフォーム」を選びます。

するとこのような画面が開きますので、ここを自分でデザインします。

このフォームにはUserForm1という名前がついています。これは変更する必要がないのですが、画面に表示されるタイトルを変更しましょう。

画面の左下のプロパティの中のCaption欄がこのウィンドゥのタイトルですので、ここを「休講診断」に変更します。

すると画面のタイトルが「休講診断」に変更されました。

次にボタンを設置します。
休講診断のウィンドゥをクリックすると、「ツールボックス」が表示されます。

この中の「コマンドボタン」をクリックしてください。

するとボタンが表示されます。表示されている文字の変更もCaptionを書きかえればできます。

ここを「気象情報を確認」に書き換えてください。

次に、「気象情報を確認」をクリックしたときに開く2番目のウィンドゥを用意します。
先ほどと同じように挿入から「ユーザーフォーム」を選びます。

これにはUserForm2という名前がついています。 今度はこのウィンドゥのタイトルを「午前6時」にしてください。

次に、単に文字を表示する「ラベル」を入れます。

ツールボックスからラベルを選んでください。

UserForm2にラベルを置いて、Captionを「警報は発表されていますか?」に書き換えます。

さらに、先ほど同様にボタンを二つ置いて「はい」「いいえ」にします。

これらのボタンをクリックして、左側のプロパティのところを見てください。
CommandButton1というのがこのボタンの名前、CommandButtonというのがこのボタンの種類です。

マクロの用意

二つのFormを用意出来たので、「気象情報を確認」をクリックしたらUserForm2が表示されるようにします。

「気象情報を確認」のボタンをダブルクリックすると、マクロを書く部分が表示されます。

ここに
UserForm2.Show
Unload Me
と書きます。
最初のUserForm2.Showは、UserForm2を表示しなさい、という意味で、
次のUnload Meは自分自身(UserForm1)の表示を止めなさい、という意味です。

最後に、UserForm1を表示するマクロを書いて、実行してみましょう。