のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

C++

Design Pattern Singleton(ファイル読み出しとかに使えるかもね)

皆さんこんにちは お元気ですか。私は元気かもしれません。 研究は迷走してますとも…さて、今日はDesignPatternのSingletonについて Singletonとは? 概要 これを使うとインスタンスがひとつしか生成されないようなデザインパターンです。例えば、同じファイ…

C++11 型推論(auto,delitype)

C++

皆さんこんにちは お元気ですか?私はベッドの上でぷらぷらしてます。さて、本日は型推論について 型推論(かたすいろん)とはプログラミング言語の機能の1つで、静的な型付けを持つ言語において、変数や関数の型を宣言しなくてもそれを導くのに使われた関数…

DesignPattern Builder(組み立てを固定化したい貴方へ)

皆さんこんにちは お元気ですか?私も元気です。さて、今回はDesignPatternのBuilderを解説します Builderとは? 構築者という意味ですね。 今回の例でありますが、色んなパターンのピザを作りたいと思った時に色々なメソッドを呼びたいと そんな時にビルダ…

C++11 foreach 手軽にループを回したい貴方へ

C++

皆さんこんにちは お元気ですか。最近ようやく涼しそうなパスタがおいしそうな季節がやってまいりました。さて、本日はC++11の機能を紹介していこうと思う。 その中で、今日はforeachの紹介をしたい。 foreachって? 最初から最後まで全てをたどることができ…

C++ 乱数生成(rand関数・実際の分布はどうなのか)

C++

皆さんこんにちは お元気ですか?私は絵を描く練習をしようかなって考えてたりさて、本日は乱数生成についてプログラム組む時、乱数を生成する機会は沢山あると思います。 C++の乱数を見て行きましょう。 C++の乱数実行は? あまり使わないほうがいいとの評…

DesignPattern FactoryMethod

皆さんこんにちは お元気ですか?家熱すぎわろたみたいなハートを持っています。さて、本日はDesignPatternのFactoryMethodについて FactoryMethodとは? 工場クラスを通じて、オブジェクトを返します。 このことにより内部の実装は気にせず、外部からメンバ…

OpenCVの使い方(4) ヒストグラムの比較

皆さんこんにちは お元気ですか?私はげんきです。※6/14ソースコード修正 ※11/29 更に修正さて、本日はOpenCV Histogramの比較についてヒストグラムを比較してみたいと思ったことはありませんか? ほら、こんなヒストグラムあるんだけどーなんか比較できない…

DesignPattern AbstractFactory(部品を一纏めにしたい貴方へ)

皆さんこんにちは。 お元気ですか?私は元気です。さて、本日はDesignPatternのAbstractFactoryについて AbstractFactoryとは? 日本語訳をすると抽象的な工場ですね。 似たようなインスタンスの生成を一箇所に纏めることによってとっかえひっかえできるよう…

g++コンパイラclang 簡単なコマンドのまとめ

C++

皆さんこんにちわ お元気ですか?私は元気です。さて、今日はコンパイラについて さて、g++で動作するコンパイラ、すげぇ…すげぇ…面倒なコマンドが沢山。 自動的に全て行う簡単な方法 g++ temp.cpp これを実行し、./a.outとすると実行ができます。 前処理だ…

コンパイラの基本的な実行の流れ

C++

皆さんこんにちは お元気ですか?私はげんきです。さて、今日はコンパイラの一連の流れについてご紹介します。コンパイラは4つの段階に処理が別れており、これらが終了すると実行プログラムを生成します 前処理→コンパイル→アゼンブル→リンクの順番です。 …

OpenCVの使い方(3) カラーヒストグラムの生成

皆さんこんにちは お元気ですか。私は久々に疲れを取ってますさて、本日もOpencv 前回、ピクセルへのアクセスを行ったので、今回はヒストグラムを作りましょう カラーヒストグラム 画像の類似度を計測するのによく使われる尺度であります。 まぁ要は一つひと…

OpenCVの使い方(2) ピクセルへのアクセス方法(5種・data,point,at,pointer,iterator)+速度比較

皆さんこんにちは お元気ですか?私はプレゼン準備でひぃひぃいってます。さて、今回はOpenCVについてやります。 だいぶご無沙汰してますね。ところで、皆さんOpenCVを使っていて、ピクセルにアクセスしたいってことありませんでしたか?私は結構ありました…

OpenCVの使い方(1) インストールと画像の読み込みと動画再生

こんにちわ 今日はOpenCVの使い方を解説していきます。(C++)OpenCVとは画像処理をメインに行うライブラリですが、 それに付随してよく使われる機械学習のコードもあります。そんなOpenCVの解説です。まずはインストール。Homebrewを使います。楽です。 因…

C++ 速度比較(6) 宣言に関する内容、ループ内でのメンバ変数の使用

皆さんこんにちわ お元気ですか。私は…どうなんでしょう?さて、今回はC++速度検証第6回。 ループの中で変数を宣言して代入していく場合、そして、ループの外で変数を宣言し、変数を代入する方法。 また、メンバ変数をループで使った場合遅いというページを…

C++速度比較(5) iterator vs forなどによる総なめ

皆さんこんにちわ。 お元気ですか。私は元気ですよーSVMってNeuralNetworkより難しい。さて、STLのコンテナを使うとき、iteratorとforを使って全部に対して関数を実行することもあるでしょう。 しかしこの2つ違いはあるのでしょうか。調べてみました。 実験 …

C++速度比較(4) size関数について(vectorとかについてる関数)

皆さんこんにちわ お元気ですか?私は寒いです。さて、本日はsize()について C++でプログラム書くときarray1.size()とか書くことありませんか? 特にforの条件部分で私は多いです。 プログラムで書くとき.size()と書くのが良いのか、はたまた一時保存してお…

Boost::ublas(3) ゼロ行列、単位行列、対称行列、密行列、対角行列

皆さんこんにちわ。 お元気ですか?実は通常のmatrix以外にも色々なmatrixを構成することができます。 今回はそれらのご紹介です。今回紹介するのは以下の5種類。 ゼロ行列 zero_matrix ゼロ埋めされている行列 単位行列 identity_matrix 対角成分が1の行列…

C++ 速度比較(3) return で値を返すvs参照しているvectorに値を入れる。(参照返し?)

皆さんこんにちわ。 お元気ですか?冬になると電気代がマッハやばいです。さて、今回はreturnについて vector型ってreturnできますよね?でも、よく関数に参照引数を渡して、それに値を突っ込む形が多いです。今回は参照するのが速いのかどうかについて検証…

Boost::ublas(2) matrixやvectorのリサイズ、列・行だけ取り出す、転置行列を作る方法

皆さんこんにちわ お元気ですか?私は寒いです。さて今回はboost::ublas第二回 お題目はなんか行や列をかえたいとか列だけ取り出したいとか転置したいとかとかあると思います。今日はそれをやってみましょう。 ソースコード #include <iostream> #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/matrix.hpp> #</boost/numeric/ublas/matrix.hpp></boost/numeric/ublas/vector.hpp></iostream>…

C++ 速度比較(2) 参照渡し vs 値渡し vectorにおける比較

皆さんこんにちわ。 お元気ですか。あの、雪きつすぎて外に出る気がおきません。 今日中に書こうと思ったら思ったよりも時間がかかって翌日になっていたとさ。さて、本日はC++の速度比較 値渡しvs参照渡し。 vectorは値渡しと参照渡しどちらもできるのですが…

C++ math.h 主な関数の速度比較(exp,sin,sqrt,pow,log,acosh)

皆さんこんにちわ お元気ですか?私はしんどいです。さて、本日はCの数学関数を使います。 色々と計算に便利なこの関数ですが、速度はいかほどに… 実験 実験すること。 1000000000回計算するだけの簡単なお仕事です。 実験環境 OS:X 10.9.1 CPU:2.8GHz Intel…

clang のredefinition of のエラーコードについて

C++

皆さんこんにちわ お元気ですか。外は相変わらずの雪景色さて、clangで詰まったエラーがあったのでご紹介 redefinition of 'add' 先日、一度定義されていますと掲載しましたが、こんな状況でも出るようです。 C++ファイル diff.hpp #include <iostream> int diff(int a</iostream>…

C++コンパイラclangのエラーコード まとめ(Marvericksデフォルトのg++)

C++

皆さんこんにちわ お元気ですか?外は雪がつもってえらいこっちゃです。さて。本日はclangのコンパイルについて Mavericksには最初からclangが入っています。 g++ clang: error: no input files g++で打ったのにclangのエラーが出てます。ええ、g++の皮をか…

PythonとC++速度比較(1)配列っぽいものを作ろう。append,vector,array,matrix,list編

皆さんこんにちわ お元気ですか?私はお酒飲みたいです。Pythonで書いたコードがあるのですが、実行時間が遅すぎて結果がかえってこないのです。 このコードどうすれば速くなるかを考えました。Pythonの部分をC++で書き直すだけでも速くなるはず… C++とPytho…

Boost::ublas(1) 四則演算とmatrix,vector型のアクセスについて

皆さんこんにちわ。 お元気ですか?私はXORを学習するニューラルネットワークが完成して満足です。さて、本日はublasについて ublasとは行列演算を行うboostに付属しているライブラリです。 つまり、boostをインストールすれば使えます。行列演算が多くなる…

boost::python(6) pyublasを利用したnumpy.arrayとの連携方法

皆さんこんにちわ。 お元気ですか?私は眠いんです…。本日も相変わらずBoost::pythonについて 特にPythonの科学技術計算ライブラリnumpyのarray型を扱ってみたいと思います。 C++ #include <Python.h> #include <numpy/arrayobject.h> #include <boost/python.hpp> #include <pyublas/numpy.hpp> using namespace std; using names</pyublas/numpy.hpp></boost/python.hpp></numpy/arrayobject.h></python.h>…

Boost::python(5) pyublasのインストール

皆さんこんにちわ。 お元気ですか?私は焼きそばつくって満足しました。さて、本日はscipyをboost::pythonで使用する準備をしたいと思います。 boost::python とnumpy,scipyを互換するライブラリ、pyublasがあります。少々手こずったので、インストール方法…

Boost::python(4) クラスの継承と多重継承

こんにちわ 皆さんお元気ですか?私は金欠です。さて、今回もBoost::python。 どうやらもう4回目、今回はクラスの継承、多重継承についてやりましょう。さて、クラスの継承はこう書きます。 クラスの継承 C++ #include <boost/python.hpp> class Foo{ public: int temp; void v</boost/python.hpp>…

Boost::python(3) pythonの辞書型(dict)、listで返す方法

皆さんこんにちわ お元気ですか?さて、本日もBoostしようか。 本日はlistとdictについてさて、実はboost::pythonはvectorとかmapではなく、pythonの型に直して返すことができます。 こいつらです。 >>> a = [1,2,3,4] #list >>> b = {"foo","bar"} #diction…

boost::python(2) STLの活用 vectorとmap(Suiteも活用)

こんにちは 皆さんお元気ですか?私は面白い遊びを探しています。さて、先日に引き続きboost::pythonについて 本日はC++のSTLについて取り扱ってみたいと思います。さて、STLを使用する時に普通のものと違い少々めんどくさくなります。 通常の実装方法 C++ #…