tcl/tk

GUIは使わないのですぐ忘れる.tkを使う最低限のメモをまとめておく. tclメモ データは全て文字列として扱われる.数値の場合は読み込まれてから数値に自動で変換される. 行単位のプログラミング言語で,先頭の文字列がコマンド(butonとか) 変数はsetで値…

C/C++のライブラリについて

概要 静的ライブラリ,動的ライブラリ(そんなものは無い.それは一般的には共有ライブラリ),共有ライブラリ,静的リンク,動的リンクなど,分かっているようで理解が曖昧な点を整理しておく. C++ではヘッダファイルだけで提供するライブラリがある.ヘッダ…

common lispプログラミング

Common lispの勉強をしていて出会ったことを書き連ねていく. コーディングスタイル 詳細を知りたい場合はGoogle Common lisp Coding規約を読む. ファイル名はhoge-foo.lispという感じでハイフンでつなぐ。 グローバル変数は"hoge" 定数は+hoge+ 大文字と小…

インデックスのセットの要素をリストから除去する

c++

C++の場合 リストvがあって,そのリストから除去したいインデックスの集合remove_id_set(3,5,2)とかで指定する要素番号の要素を除去したい.eraseすると要素番号が一つずれるので,それも考慮して一旦集合をソートして,前から順に削除していくという方法. …

N以下の重複しない乱数(整数)の生成

C++ 良い方法かは分からないけどiotaやeraseを使った例を見つけたのでメモ.やり方は一旦iotaで[0,1,...max]の配列を作って,それをシャッフルして,eraseで必要ない部分を消す.eraseはイテレータを2つ渡すと,開始位置から終了位置の1つ前までを消去でき…

C/C++からPythonを使う

要旨 Pythonには色々な便利なライブラリがある.C/C++にも便利なライブラリがある.それらが重複しない場合は一方からもう一方を叩けると嬉しい. 参考URL 1. Embedding Python in Another Application — Python 3.5.2 documentation コンパイル方法 色々な…

c++のスレッド

c++

メモ c++11からはスレッドが言語に取り込まれている. コンパイルには-pthreadを付ける. スレッドを一時的に止めるときにはsleepではなく,スレッド用のstd::this_thread::thread_for()を使う. thread::join()をちゃんと実行して対象のスレッドの終了を待…

情報量関連のメモ

概要 機械学習とか統計を勉強していると情報量とかエントロピーの話が出てきていつも復習をし直しているので,纏めておく. 全体の1行まとめ 情報量 -> 平均値がエントロピー -> 2つのエントロピーの差分が相互情報量 -> 相対エントロピー。 各量の1行ま…

オブジェクトの配列

c++

概要 自分で作ったオブジェクトの配列を作りたいことはよくある.特に,vectorで管理したいことはよくある.その時に,不要なコピーコンストラクタを呼ばないようにc++11以降ではpush_backの代わりにemplace_backを使う. emplace_backの引数はコンストラク…

Euler Projecect 1

100以下の整数のうち,3か5の倍数の和. Ruby 最もシンプルにただ全部舐めていくだけ. sum = 0 100.times do |i| if i%3==0 or i%5==0 sum += i end end p sum

Emacsの設定

Font設定 RIcty-Diminisedを別途インストールしておく。 Option-Set Default FontからGUIでフォントを設定する。 scratchバッファで(frame-parameter nil 'font)でフォント名を確認する。 その文字列を下記のように追記する。 (add-to-list 'default-frame-a…

ODEのテンプレートプログラム

c++

ODEのテンプレートプログラムで流れを確認しておく. ヘッダや宣言 dobuleとfloatの描画ルーチンを自動でコンパチにする宣言を入れておく. #include <iostream> #include <ode/ode.h> #include <drawstuff/drawstuff.h> // Doubleで扱う場合は描画ルーチンをD型にする. #ifdef dDOUBLE #define dsDrawBo</drawstuff/drawstuff.h></ode/ode.h></iostream>…

ランダムウォーク

お題 X軸上をランダムに動く点の軌跡を求める.1ステップで±1か,動かないか. python 一歩ずつやってもいいけど,ガバッと乱数作ってnumpyのcumsumを使う方法でもいい. import numpy as np move = np.random.randint(-1,2,100) # generate 100 random in…

C++プログラミングのメモ

Last update 16/07/25 概要 プログラミングをする上で,変数名の付け方とかprivate/publicの使い分けとかを勉強したことをまとめておく. 【C++API】 API化/OOPプログラミング 目的は実装を隠すことで,利用者に影響を与えずに内部を常に改変できるようにす…

c++よく忘れること

c++

概要 久しぶりにC++を書こうとすると(というよりも読もうとすると)忘れてしまっていてリハビリするのがコピーコンストラクタ,this, Template, 参照渡し,仮想関数, オーバライド,スマートポインタ。忘れがちな点を纏めておく。 符号なし整数と符号あり整…

Common lispの開発環境

動機 遺伝的プログラミングの勉強をしているとLispの例が多いから.人工知能系の研究で従来から使われている理由(Cに比べての高級性)は最近の言語には劣るから意味ないと言われてもいるようだけど,少し本を読んだ限りでは高級性以外の関数型であること,…

ディレクトリ内のあるファイル群に処理を適用する

お題 あるディレクトリ配下のあるファイル群(例えば拡張子がrbのファイルに対してなど)に何か処理を適用する場合.スクリプトを書くときに良くあるのかな. Ruby Dir::glob("/home/nobunaga/codes/*.rb").each do |f| func(f) end python pythonもほぼ同様…

順列の作成

お題 N個の配列からM個の並びを全て列挙する.所謂縦列. python itertoolsを使う.自分で何もやっていないけど,pythonを使う意味はそこだから別に気にしない. import itertools if __name__ == "__main__": a = [0,1,2,3,4,5,6,7,8,9] for p in itertools…

ルーレット選択

お題 GAとかで使うルーレット選択を書く.いわゆる重み付きランダム選択.重みWがx:y:z=1:2:3の場合,x=1/6, y=2/6, z=3/6の確率で生成する.色んな言語で累積和,2分探索,乱数を扱う良い練習問題なのかな. python やり方としては重みの累積和の配列を作…

クロージャ with Python

目的 クロージャの使いドコロがいまいち分からないけれど,動作が(設定パラメタなどで)異なる関数を生成する,という目的で使うのかな?他にはクラス変数っぽい役割で使っているような例があるけどどんな意味があるのか良くわからなかった. 補足説明 pyth…

pythonでのスレッド

基本事項 pythonのthreadは複数コアに跨がらないので,CPU空き時間がないような並列化では意味が無い.そのような場合にはmultiprocessingモジュールを使う. threadingモジュールを使って、threading.Threadのサブクラスを作るか、インスタンスを作る,の2…

DEAPのメモ

概要 拡張性を最も意識している。データ構造もアルゴリズムもほとんどがカスタマイズ可能。 問題や遺伝子の型を扱う、creator, 遺伝子操作を扱うtoolboxが中心モジュール。 インストール 描画用にvpythonも入れておく(pipでコケる場合は面倒なのでaptで入れ…

Gazebo memo

worldファイルにモデル、センサなどすべての要素が記載される。フォーマットはSDF。 model(ODEの剛体と幾何両方含むもの)もSDFで定義される。worldファイルからインクルードする。 gzserver <world_file>でシミュレーションを実行する。 GUIツールとしてgzclientが使える</world_file>…

vpythonのメモ

インストール pip版はエラーでうまく使えなかった.aptでインストールする. $ sudo apt-get install python-visual メモ 座標系は右手系(xは→,yは↑,zは手前方向)(ODEも右手系なので悩む必要はない) 右マウスぐりぐりで回転.両方押しでスパン. cylin…

遺伝的アルゴリズムのメモ

基本 1975にHollandが提案. 最適化対象の関数の微分可能性や単峰性を要求しない(SAも同様). 但し,評価関数の順序性と,探索空間が位相を持っていることが要請される. 解の遺伝子表現方法を決めるということは,表現型と遺伝子型の符号化方法(コーディ…

ヒストグラムの階級幅の決め方

階級幅は基本的に等間隔.非等間隔だとどうしてもそこに恣意性が入る 階級幅の決め方は,まず,幅に関する自明な知見,例えば学年などがあるならそれを採用する. 次に,データから幅を決める場合,基本的には幅を決めるというよりはビン数を決める.データ…

pandas@python

概要 pandasというのをよく目にする.Rっぽくデータ処理するためのライブラリみたいだ. DataFrameに2次元配列を渡してデータを生成する.タプルの配列や,ハッシュ配列でも行ける. 行はindex, 列はcolumnsで名前を付ければ,名前でアクセス可能.行は意味…

scikit-learnのメモ

全体通して 多くの機械学習アルゴリズム(SVM, MLP, etc.)を統一したAPIで利用できる.つまり,多くの学習アルゴリズムが,モデルのオブジェクトを生成したら,fit(X,y)で学習して,predict(T)で予測する iris, digit, boston_house_priceなどの有名なサン…

Numpyのメモ

Numpyだけでも色々とメモが多いので別にする. よく忘れること scipyとの役割分担は?というのは,BLASとLAPACの関係.Numpyが基本的な線形代数演算(BLAS)で,それを使って科学技術計算(FFTとか)をするのがscipy(LAPACK). # ゼロ要素を除いたデータの和 d =…

NULL, NA, NaNの整理

基本事項 NULL, NA, NaNはそれぞれ意味が違う.NULLは無いこと(未定義),NAは使えないこと(Not Available,欠損値), NaNは数値でないこと(Not a Number,非数)だということを踏まえておく. 各言語での扱い R 全てあるので特に悩まない. 0/0はNaN. x = N…