関数型プログラミング言語Haskell Part19
■ このスレッドは過去ログ倉庫に格納されています
0267237
2012/07/15(日) 23:00:10.71http://ideone.com/l7Ina に私のコードを貼り付けました。
そのまま ghci でロードして頂ければサンプルデータで実行できます。
任意長の元データ b とカーネルデータ k (|b| >= |k|)に対して、
>>237 のような演算を行う関数 calc を定義しています。
このコードの (\i -> kp (Z:.i) * bp (Z:.ic+i)) の辺りが何とも間の抜けた感じです。
配列に対してインデックスで要素単体を指定して演算しているのが、
なんていうか Haskell らしくないというか、気持ちが落ち着かないというか・・・
traverse 系関数ではこういうインデックス指定に対して特に最適化して作られていて、
この方法が最も効率がいいというのなら仕方ありませんが、
もっと効率よくて見やすいコードになるのなら嬉しいです。
ちなみに >>237 のような演算は、同じカーネルを対角線に階段状に並べたN重対角行列と、
元データのベクトルとの積の演算なので、hmatrix でやった方が速いかも知れませんね。
明日 hmatrix を入れて実検してみます。
■ このスレッドは過去ログ倉庫に格納されています