2008年7月23日 (水)

相関係数の計算

2つの株価の相関係数を求めるために作成した、相関係数の関数についてのメモ。

static float  corr()
  {
   float[] x = new float[3];
   float[] y = new float[3];
   x[0] = 2;
   x[1] = 3;
   x[2] = 1;

   y[0] = 4;
   y[1] = 9;
   y[2] = 2;

   //平均
   float c = x[0]+x[1]+x[2];
   float d = y[0]+y[1]+y[2];
   c /= x.Length;
   d /= y.Length;

   //分散
   float bun_x = (x[0]-c)*(x[0]-c)+(x[1]-c)*(x[1]-c)+(x[2]-c)*(x[2]-c);
   float bun_y = (y[0]-d)*(y[0]-d)+(y[1]-d)*(y[1]-d)+(y[2]-d)*(y[2]-d);
   bun_x /= x.Length;
   bun_y /= y.Length;

   //標準偏差
   float hen_x = (float)Math.Sqrt(bun_x);
   float hen_y = (float)Math.Sqrt(bun_y);

   //共分散
   float cov = (x[0]-c)*(y[0]-d)+(x[1]-c)*(y[1]-d)+(x[2]-c)*(y[2]-d);
   cov /= x.Length;

   //相関係数
   float corr = cov/(hen_x*hen_y);

   return corr;
  }

単純に平均値→分散→標準偏差→共分散→相関係数 といった流れで計算。日経平均とある銘柄の株価の相関係数を計算し、相関関係を考えるには前日比を配列として格納してあげればいいと思う。

| | コメント (0) | トラックバック (1)

2008年6月 7日 (土)

C#での正規表現(改行コード除去) 簡易メモ

C#で用いる正規表現の簡単なメモ。

2つのテキストファイルを考えてみる。1つは改行を含まないもの、もう1つが改行を含むもの。例えばメモ帳を開いて、適当なHTMLタグを記述してみるとこの2つは次のような感じになる。

<html>
<head>
<title>test</title>
</head>
</html>

<html><head><title>test</title></head></html>

上はwindowsアクセサリのメモ帳で書いた場合には、"\r\n"といった改行コードが含まれている。matchを使って、<head>~</head>の内容を取得しようとした場合に上だとうまくいかなかった。

そこで、改行コードを取り除くためにReplaceメソッドを使う。

//上記のHTMLタグが書かれているファイルを読み込む
StreamReader sr = new StreamReader("test.txt");
string file = sr.ReadToEnd();

//改行コード除去
file = file.Replace("\r\n", "");

//Matchする箇所を取り出すプログラム

これを含んだプログラムを実行すると、どちらも<title>test</title>といった結果が得られると思う。

Yahooファイナンスにある任意の株価の時系列を取得するため、あれこれと考えたプログラムの一部が上のもの。DownloadFileメソッドを利用して取得したデータを読み込むと、文字化けを起こしてしまった。これは、上記のStreamReaderの部分を下のように変更してあげると文字化けを起こさずに、別のファイルとして保存することができた。

//日経平均株価(時系列)のURL
string url ="http://table.yahoo.co.jp/t?s=998407.o&g=d";
string fname = "test.txt";

//データ取得
WebClient wc = new WebClient();
wc.DownloadFile(url, fname);

StreamReader sr = new StreamReader("test.txt", Encoding.GetEncoding("euc-jp");

株価の時系列を取得することができると、日経平均と何かの銘柄との相関性を調べたり、gnuplotでチャートを描くことができたりと、いろんな可能性が増えますねぇ。

| | コメント (0) | トラックバック (1)

2008年6月 5日 (木)

自分の声を聞いて記憶できるか?

来月に国家試験、再来月に別の試験を控え、バイトでも新しいことを覚えないといけない。今そんな状況にいます。

出来れば、研究の勉強も進めたい。けれども一気にやろうとしてもうまくいきそうにもない。なので、簡単な実験として、携帯電話に自分の声を録音しそれを聞いて効率的に学習が可能なのかやってみようと思う。

まずは下準備。

使用する携帯電話はW54SAで、用いる機能は「Myボイスメモ」。これで録音するとQCPという拡張子でデータが保存される。調べてみると、音質はあまり良くないらしいがあくまでも実験なのでこれで十分。

ただ再生・変換がめんどい。方法としてはとりあえず、

の2つがある様子。

自分は後者を選択してみた。QCT Connectサイト右上にあるQCT ProductsからPureVoiceを選択。すると、PureVoiceを紹介するページに行くので、そこから右側にあるPureVoice Downloadsを選択肢、OSに合ったバージョンをダウンロードする。

ダウンロード・インストールが完了したら、携帯から録音したデータをパソコンに移し再生してみる。

QCP⇒WAVへの変換は、ソフトウェアを起動した画面で「File」→「Convert」をクリックする。そうすると、起動画面真ん中に表示されているデータ量が大きくなったり小さくなったりするので、変換されていることが確認できる。

保存するには、Convertをクリックした後に「Save」,「Save As」をクリックすれば良し。

これで大まかな下準備が完了。

あとは他のツールを使って、音声データを編集したりして自分にあった効率的な学習法を模索していくことになります。

| | コメント (0) | トラックバック (2)

2008年5月29日 (木)

2008年版 業界地図 

図解革命!業界地図最新ダイジェスト 2008年版 (2008)
高橋書店
売り上げランキング: 7542











書店で目に留まり、気になったので購入です。株式投資をしていて、いまいちどの業界でどの会社がトップに立っているのか、把握していなかったというのも購入の理由の一つ。



| | コメント (1) | トラックバック (0)

2008年5月26日 (月)

ランチャ作成 その2

ぼちぼちとランチャを引き続き作成中です。途中思うようにいかなく、モチベーションが下がったりしますが、そんなときは別のことをして気分を紛らわせてます。

そして、また作成中でのメモ。

Array.Copyについて。

まず2つの配列(a,b)を用意する。次に用意した配列に何かを入れる。そしてArray.Copyを使ってコピーするといった流れ。

string[] a = new string[3];
string[] b = new string[15];

a[0] = "a";
a[1] = "b";
a[2] = "c";

for(int i = 0; i < b.Length; i++) {
    b[i]= "test";
}

//aの配列をbにコピーする
Array.Copy(a, 0, 4, a.Length);

これを実行すると、以下のように出力される。

    Ws000006_2

Array.Copyメソッドは、

Array.Copy(Array, Array, int);
Array.Copy(Array, int, Array, int, int);

といった感じの引数を持っている。下の形を詳しく見てみると、

Array.Copy(
                 Array sourceArray,
                 int     sourceIndex,
                 Array destinationArray,
                 int     destinationIndex,
                 int     length
               );

いった内容。

| | コメント (0) | トラックバック (0)

2008年5月13日 (火)

C#(.NET Framework1.1) ランチャ作成 その1

タイトルそのまんまのアプリ作成その1として、簡単なメモ。

imageList,listViewなど色々用いて、「アイコン」+「ファイル名」と表現したいとき。例えばリストビューに、ファイル又はフォルダをDrag&Dropしてデータを得て表示する、という所はネット上にたくさん情報があるので比較的楽だった。

  Ws000001    Ws000000     

それが左。右のように、拡張子を含まないファイル名を取得する方法を見つけるのに苦労した。Drag&Dropによるファイル等のパスを取得するには、

string[] s = (string[]) e.data.GetData(DataFormats.FileDrop, false);

としてあげると、変数sにパスが入る。これを、

listView1.Items.Add(s[0], 0);

みたいな感じにすると、左のように表示されてしまいファイル名がわからなくなる。なので、右のように欲しいファイル名だけにするには、「using System.IO;」を頭で付け加えてやってから、次のように変更する。

listView1.Items.Add(Path.GetFileNameWithoutExtension(s[0]), 0);

こうすると、右のようにスッキリとした形で表示することができる。

| | コメント (0) | トラックバック (0)

2008年5月12日 (月)

Visual Studio.NET(VC++)で外部プログラム呼び出し

開発環境は、VisualStudio.NET 2003です。

これのVisual C++ Windowsフォームアプリケーション(.NET)で作成、そのメモ。

まず、プロジェクトの新規作成を選択し、上記のテンプレを適当な名前でプロジェクトを作成する。そうすると、Form1.h[デザイン]という画面が表れるので、これにボタンを貼り付ける。

デザイン画面にて、ボタンをダブルクリックすると、

private: System::Void button1_Click(System::Object *  sender, System::EventArgs *  e)
    {
   
    }

というコードがForm1.hに描かれる。外部プログラムを呼び出すには、ここに、

ProcessStartInfo * sInfo = new ProcessStartInfo("notepad.exe");
Process::Start(sInfo);

と追加すればよい。最初はShellExecute関数で実装しようと思っていたが、エラーを連発して断念。解決法が分からなかったので、.NET Framework クラスライブラリを使用。

| | コメント (0) | トラックバック (0)

2008年4月25日 (金)

WinShell 設定メモ

WindowsでTex環境を揃えたあとの、WinShellでの設定メモ。

インストール時に「Japanese」を選択すれば、メニューバーなどは日本語表示される。このときに、実際に新規ドキュメントを作成すると文字化けをするかもしれない。この場合では、メニューバーの「オプション」→「フォント」→「スクリプト」で日本語を選択すれば直るかもしれない。

次にTexプログラムの設定について。これは、メニューバー→「オプション」→「主なTexプログラムの設定」を選択し、以下のように設定する。

  • LaTex - platex - "%s.tex"
  • DVIView - ~\dviout.exe - "%s.dvi"
  • DVI -> PS - dvipsk - -D600 "%s.dvi"
  • GSView - ~\gsview\gsview32.exe - "%s.ps"
  • PDFLatex - dvipdfmx - "%s.dvi"
  • PDFView - (ビュアー) - "%s.pdf"

順番は、プログラム名 - exeファイル名 - コマンドライン。

| | コメント (0) | トラックバック (0)

2008年4月 9日 (水)

ThinkPad R61 メモリ増設 ‐メモ

面接の際に秋葉原のソフマップでメモリを購入したので、そのメモ。

手順はマニュアルを参照しました。

1  2

左はパームレストを開けた状態で、右は購入してきたメモリ。練習がてら、最初から挿されていたメモリを取り外してみた。これは、マニュアルに載ってる通りにやると、カチッという音がしてメモリが上に持ち上がるので、それを気を付けながら手前に引いて外してみました。

3  Neji

その後、増設するメモリをそこに挿す込み、空いてるところに元々のメモリを挿し込んで増設完了。右はパームレストを固定するネジだけど、なぜか一つ締まらなかったもの・・・。

4

増設後、パソコンを起動し確認してみるとちゃんと認識してくれているよう。

たぶん。

| | コメント (0) | トラックバック (0)

2008年3月 1日 (土)

買ったった

株取引で損失が出て、むしゃくしゃしたのでノートパソコン買ったった。

だいたい11万ぐらい。

   Lenovo

搭載されているメモリが少ないので、相性が良さそうなものを後で購入しようかと。とりあえず、これでデスクトップとノートのディスプレイ合わせて2つになったので、デュアルディスプレイを試してみた。

最初は結構戸惑ったけれども、便利かもしれない。

| | コメント (0) | トラックバック (0)

«NetBeans+J2ME