2014年11月3日月曜日

Juliaで固定配列

JuliaでArrayを使えばベクトルや行列計算できるけど、2とか3次元の点を表すのに可変長の配列を使うのはどうも無駄が多い気がする。自前で
immutable Vec
    x::Float64
    y::Float64
    z::Float64
end
とかやったけど、演算子とかを定義するのが面倒。

そんな問題を解決してくれるのがImuutableArrays。
Julia0.3にはすでに採用されているので、
Using ImuutableArrays
v3 = Vector3{Float64}(1, 2, 3)
v2 = Vector2{Float64}(4, 5)

と書ける。デフォルトでは読み込んだ時に4次元まで作ってくれて、演算子の定義とかもやってくれている。(これがメタプログラミングの力か…)
しかも上で自分で定義したのより速い…

行列は
typealias Mat3d Matrix3x3{Float64}
とすれば使える。






2014年11月2日日曜日

IPython notebook でプレゼンテーション用スライドを作る

プレゼンテーションを作るときに困ることがある。

  1. 手軽に書きたい
  2. Texで数式
  3. 図を入れたい。
  4. プログラムを入れたい。
  5. かっこ良くしたい。
  6. PDFにしたい。
  7. 個人で使う分はフリーで済ませたい。
ざっと思いついたままに書くとこうなる。
いろいろ探していたら、最近IPython notebookからスライドが作成できることが判明した!
しかもreveal.jsを使っているのでいかにもギークっぽいかっこいいスライドが作れる。
こんな感じのやつ→http://lab.hakim.se/reveal-js/#/

まえからreveal.jsは使ってみたかったけど、jsとかHTMLとかよく分からんし、Web上で使えるやつもあったけど、PDFにするのに有料会員にならんといけんとかで挫折した。


スライドの作り方

1. IPython Notebookをインストールする。

IPython NotebookはAnacondaをつかってインストールするのがおすすめ。一式全部はいるし、アップデートも
conda update anaconda
で完了する。

2. 新しいNotebookを開いて設定する。

New Notebookを作成したら以下の図のところをSlideに設定する。

右のタブはSlide、Sub-Slideとか選べる。これはreveal.jsでいう横にスライドか、縦にスライドかを指定できる。いろいろ試してみて。

3. スライドへ変換する

IPython Notebookの編集が終わったら、NotebookからSlideへの変換をする。スライドの作成はここにあるとおりのコマンドを実行するとできる。--postでHTMLサーバーを指定する必要があるらしい。

ipython nbconvert notebook.ipynb --to slides --post serve

IPythonのバージョンが古いと文字がものすごく小さいので最新版にアップデートするのをおすすめ。
※Chromeで開くと数式がレンダリングされなかったのでmathjaxのプラグインをいれた。
ちなみにPDFにするときは
ipython nbconvert notebook.ipynb --to latex --post pdf


問題は記録用にPDFとかHTMLにしたらちょっとダサくなってしまうことか。
まぁよい。


2014年9月25日木曜日

Opencv3.0 ALPHA Python版をMacにソースからインストールしたときのメモ

Mac OSXでPythonはAnacondaでインストールしたPython3.4を使用


  1. OpenCV for Linux/MacをダウンロードしてZipを解凍する
  2. ダウンロードフォルダに移動して、作業用フォルダを作っておく。ここではbuildとした。
  3. CMakeをダウンロードして実行。
  4. ダウンロードしたOpenCVのフォルダとbuildフォルダを指定する。
  5. Searchにpythonと入れてConfigを押す
  6. Configを押すとPython3の設定がいろいろあるので上の図や参考サイトを参考にして埋める。赤い表示がなければとりあえずOK。
  7. Generateを押す。
  8. buildフォルダで
    make -j8
    を実行。失敗するとエラーが出る。Python.hがないとか言われたけど、6の設定したPATHを見直すとうまくいった。
  9. sudo make install
  10. pythonを立ち上げてimport cv2
  11. 今回は「 Library not loaded: libpython3.4m.dylib」とか言われたのでシンボリックリンクを貼った。
  12. sudo ln -/Users/name/anaconda/lib/libpython3.4m.dylib /usr/local/lib

これでとりあえずopencvが動いた。

参考サイト
  1. http://luigolas.com/blog/2014/09/15/install-opencv3-with-python-3-mac-osx/
  2. https://stackoverflow.com/questions/20953273/install-opencv-for-python-3-3