2014-01-01から1年間の記事一覧

numpyのndarrayを使った行列操作練習帳 その1

pythonのnumpyパッケージで操作の中心となるのはndarrayクラスです。ndarrayクラスは1次元配列にも2次元配列にもそれ以上の次元の配列にもなりますが、ここでは2次元配列、つまり行列として利用する場合に焦点を絞って、操作法を練習します。 行列の作成 行…

Python 3.4の導入メモ - pipとpyvenv

Python 3.4をWindows 7にインストールしました。パッケージ管理周りの情報が錯綜してややこしいので、自分で調べたことをメモしておきます。 Installation & Packaging Tutorial — Python Packaging User Guide documentation を大いに参考にしています。 nu…

OpenCV3.0 alphaをビルド

OpenCV3.0 alphaが2014/8/21にリリースされました。さっそくopencv-3.0.0-alpha.exeをダウンロードしてきて解凍しましたが、今回はビルド済み.libと.dllは提供されていないようです。しかたがないのでCMakeを使ってビルドしました。 ビルドは今まで通りの方…

Pythonでimportしたモジュールの場所を調べる

例えばimport numpyで読み込んだnumpyモジュールのソースコードの場所を知りたいときは、 import numpy print(numpy.__file__) とします。表示例は以下のとおりです。 '/usr/lib/python3.2/site-packages/numpy/__init__.py' またinspectモジュールのgetfile…

Pythonでコードゴルフ

久々にログインしたCheckiOで、コードゴルフの面白い問題(Prime Palindrome Golf :: CheckiO)が出題されていました。問題は以下のとおりです。 整数n(0 ≤ n < 98689)が与えられる。 nよりも大きく、かつ素数で、かつpalindrome(数字をひっくり返しても同じに…

自然対数の底eの定義式を自分で導く

自然対数の底eの定義式といえば ですが、極限にとばすのは0だったか無限大だったか、右肩の数字はtだったか1/tだったかなど、よく忘れます。この式を丸暗記する代わりに、この式の導き方自体を覚えるのが良い方法です。 axの微分を定義から計算すると、 とな…

はてなブログでtex記法を使うときのメモ

はてなブログの[tex:]記法で数式を表示するとやたらとはまります。この記事ではそれを記録していきます。 を表示する を表示するだけではまります。普通[tex: a^x]と書きたくなりますが、これだと [tex: ax]のようにうまく表示されません。 正しくは[tex: a\…

回転行列の積から加法定理が導ける

原点を中心に点を回転する回転行列を2回かけあわせると加法定理が導けることに気付く。シンプルで美しい。(加法定理と回転行列)

C++のvalarrayという不遇なライブラリ

C++

きっかけが何だったか忘れましたが、C++にはvalarrayという数値計算用のライブラリがあることを知りました。numpyやMatlab/Octaveのように、array同士の足し算ができたりします。 #include <iostream> #include <valarray> using namespace std; int main(){ valarray<int> v1(10, 3);</int></valarray></iostream>…

行列A+BCDの逆行列を導出する

行列の逆行列は で表される、という公式(A+BDCと書かれることもある)が天下りで出てきて面食らったことはないでしょうか。 この式は‘Matrix Inversion Lemma’(逆行列補題、逆行列の補助定理)とか‘Sherman-Morrison-Woodbury Identity’(Sherman-Morrison(-W…

mathjaxではbmが使えないので代わりにboldsymbolを使う

tex

JavaScriptの力でLaTeX形式の数式を綺麗に表示するmathjaxでは、太字ベクトルを表示するときに使うbmコマンドが使えないらしい。代わりにboldsymbolを使うことで太字ベクトルを表示できた。 以下は、はてなブログに導入したmathjaxにて太字ベクトルを使う例…

Googleマップをキーボードで操作

矢印キーでスクロール、'+'キーまたは'-'キーでズーム操作。

Python 3で高階関数やラムダ式の練習

高階関数 Pythonでは、関数の引数として関数をとることができます。関数を引数としてとったり、関数を戻り値として戻したりできる関数のことを高階関数と呼びます。 filter() 高階関数の代表はfilter()です。filter()を使うと、シーケンスのうち条件にあう要…

C++11のtupleをvectorに突っ込んでソート

Update(2015/06/26): コメントのご指摘に従い、私の勘違いを修正(tupleを比較方法の指定なしでソートすることはできないと勘違いしていた) C++11から新たに導入されたtuple(タプル)を、vectorに突っ込んでソートする方法について調べました。 比較方法の指…

Linuxで拡張子を一括置換

Linuxのシェルにて拡張子を一括置換する方法を2つ紹介します。 方法1: %を使う 複数のファイル拡張子を一括で変更するにはにあるように、%を使います。以下は.txtファイルを.logに一括置換する例です。 for i in *.txt do mv $i ${i%txt}log done 方法2: /を…

ポテンシャル関数の意味

cv

グラフィカルモデル入門 from Kawamoto_Kazuhiko SSII 2014のチュートリアルの資料「グラフィカルモデル入門」のp23でポテンシャル関数の意味を知りました。 「確率分布みたいなものだが、確率分布と違って総和が1という制約がない関数」ということでしょう…

Python 3で小数点以下n桁を表示する

C/C++でいうprintf("%.20f", val)のように、小数点以下n桁を表示するには以下のように書く。これは小数点以下20桁を表示する例。 val = 1 / 3 print("{0:.20f}".format(val)) 結果は以下の通り。 0.33333333333333331483 この書き方苦手だ…

C/C++でガンマ関数tgamma()

ガンマ関数といえば、階乗を整数から整数以外に拡張したもの。それがC/C++の標準ライブラリで提供されているとは知らなかった。 std::tgamma - cppreference.com C言語関数辞典 - tgamma, tgammaf, tgammal 例は以下。 std::cout << std::tgamma(5.0); \( \G…

SIMD命令を使って高速に計算する

C++

マルチコアを用いた画像処理 from Fukushima Norishige このスライドに出てくるSIMD命令を試したくなったので試してみました。 IntelのCPUでSIMD命令を使う場合、SSEという命令セットと、その後継であるAVXという命令セットのどちらかを使うことになると思い…

gitで一部のファイルの変更のみコミットする

git

gitで、複数のファイルに変更が加えられているとき、一部のファイルの変更のみをコミットしたいときがある。普通はgit addしてからgit commitだが、次にように書くと一度に実行できる。 git commit -m "change a.txt" a.txt

C/C++11で直角三角形の斜辺の長さを求める関数hypot()

C++

ピタゴラスの定理を使うと、直角三角形の直角を挟む二辺の長さから、斜辺の長さを計算できるのはおなじみでしょう。それを計算してくれる関数がmath.hまたはcmathで提供されているhypot()です。 以下はC++11の例です。 #include <iostream> #include <cmath> using namespace </cmath></iostream>…

C++11で数字→文字列はstd::to_string()、文字列→数字はstd::stoi()とかstd::stod()とか

C++

数字から文字列 スクリプト言語でよくある、数字を文字列に変換する関数がC++11でも提供されています。std::to_string(100)などと書くだけで数字が文字列に変換できます。 #include <iostream> #include <string> int main() { std::string str = "Holland, " + std::to_string</string></iostream>…

Matlabで構造体を使う

C/C++で構造体を扱うときは型宣言を行う。以下はC++の例。 struct my_struct { int a; int b; }; Matlabでも構造体は存在するが、C/C++のように宣言する仕組みはない。「変数.フィールド名 = 値」と書くだけでフィールドがいつでも追加されてしまう。 my_str…

Matlabのmexに関するメモ

古めのMatlabでの話 mex -setupと打って、ビルドチェーンを選択する もしmexによるC/C++のビルドに失敗する場合は、mex -v foo.cppとしてデバッグメッセージを参考にパスを通すなどのデバッグを行う Visual Studio ProかExpressかでディレクトリ構成が違うこ…

EmacsのflymakeにてC++11の文法を自動チェックさせる

~/.emacs.d/init.elに以下を加えると、キーを打つたびにC++11の文法チェックが自動で走るようになります。 ;; 参考:http://d.hatena.ne.jp/suztomo/20080905/1220633281 (require 'flymake) (defun flymake-cc-init () (let* ((temp-file (flymake-init-cre…

g++のレアなエラー「前のエラーにより混乱していますので、脱出します」

C++

人間味あふれるエラーに初遭遇したのでご報告します。現時点でGoogle検索すると792件。 エラーを起こす方法。Windows 7 + Cygwin + g++ 4.8.2にて、g++ -std-std=c++11というコマンドで以下のコードを実行。何重にもミスがあるひどいコードである。 #include <vector></vector>…

Visual StudioでDLLを作る&使うサンプル

DLLの作り方と、DLLを呼び出すプログラムのサンプルをgithubに上げました。Visual Studio 2013 Expressがあればビルドできます。 minus9d/DllSample 以下の書籍を全面的に参考にしました。 APIで学ぶWindows徹底理解 (日経BPパソコンベストムック) p102~p109…

CygwinのCMakeで"CMake Error: Could not find CMAKE_ROOT !!!"と出る問題

Cygwinでcmakeを実行しようとすると以下のエラーメッセージが出て実行できなかった。 CMake Error: Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly. Modules directory not found in /bin zsh: segmentation fault (cor…

ドコモのガラケーを買い替えた話

4年以上使っていたドコモのケータイP-09Aが壊れたため、新しいケータイN-01Fに買い替えた話。ちなみにケータイとはドコモから出されているガラケーのこと。 なぜスマホでなくケータイか ケータイの良いところはなんといっても月額通信費を安く抑えられるとこ…

最近のnkfは超便利

ファイルの文字コードを判別したり変換したりできるnkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JPの最新版(2.1.3)を試したところ、高機能さに感動。 特に良いなと思ったのが、--guessオプションでUTF-8のBOM付かどうかを簡単に…