scala

scalaの最適化オプション?

scalac -optimise xxx.scala

scalaで配列のランダムシャッフル c++の関数の利用

JNAを使ってc++のシャッフル関数と連携. c_shuff_test.scala import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.NativeLibrary; object c_shuff_test{ def main(args: Array[String]): Unit={ val lib=NativeLibrary.getInstance…

scalaからc++関数を使う

scalaからjnaでc++関数を使う。 少しはまった.ポイントは関数にextern "C" をつけること. C++では、関数のオーバーロード(多重定義)などが原因で 関数名で関数が特定できない(識別子がつくらしい)。そこで、C方式の関数名として宣言しておく. http://…

scalaとC言語で配列の値の1をたす,ポインタ渡しの例

cpp_test.scala import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.NativeLibrary; object cpp_test{ def main(args: Array[String]): Unit={ var a=Array(1.0,2.0,3.0); println("Input"); a.foreach{println} val lib=NativeLib…

scalaとcで内積

scalaからcの関数をよび内積を計算loop.c #include<stdio.h> #include<stdlib.h> #include<math.h> #include"loop.h" int loop2(double* v1, double* v2,int n){ double tmp=0; int i; for(i=0;i</math.h></stdlib.h></stdio.h>

scalaからCのプログラムを読みだす

(1)まず準備。 C言語のダイナミックリンクライブラリ(dll)を作る #include<stdio.h> void test_hello(char* v){ printf(v); } dll化する gcc -c test_hello.c gcc -shared -o test_hello.dll test_hello.o 実行用プログラム void main(){ test_hello("This is test</stdio.h>…

特定の値をすべてほかの値で置き換える

20を4に置き換える。 match が b match であり,b.match でないことに注意 scala> a res9: Array[Int] = Array(1, 20, 20, 30, 40, 50) scala> a.map{i=> i match{case 20 => 4;case _ => i;}}; res10: Array[Int] = Array(1, 4, 4, 30, 40, 50)

scalaで内積

var a=List(1,2,3,4); var v=List(2,3,4,5); a.zip(v).map{i=> i._1*i._2;}.sum res15: Int = 40

scalaで確率分布 正規分布(Normal Distribution)、ポアソン分布(Poisson Distribution)

import org.apache.commons.math3.distribution.NormalDistribution import org.apache.commons.math3.distribution.PoissonDistribution object test{ def main(args:Array[String])={ var norm=new NormalDistribution(1.0,0.5); println(norm.cumulativeP…

scalaでべき乗軸,1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200

import scala.collection.mutable.ArrayBuffer import scala.math._ object test5{ def main(args:Array[String]) ={ var a=new ArrayBuffer[Int]; Math.pow(10,3); (0 to 3).foreach{i=> (1 to 9).foreach{j=> a+=(j*(Math.pow(10,i))).toInt } } a+=10000 …

scalaでランク関数(順位づけ)

scalaでランク関数(順位づけ). (重複データはないとする) qq_rank=qq.map{a=> qq.filter(_>=a).length}

配列を要素とするMapに値をつめていく

配列を要素とするMapに値をつめていく。qqにb(1)をキーに配列としてつめる。 var qq=Map[String,ArrayBuffer[float]]() qq.update(b(1),qq.getOrElse(b(1),ArrayBuffer [Float]())+=n);

scalaでメモリ―オーバー:scalaの java.lang.OutOfMemoryError: Java heap space の対処法:

scalaでメモリ―オーバー; scalaのjava.lang.OutOfMemoryError: Java heap space の対処法: ヒープの最大値をオプションで指定 scala -J-Xmx1024m xxxx.scala scala -J-Dfile.encoding=UTF-8 -J-Xmx1500m -deprecation xxxx.scala http://www.javaroad.jp/f…

scalaでファイル出力

scalaでファイル出力 import java.io.PrintWriter object test{ def main(args: Array[String]){ var p=new PrintWriter("test.txt") p.println("hello\n"); p.println("java\n") p.flush p.close } }

scalaで追加可能な配列

ArrayBufferクラスを用いる. import scala.collection.mutable.ArrayBuffer object ArrayTest{ def main(args:Array[String])={ var a=new ArrayBuffer[Double] a.append(1.0) a.append(2.0) a.append(7.0) //a+=(7.0)も同じ! println(a(1)); a.foreach{pr…

scalaとRの速度比較

タスク: ランダムウォークを2つ発生させて,それらをいくつかの時間スケールでbox平均をとり, 各時間スケールでグレンジャー因果検定をし,すべての時間スケールでもっとも小さい値を調べる. 上記を100回繰り返す. 計測結果 R 369.96秒 scala 6.655…

scalaでファイルの内容一括読み込みと表示

scalaでファイルの内容一括読み込みと表示 var text1=Source.fromFile("text1.txt").getLines.toArray Source.fromFile("text2.txt").getLines.foreach{println} Source.fromFile("text3.txt","utf-8").getLines.toArray.map{b=>| b.split("\t")(4).toDouble…

scalaのmatchで異常値処理

処理結果が-1の場合は0を返す。それ以外は値を2倍して5をたす. http://xawa99.blogspot.jp/2012/09/Scala-MatchBasic.html var a=-1 var b=(2*a+5).match{case -1=>0; case other => other}

scalaで配列を文字列として結合、join: mkString関数

scalaでrubyのjoin的なものを書く場合はmkString Array(1,2,3,4).mkString(",")

scalaで単位根検定 unit root test (Phillips-Perron Tests in scala)

Scalaで単位根検定 unit root test (Phillips-Perron Tests in scala) RのPP.testをscalaに翻訳 import scala.math._ import org.apache.commons.math3.stat.correlation.SpearmansCorrelation; import org.apache.commons.math3.stat.regression.OLSMultipl…

scalaで移動ボックス平均

scalaで移動ボックス平均 object test{ def box_mean(x:List[Double],n:Int=2):List[Double]={ var y=List[Double](); var k:Int=0; var nn=n-1; var sum=0.0; x.foreach{ a => k match{ case k if k%n==n-1 => sum=sum+a/n;y=y::sum; sum=0; case _ => sum=…

scalaでタブ区切りファイルから読み取って順位相関を求める

入力 $ cat test1.txt abc xxx 11 efg yyy 23 hij zzz 33 lmk qqq 41.3 $ cat test2.txt abc xxx 11 efg yyy 39 hij zzz 22 lmk qqq 17 プログラム import scala.io.Source import org.apache.commons.math3.stat.correlation.SpearmansCorrelation; object …

scalaでファイルからの読みこみ

例1) 基本よみとって出力 import scala.io.Source object test{ def main(args: Array[String]){ var source =Source.fromFile("test.txt","utf-8") val lines=source.getLines var a1: String =""; var k=0; lines.foreach{println(_);} } } foreachの- …

vimにscalaをハイライトする(色つきにする)

http://sourceforge.jp/projects/milm-search/lists/archive/public/2012-April/000174.html がわかりやすい。 mkdir -p ~/.vim/{ftdetect,indent,syntax} で、できた各フォルダに それぞれのフォルダの http://lampsvn.epfl.ch/svn-repos/scala/scala-tool-…

scalaで順位相関を計算

関数などはjavaで順位相関を参照 http://d.hatena.ne.jp/arupaka-_-arupaka/20130218/1361176768 import org.apache.commons.math3.stat.correlation.SpearmansCorrelation; object test6{ def main(args: Array[String]){ val data1=Array(20,17,30,42.3,17…

cygwinでApache Commons のCommons Mathの利用

Commons Mathはjavaの準正規ライブラリ的なのもの数学ライブラリ 統計計算などいろいろできて便利。ライブラリできること http://ja.wikipedia.org/wiki/Apache_Commons_Math 公式 http://commons.apache.org/導入は http://wiki.unfindable.net/webbook2/in…

cygwinにscalaの導入

(1)まず、ダウンロード http://www.scala-lang.org/downloads (2)次に、解凍 tar zxvf scala-2.9.0.1.tgz .basrcに以下を追加。 (ホームに展開した場合) export SCALA_HOME=~/scala-2.10.0 export PATH=$PATH:$SCALA_HOME/bin https://sites.google.com/si…