ハムスターに飼われる院生のブログ

自分用メモが中心のブログです。

既存クラスを呼び出すか継承クラスを呼び出すかif関数で選択し、仮想関数を実行

C++

既存クラスOperationManagerを継承したクラスMethod_Aがあるとする。 既存クラスを呼び出すか、継承したクラスを呼び出すか、メイン関数からifで選択するようにした時のコードは以下の通り。 int main() { bool keisyou= true; OperationManager *operation;…

RでX軸をデータ名にしつつ、誤差バーをプロットする方法

R

平均値をプロットし、標準偏差を誤差バーにする場合を考える。 例として以下のデータでプロットする。 means<-c(-0.9946,-0.9821,-0.9733,-0.9558) sds<-c(0.0080,0.0072,0.0143,0.0225)それぞれのデータ名をA,B,C,Dとしてx軸に名前を表示するため、以下のよ…

LNK2038の対処

C++

Visual Studio 2017 でDebugビルドはできるがReleaseビルドができず LNK2038 '_ITERATOR_DEBUG_LEVEL'の不一致が検出されました。値'2'が0の値'(ファイル名).obj'と一致しません。 とエラーが出た。これを解消した時の手順をメモしておく。プロジェクトのプ…

cpuの空きを確認してから処理を行うbatファイル

test.exe がコマンドライン引数 1 2 3 4 5 を取るとする。 この実行ファイルを最大で100回繰り返したいときに、 cpuの空きを確認して空きがあれば実行、空きがなければ600秒待機するバッチファイルを作成した。 今回はcpuが小数点切り捨て70%以下の使用率で…

バッチファイルのみを他のフォルダに移動させる

任意のバッチファイルを実行後に、 バッチファイルを作業用のディレクトリに置きっぱなしにしておくと 意図せずクリックして作業時間をロスすることがあった。 これを防ぐため、実行するバッチファイルの末尾に以下の文を加えた。 mkdir batfiles move *.bat…

一行ずつ読み込んだ内容を数値に変換する

R

長さの違うデータが複数列記述されているファイルをRで処理する。 今回は例として3行読み込む。 filename<-"text.txt" f<-file(filename,"r") for(i in 1:3){ a<-readLines(con=f,1) #一行ずつ読み込み a<-strsplit(a , ",") #カンマ区切り a<-unlist(a) #リ…

特定の箇所のみ出力するrubyプログラム

一つのファイルに複数の情報を書き込んでいる際に、以下のように取り出したい内容が区切られているとする。 <HOGE> 取り出したい内容 </endHOGE>この取り出したい内容を拾い出すプログラムを作成した。 ファイル名は入力で与えている。 file=open(ARGV[0]) lines=file.read()…

指定した文字列以降を出力するrubyプログラム

指定した文字列以降を出力するrubyプログラムを作成した。 a,b,c,d, ----------------------------- A,B,C,D,このようなファイルがあったとして、 ”-----------------------------”を含めてそれ以降を出力する。 読み込む対象のファイル名は引数で与える。 f…

vectorで指定した値を持つインデックスを複数返す

vec1の要素のうち、targetで指定した値を持つインデックスを複数返す関数を作成した。 vector<int> detectIndex(vector<double> vec1, double target) { vector<int> result; for (auto itr = vec1.begin(); itr != vec1.end(); ++itr) { if (*itr == target) result.push_back</int></double></int>…

バッチファイルでフォルダを作成してから計算実行

このようにフォルダ分けをして計算結果を書き出す場合を考える。 call test.exe >case1/condition1/output.txt call test.exe >case1/condition2/output.txt call test.exe >case1/condition3/output.txt この場合、case1/condition1等のフォルダが存在しな…

特定の数値が出現するまでRでデータを読み込む

R

タブ区切りのデータについて。 データが何行あるかわからない場合を考える。 *----------------------* 1 10 100 2 20 200 5 50 500 10 100 1000 *----------------------*このようなtxtファイルがあるとする。 read.table()で読み込むと *-----------------…

C++で複数行のデータを読み込んでひとつのベクトルに格納する

C++

改行を含むコンマ区切りのデータを一つのvectorに格納する場合。 fileの内容は以下の通りでintが6つである。 1,10,100, 2,20,200,#include <iostream> #include <string> #include <fstream> #include <sstream> using namespace std; class InputManager { private: public: void Get_TxtData(st</sstream></fstream></string></iostream>…

オブジェクトポインタを使用してクラスを切り替える

C++

OperationManagerを基本クラスとし、それに追加機能をつけるクラスAdditionalManagerを考える。 存在するクラスは以下の2つ。 ・OperationManager ・AdditionalManager(これはOperationManagerを継承している)この時両クラスには同名の関数virtual void fun…

コマンドライン引数をまとめて処理する関数の作成

C++

コマンドライン引数をまとめてベクトルに入れておけば、メイン関数をすっきりと書くことができる。 main関数では以下の処理を行う。 vector<string> input; for (int i = 1; i < argc; i++) input.push_back(argv[i]); この読み込んだinputを別のクラス内でstoiやsto</string>…

複数のクラスで同じインスタンスを使用する

C++

複数のクラスで共通のインスタンスを使用する方法 特にメルセンヌツイスターを使用している時によく使うので、メルセンヌツイスターを例に以下にコードを残す。 メイン関数とクラス(Class1)で共通のインスタンスを使用する例。main.cpp #include <iostream> #include "</iostream>…

除算時の丸め込み回避

C++

C++ にて、 int a=30; double y=1/a; cout<

直下のフォルダ内の特定のテキストを全て読み込むスクリプト

【フォルダの構成】 計算条件ごとにフォルダ分けした状態でそれぞれのフォルダにoutput1.txt~output10.txtまでが入っている状態 pathとしてフォルダ名を毎回入力する手間を省く目的で作成 for(j in 1:length(list.files())){ filepath<-list.files()[j] as.c…

下の階層のディレクトリで該当名のものをすべて削除するバッチファイル

@echo off @setlocal enabledelayedexpansion rem rem 以下の階層にあるTestFolderをすべて削除するバッチファイル rem For /r %%d In (TestFolder) Do Rmdir /s /q "%%d" tree /f pause exit コマンドプロンプトに直接入力する場合は For /r %d In (TestFol…

VisualStudio2017でGoogleTestを実行できるようにする

C++

VisualStudio2017でGoogleTestを実行するための環境設定について かなり手間取ったので結論を覚え書きしておく GoogleTestをダウンロードする ~/googletest/msvc/2010/gtest.slnを開き、ビルドする(出てきた選択肢にはOK) GoogleTestを導入したいプロジェ…

mapのキーにvectorを用いた場合のmapの挙動確認

C++

mapのkeyとしてvectorを用いた場合、vectorの0番目の要素の大きさでソートされることを確認した。 確認した際のサンプルコードは以下の通り。 int main() { map<vector<double>, int> test; vector<double> vec1; vec1.push_back(10.0); vec1.push_back(100); vector<double> vec2; vec2.pus</double></double></vector<double>…

フォルダ内にあるインプットファイル全てから計算条件を読み込んで実行するバッチファイル

定時デバッグ用に作成したバッチファイルを以下に示す。 以下の記事で示したバッチファイルの亜種となっている。 chicagopile1-75.hatenablog.com【実行時の状況】 ・test.exeは引数を2つとる実行ファイル ・インプットファイル全てはinput*.txtという名称で…

実行日をフォルダ名に持つフォルダ内に結果を出力させるbatファイル

表題の通りのbatファイルを作った。 基本的には以下の記事の亜種のbatファイルとなっている。 chicagopile1-75.hatenablog.com 【実行時の状況】 ・test.exeという実行ファイルは引数を2つとり、計算結果を標準出力してくる。 ・input.txtというファイル内に…

デバッグ時によく使う自作関数

C++の話。 EigenのVectorXdとMatrixXdをよく利用する。 格納されている中身を確認する際に 毎回for文をまわすことが面倒に感じる。 したがって、以下の関数を作成した。 void cout_eig(MatrixXd mat) { for (int i = 0; i < mat.rows(); i++) { for (int j =…

multimapの使い方

C++

以前、以下のリンクの記事にてmapの使用法を示した。 chicagopile1-75.hatenablog.commapでは、キーの値が重複した場合、値を複数保持できないという仕様になっている。 例えば、以下のような状態である。 int main(){ map<int, int> test; test.insert(std::make_pair</int,>…

シングルクリックでファイルを開く

マウスの使いすぎで右手を傷めたため、 ダブルクリックではなくシングルクリックでファイルを開くことができるよう設定した。 タイムロスの削減にもなればと思う。設定方法は以下の通り(windows7の場合)。・コントロールパネル→デスクトップのカスタマイズ→…

指数表記とsubset()の相性

R

Rで検定を行い、p値が0.05以下の行を抜き出す処理をしたときの話。 p値(result[,1]に格納されている)が指数表記のものについて、 subset(result,result[,1]<0.05) としたところ、指数表記の行が取り出せていなかった。 これに対応するため options(scipen=10…

Rのパッケージに関するエラー対応

R

DTというパッケージを使用しようとして library("DT") としたものの、 ’DT’という名前のパッケージはありません と言われてしまった。そのときは install.packages("DT") を実行することで解決した。 DT以外のパッケージの使用の場合も同様にすることができ…

複数のファイルから読み込んだ結果を重ねてプロットするスクリプト

Rで頻繁に作図をするという現状、 都度打ち込むよりは多少一般化したスクリプトを作っておいた方が楽そうだという動機を持ったので 以下のようなRスクリプトを作成した。以下に示す。 ここでは複数のファイル(output1.txt~outputN.txt)のうち、1列目のデータ…

スペース区切りで出力してしまったファイルをタブ区切りに直したいとき

表題のような困った状況になったときに。 複数のスペースによってデータを区切って出力してしまったが、タブ区切りのデータに直したい、という時に作成したrubyプログラムを以下に残す。 なお、以下のrubyプログラムの名称はtest.rbとした。 File.foreach(AR…

テキストファイルからコマンドライン引数を指定して実行し、はじめの引数ごとにフォルダ分けして出力するバッチファイル

exefile.exeという実行ファイルが6つのコマンドライン引数をとる状態での話。 このコマンドライン引数を変えて大量に計算したい場合、 インプットファイルの中に引数を記し、そこからコマンドライン引数を読み込んで実行することができる。 このためのバッチ…