[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 11:17 / Filesize : 345 KB / Number-of Response : 955
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

データ解析ツールoctaveを語ろう



1 名前:名無しさん@お腹いっぱい。 [04/06/01 00:13]
知る人ぞ知る強力なデータ解析ツール octave ...

unixを科学研究で使っている香具師には非常に心強い味方のはずだ。

matlab互換を主張しながら、微妙にバージョンアップを続ける
octaveについて語ろう。



687 名前:octave for windowsメモの筆者 [2009/01/08(木) 19:36:22 ]
[v, ier, nfun, err] = quad (f, a, b, tol, sing)

Quadpackという積分パッケージに収録された適応的自動積分の関数。
第1引数は,被積分関数の名前で関数は,
y = f (x)
の形を持ち,xとyは、スカラーである。第2,第3引数は,積分範囲であり,−無限大や+無限大を片側または両方に指定できる。Octaveで無限大は,infまたはInfであらわす。
第4引数のtol は,ベクトルであり,第一要素は,要求したい精度の絶対値である。第二要素は,相対許容度である。
第5引数のsingは,ベクトルで被積分関数が特異点となる独立変数の値からなり,必要に応じて指定する。
第4,第5引数は,オプション引数なので省略は可能である。
左辺にvは,積分結果の値(関数の返り値)。ierはエラーコードで0は,積分の成功を意味する。nfunは関数の評価回数でと積分の困難さの指標になる。Errは,積分結果の評価誤差である。



688 名前:octave for windowsメモの筆者 [2009/01/08(木) 19:37:13 ]
octave> format long
octave> function y=f(x);y=1./sqrt(1-x.^2);end;
octave> [v, ier, nfun, err] = quad (@f,0,1)
v = 1.57079632679489
ier = 0
nfun = 315
err = 5.44135847491134e-011
octave> pi/2
ans = 1.57079632679490



689 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 03:56:42 ]
『octave for windowsメモの筆者』さんすごい!素敵です!

690 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 16:31:09 ]
>>683ですが、貼ってくれた方ありがとうございます!

691 名前:octave for windowsメモの筆者 [2009/01/09(金) 16:57:46 ]
>>689 >>690

大学の講義で使っている資料の一部を貼りました。
著作権の問題があり公開はしていませんが,
著作権問題がない部分については公開したほうがいいですかね。

ちょっと手間がかかるので要望あればぼちぼちやります。




692 名前:名無しさん@お腹いっぱい。 [2009/01/16(金) 16:35:33 ]
大学の宿題で「観測値と予測値をプロットするoctaveのプログラムを示しなさい。」
っていう問題が出たんですけど授業を聞いてないボクにはさっぱりです・・・。。
誰か教えてくれませんか?

693 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/16(金) 16:52:59 ]
ノート買えばいいじゃん

694 名前:octave for windowsメモの筆者 [2009/01/16(金) 18:26:40 ]
Octave 3.0.4のテストリリースのソースのリリースがありました。
しばらく,すれば3.0.4が出ることになります。

ttp://www.nabble.com/3.0.4-RC1-to21495212.html

695 名前:octave for windowsメモの筆者 [2009/01/16(金) 18:39:20 ]
>>692 まあ,>>693さんがいっているように授業受けた人に聞きましょう。

↓に私の講義資料で著作権に関係のない部分をのせといたからこれでも読んで勉強しなさい。

ttp://www.tatsuromatsuoka.com/octave/jpn/08CompAlgo_02.pdf



696 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/16(金) 22:36:07 ]
予測値ってのはもう用意されてるのかね
予測手法も適切に選択するまでが課題だったら随分大雑把で困難な宿題だ

697 名前:名無しさん@お腹いっぱい。 [2009/01/17(土) 03:41:12 ]
すいません。
勉強します・・・。

698 名前:名無しさん@お腹いっぱい。 [2009/01/26(月) 02:16:03 ]
質問させてください。

cos(pi*90/180)

を実行すると

6.1232e-17

というネイピア数で表示されてしまうのですが、これを0と表示させるにはどうすれば良いのでしょうか?

699 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 08:55:39 ]
つ round

700 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 10:33:35 ]
ところでネイピア数は0.271828...e-1だが?

701 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 10:38:31 ]
じゃない、0.271828...e1 だ

というか質問の意味がいまわかった。

そのeはネイピア数じゃなくて、浮動小数点数の10のべき乗表記で、
6.1232 × 10 ^ -17
じゃまいか?

702 名前:名無しさん@お腹いっぱい。 [2009/01/26(月) 13:03:46 ]
>>699

roundで丸めるのではなく、不動小数点の10のベキ乗表記を小数点第何位までにするかという設定(要するに0の極限値の設定方法)があった気がしたので、そのやり方がわからないのです。

>>701

ネイピア数の定義がよくわかってなくてすみませんでした。
おっしゃるとおり6.1232 × 10 ^ -17です。

703 名前:octave for windowsメモの筆者 [2009/01/26(月) 19:31:40 ]
octave3.0.4のソースのRC2が出ました。

ttp://www-old.cae.wisc.edu/pipermail/octave-maintainers/2009-January/010310.html

octave3.0.4ももうじきです。
一応3.0シリーズのラストと位置づけられているようで,
octave 3.2シリーズの準備がoctave 3.1で行われています。

704 名前:octave for windowsメモの筆者 [2009/01/27(火) 08:36:09 ]
>>703
しかし,3.0になるときも,次は3.0とでながらかなり細かいバージョンアップを続けた経緯があるのでどうなるかは。分かりませんが。

705 名前:octave for windowsメモの筆者 [2009/01/28(水) 07:54:39 ]
cygwin版のoctave-3.0.3がでました。ただし,パッケージングミスがあり,
mkoctfileが動きません。/usr/lib/octaveのlibctave.dll.a(oが抜けている)
をliboctave.dll.aにすれば動きました。報告をして,Macroさんが確認された
ので数日中にはfixされるでしょう。



706 名前:名無しさん@お腹いっぱい。 [2009/02/01(日) 00:21:14 ]
output_precision=16って入力して表示桁数を変えようと思ったら,
output_precision is no longer a built-in variable
と出ました。
その後output_precition=16となりましたが数値の表示桁数が変わりませんでした。
どうすればよいのでしょうか

707 名前:octave for windowsの筆者 [2009/02/01(日) 18:03:15 ]
>>706
output_precision(16)としてください。octaveはver3から殆この手のものは=ではなくて、()で設定します。

708 名前:octave for windowsの筆者 [2009/02/01(日) 18:05:12 ]
>>706
output_precision(16)としてください。octaveはver3から殆この手のものは=ではなくて、()で設定します。


709 名前:octave for windowsの筆者 [2009/02/01(日) 18:05:36 ]
>>706
output_precision(16)としてください。octaveはver3から殆この手のものは=ではなくて、()で設定します。


710 名前:octave for windowsの筆者 [2009/02/01(日) 18:06:06 ]
>>706
output_precision(16)としてください。octaveはver3から殆この手のものは=ではなくて、()で設定します。


711 名前:octave for windowsの筆者 [2009/02/01(日) 18:08:53 ]
携帯から書込みしたら重複投稿してしまいました。ごめんなさい。m(_ _)m

712 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 17:07:41 ]
octaveでシミュレーションをやっているんですがどうしても下のようなエラーが出てしまいます
先生や先輩に聞いてもなぜかよくわからないというしまつ・・・orz
どなたか教えていただけないでしょうか?よろしくお願いします

octave:2> test2
error: invalid column index = 2001
error: evaluating binary operator `+' near line 72, column 28
error: evaluating assignment expression near line 72, column 17
error: evaluating for command near line 67, column 1
error: near line 73 of file `/home/soturon/test2.m'


ソース→www.uploda.org/uporg1984631.tex.html

713 名前:octave for windowsメモの筆者 [2009/02/03(火) 10:48:16 ]
712 ソースの場所に行ってみましたが見れませんでした^^;

714 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 10:54:34 ]
めでたしめでたし

715 名前:712 mailto:sage [2009/02/03(火) 11:36:10 ]
すいませんでした!
次こそ大丈夫なはずです

ソース→ultraup.net/man/src/u_man2312.zip.html
パス:test



716 名前:名無しさん@お腹いっぱい。 [2009/02/03(火) 12:25:39 ]
>>715 Get Files Thank youとでますが,どこに落ちたかわからん。
サイトがサイトだけに,落ちないのかも,octave for windowsメモで
Googleれば私のサイトは見つかるのでそこのアドレスに添付で
送ってください。



717 名前:名無しさん@お腹いっぱい。 [2009/02/03(火) 12:26:31 ]
>>715 Get Files Thank youとでますが,どこに落ちたかわからん。
サイトがサイトだけに,落ちないのかも,octave for windowsメモで
Googleれば私のサイトは見つかるのでそこのメアドに添付で
送ってください。



718 名前:octave for windowsメモの筆者 [2009/02/03(火) 12:28:23 ]
>>716
m(__)m
そこのアドレス==>そこに記載のメールアドレス 

719 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 13:32:15 ]
メール欄にsageと入れよう!

720 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 13:40:12 ]
>>719 入れましたがどのような意味で? おじさんはワカラナイ??

721 名前:712 mailto:sage [2009/02/03(火) 13:50:48 ]
たびたび申し訳ないです><
メールで添付しときました!よろしくです

つーかアップローダーはどこがいいんだろ・・・
うpろだとか有名なとこはすぐ消えちゃうし

722 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:06:50 ]
>>721
メールとどきましたこれから見ます。

Uploaderではなく,Yahooのアカウントをお持ちなら,YahooのGeocitiesをフリーで
広告付きだけど50Mbyteのweb spaceを借りれますよ。
私は,自分のドメインと1Gbyteのスペースと持ちたいから
有料の契約してますが,普段使う分には50Mbyteあればいいでしょう。

723 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 14:13:21 ]
>>722
Geocities?ブリーフケースのこと??

724 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 14:15:17 ]
>>720
メール欄にsageと入れると書き込みをしてもスレッド一覧の最上位にいちいち浮上しません。
sageと入れないと一部の人からくどく思われる場合がありますので、普通はsageと入れます。
ちなみにsageは日本語の「下げ」をローマ字で書いたものです。他言語のsageの意味はありません。

725 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:21:16 ]
>>724 m(__)m ありがとうございます。



726 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:22:03 ]
>>724 m(__)m ありがとうございます。

727 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:36:30 ]
>>712 error: invalid column index = 2001ですね。

66行目 b(:,1)=[0;0];によって
octave:3> size(b)
ans 2 1
で1行2列の行列になってしまうわけです。

66行目 b=zeros(2,2001);
とすれば大丈夫です。
しかし,For Loopの塊ですね。
octaveでは,遅くなりますね。
漸化式likeなので
スパース行列を使えば高速化できるかも知れませんね。
ttp://www.nuce.nagoya-u.ac.jp/e8/Matsuoka/07OctaveNum/07OctaveNum.html
偏微分方程式なのでまともにやったら2重ループなのですが,遅くなるので,
漸化式を係数行列にしてスパースを使って高速化してます。

古い資料なので,octaveのバージョンが古いですが,基本は同じから
参考にしてください。
でもいまのままでも,答えは少し待てば出るので,まあ,
現状でいいかもしれませんがこういうテクニックも
あることもしっておくといいですよ。



728 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:41:57 ]
>>723 ブリーフケースではありません。Webをおけるスペースです。
まあ,Yahooにいってみてください。
webがおけるのでファイルもおけて,
<html>
<a href='test2.m'>test2.m</a>
</html>
とでもして,index.htmlをつくり同じフォルダーに
test2.mをいれとけばいいです。



729 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 14:48:34 ]
日本のyahooの利用規約では公開目的ではなく単にファイルを置くだけなのは禁止されているはず。
国内で利用するんだったらwww.axfc.net/uploader/が良いかもしれないね。
流れてしまう速度はそんなに速くないはずだから。

730 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 14:48:32 ]
>>727 おっとこの講義資料の最後の回のものです。



731 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 14:55:26 ]
ほんとループが長い!まだ回ってる・・・

>>728,>>729
つまりヤッホーのほうは利用しないで>>729のほうがいいってことですかね??
なにはともあれありがとうございます

>>730
是非拝見させていただきます

732 名前:octave for windowsメモの筆者 mailto:sage [2009/02/03(火) 15:07:17 ]
>>729 あっとそうでしたね。

<html>
<body>
<P>数値計算ソフトのソースの例(octave)
<a href='test2.m'>test2.m</a>
</body>
</html>

とでもしとかなきゃだめでしたね。
こうすれば,一応公開目的なのでおけますよね。
ただし,パスワードがかけられませんからね。
まあ,見られてもいい(つまり公開)であればいいのですよね。



733 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 15:14:49 ]
グラフを印刷する時、軸のラベルの文字の大きさを変えるのはどうするんですか?

print "hoge.eps" -deps -color -F:20

ってやると、目盛の数字は大きくなるけど、ラベルは小さい文字のままになりま
す。




734 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 16:20:56 ]
>>733
xlabel('{\fontsize{25} x}');

735 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 16:31:14 ]
使ってるプロットツールによると思うんだけど
文字はそのままでグラフを小さく出力すると印刷時には相対的に文字が大きくなる
例えば俺はgnuplot使ってるから
__gnuplot_set__ size 0.4 0.4;
とかやって全体的に文字サイズを変えてしまうのはどうだろう



736 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 16:40:56 ]
__gnuplot_set__ size 0.4 0.4;
この設定は3.0からは使えません。

ttp://www.gnu.org/software/octave/NEWS-3.The following plot commands are now considered obsolete and will be removed from a future version of Octave:

__gnuplot_set__
__gnuplot_show__
__gnuplot_plot__
__gnuplot_splot__
__gnuplot_replot__
Additionally, these functions no longer have any effect on plots created with the Matlab-style plot commands (plot, line, mesh, semilogx, etc.).html より


The following plot commands are now considered obsolete and will be removed from a future version of Octave:
__gnuplot_set__
__gnuplot_show__
__gnuplot_plot__
__gnuplot_splot__
__gnuplot_replot__
Additionally, these functions no longer have any effect on plots created with the Matlab-style plot commands (plot, line, mesh, semilogx, etc.).


737 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 16:49:14 ]
>>736 すいません。m(__)m。また,確認ミス。
とろろで「この設定は3.0からは使えません。」は使えませんはうそで,
正しくは,plot関数などによるplotには影響せず,__gnuplot_set__などは
あくまでも,別のルーチンでgnuplotのコマンドをダイレクトに使用する描画
にのみ影響する。

が正しいです。

といいのは,octaveの次のバージョンから独自のgraphicsエンジンを
使うという構想があり,このようのgnuplotの直接命令は,plotなどの
関数に影響を与えないように変更されています。


738 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 17:27:26 ]
今プログラムを作ってるんですが下のようなエラーがどうしても消えません
どこがおかしいのでしょうか?

error: invalid column index = 0
error: evaluating binary operator `*' near line 35, column 14
error: evaluating binary operator `+' near line 35, column 12
error: evaluating assignment expression near line 35, column 4
error: evaluating for command near line 33, column 2
error: evaluating for command near line 29, column 1
error: near line 42 of file `/home/tse550u/soturon/ndynamicsg.m'


ソース:www1.axfc.net/uploader/He/so/190986


739 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 17:29:18 ]
すいません、>>738のやつパスはdwです

740 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 17:35:28 ]
新しいOctave入ってるPCで見てみたらマジだ
昔gset sizeでやってた頃に「これは使えなくなるから__gnuplot_set__ でやれ」
ってOctaveに怒られた時からいつかこうなるとは思ってたけど

741 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 18:00:14 ]
>>738
error: invalid column index = 0
が怪しい。行列やベクトルは最初に現れたsizeで初期化されますから,
sizeを指定したいときは,
A=zeros(N,M);
などであらかじめ指定してください。



742 名前:octave for windowsメモの筆者 mailto:sage [2009/02/04(水) 18:06:08 ]
>>740
今は,JhandleというMATLABそっくりな図を描くグラフィックバックエンドも
ありますしね。MATLAB互換路線になっていますから,まあ仕方ないでしょう。
私は,データ吐き出して,
gnuplotで直接図描きますから関係あまりないのですが^^;。

ところで,jhandleは,epsはファイル形式は,postscriptのみだったと
思います。
emfなどはpstoeditをつかって変換するしかないでしょう。

743 名前:octave for windowsメモの筆者 mailto:sage [2009/02/05(木) 09:44:33 ]
>>741 error: invalid column index = 0
おっと octaveはindexが1から始まるからでたエラーですねm(__)m。

744 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 18:07:53 ]
>>734-737 ありがとうございました。

自前のグラフィックスですかあ。私はgnuplotが結構好きなんで、微妙だなあ。
なんかOctave全体が重くなるのもいやだし。

745 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 10:43:06 ]
筆者さん、Octaveの授業もやってるんですね。わたしも筆者さんと同じ分野の人
間です。授業でOctave使おうとしたことがあるんですが、他の教員から「そんな
ブラックボックス使わせても教育にならん」と反対されました。かといって、現
行の授業でやってるようにC言語だと、病的な文法の瑣末なところで引っ掛る学生
がいっぱいいて、シミュレーションそのものを体感させるところまで行かないん
ですよね。

"プログラミング演習"の例題をOctaveで解かせるのは、研究室の学生にさせたこ
とがあります。"プログラミング演習"は過去におそらく3種類出版されているかと
思いますが、わたしは80 年代末に出たBasic版が一番のお気に入りでした。基本
算法の解説が一番詳しかったように記憶しています。現在はFORTRAN版もBasic版
も入手困難なようですね。FORTRAN版は手元にあるんですが、BASIC版はどっか行っ
ちゃいましたorz。今出まわってる改訂版は、うーん、解説は適当だし、Cと
FORTRAN両方のコード載せるのも場所の無駄だし、おまけに今時FORTRAN77だし。







746 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 11:12:37 ]
いきなりOctaveやらせると感動がないじゃん
「スゲーこの言語スゲー!!俺こんなに手抜いちゃって良いの?」
っていう感じで

747 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 13:12:13 ]
FORTRANでもいいんじゃね

748 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 13:26:18 ]
Matlab/Octaveの醍醐味は初級プログラミングのレベルではなくて
普通にループを回すと何時間も何日もかかるループ処理が
行列演算で1発で出るという所なので
Excelで済む程度のデータなら必要無いでしょうね

逆に例えばモンテカルロ計算なんかだと、
一般的なプログラムではループ10万回ぐらい回して
そのループの中で乱数を発生させて、関数に入れて結果を見る事になりますが

Matlab/Octaveでは最初に、10万個の乱数配列を作り
行列演算化した関数に入れて1発で結果が出るみたいな感じなので
発想を根本的に変えないといけません

749 名前:octave for windowsメモの筆者 mailto:sage [2009/02/06(金) 18:05:40 ]
>>748
そうですね。いかに,行列で問題を記述するかにかかってて,
偏微分の差分法の陰解法では良くガウスザイデル法とかつかいますが,
Octaveなら行列で方程式書いて左除算で済ませる。

係数行列は疎行列だからsparseを使って高速化するとか
発想が違いますよね。

まあ,ブラックボックスっいう方いますが,硬い微分方程式なんぞ
ルンゲクッタで解こうとすると大変で,lsode使うとあっという間に
解けますよね。

適応的自動積分でも同じだとおもいます。

シンプソン公式を自分でCで書いて使うような時代ではないと思ってます。

ブラップボックスでもいいから,数値計算ができることの意味を分からせる
のが大事だとおもいます。



750 名前:octave for windowsメモの筆者 mailto:sage [2009/02/10(火) 09:42:13 ]
開発版octave 3.1.52がでました。
ttp://www.nabble.com/Octave-3.1.52-available-for-ftp-to21923205.html#a21923205

Octaveの次のMajor Version Upはver 3.2であり,octave-3.1.xxは開発版です。
その3.1.52がでました。

gnuplotは一応defaultのgraphic backendでopenglによるgraphic backend
を機能させるためにはいろいろライブラリィが必要なようです。

詳しくは以下を
ttp://www.nabble.com/Octave-3.1.52-available-for-ftp-to21923205.html#a21923205



751 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 11:39:01 ]
そういえば新パソにFreeBSD7.1を入れて、
pkg_add -vr octave-devel
とインストールしたら
GNU Octave, version 3.1.51
でした。leasqrが入って無いのでoctave-forge-optimを入れてないような気がする。
バージョンごとに何が良くなったのか、見えにくいのが何とも…

そういえば、何語なのかわからないけど(チェコ語?)
Octave/Matlabのグラフィックスの例題があります
enacit1.epfl.ch/cours_matlab/graphiques.html
gnuplotは置いておいて、jhandleならかなりMatlabに近い事が出来ました

752 名前:octave for windowsメモの筆者 mailto:sage [2009/02/10(火) 14:57:02 ]
>>751 3.1.xx はdevelopment branchなので,octave-forgeは多分
自分でpkg installで行う必要があると思います。
しかも,octave-forgeは3.0.x用に作られているので結構苦労する可能性は
あると思います。

一般的なものは3.0.xxです。現在3.0.3が,最新版で3.0.4はもうすぐ出るのだと
思います。

(独り言)3.0.4RC3が出てからだいぶたつけど,いつになったら3.0.4の
正式リリース出るんだろう。



753 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 15:52:50 ]
>>752
その後に、octave-forge-optimを入れたらOctave 3.0.2に上書きされました

754 名前:octave for windowsメモの筆者 mailto:sage [2009/02/12(木) 07:59:06 ]
>>753 3.0.2でいいと思いますよ。

755 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 23:15:47 ]
ここを見て気になったので試してみました
ttp://hiyokoz.blogspot.com/2008/04/octave.html
ベンチの内容は
n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6
だけ
内容は2000の大きさの乱数配列を2個用意してベクトル積するだけです

手持ちの機種で比べると
Intel Core2Duo 2.1GHz, WinXP
 MSVC, Octave 3.0.1  2.05 GFLOPS 
 Cygwin, Octave 3.0.3  0.99 GFLOPS
Intel Pentium M 1.6GHz, WinXP
 MSVC, Octave 3.0.0  0.81 GFLOPS 
 Cygwin, Octave 3.0.3  0.18 GFLOPS
Intel Atom N270 1.6GHz, FreeBSD 7.1
 FreeBSD Octave 3.0.2 0.17 GFLOPS

PenMとAtomマシンに対してCで書かれた一般的なベンチ(Flops-2.0)で試すと
どちらも0.18GFlopsなので、同じクロックのPenMとAtomは同じ程度の
浮動小数点演算能力を持っていると考えられます。

問題はそのページに載ってる
MacBook (Core Duo 1.83 GHz): 約 3 Gflops
iMac (Core 2 Duo 2.4 GHz): 約 12.5 Gflops
Mac Pro (Xeon 3 GHz クアッドコア×2): 約 50 Gflops

という結果です。私の結果では Core2Duo 2.1GHz はMSVC版でも2GFLOPSでしたが
iMacの結果は2.4GHzとほぼクロックが同じにもかかわらず12.5GFLOPという
圧倒的なパフォーマンスです。Octaveを使うのならMacで決まりでしょうか



756 名前:octave for windowsの筆者 mailto:sage [2009/02/15(日) 07:06:09 ]
>>755

そうですか。ところでMSVC版はsse2でしょうか。Genericでしょうか?。

GenericだとATLAS使わないので。

MacOSはunixというのもあるかもしれません。


757 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 09:48:41 ]
>>756
それはもちろん、PenMはSSE2、Core2DuoはSSE3でインストールしてます
ATLASを使っても、この程度という事はロハで出来る範囲はこの程度なのでしょう

その元のブログには
>g95はOpenMPに対応していないが,アクティビティモニタを見るとCPUは二つとも動いているので,
>スレッド化されているようだ.おそらく,Mac OS XのAccelerate.frameworkに含まれている
>BLAS/LAPACKが呼ばれていて,Fortranコンパイラは無関係だと思われる.

と書いてありますから、ATLASとAccelerate.frameworkの差だと思われます
Windowsで同様の事は出来ないのか?というと一応MKLがあります
ttp://sourceforge.jp/magazine/08/12/24/123237/2
>今回使用したテストプログラムは500×500の行列同士の乗算を100回繰り返すというもの
>MKL    1.903秒
>ATLAS  3.895秒
>BLAS  16.120秒

マルチスレッドが効き2コア演算が有効になるためATLASに比べて約半分の時間で計算出来ますが
恐らく「GNU」Octaveで使うのは無理でしょう。
なので、値段もさして変わらないのならMacを選んじゃった方がいい可能性もあります。

758 名前:octave for windowsの筆者 mailto:sage [2009/02/15(日) 17:12:20 ]
>>757
Accelator.frameworkのページみました。

なるほど、こりゃMacのほうがいいですね。
今度、買うならMacにしよう。

ありがとうございますm(__)m


759 名前:octave for windowsの筆者 mailto:sage [2009/02/15(日) 20:12:45 ]
良く見るとCore2Duo用にのATLASも最適化出来るようですね。

MSVC版やMinGW版は、これは使っていないでしょうね。

でも、これを使ってもMacには叶わないでしょうね。

でも、差がどれくらいになるかは興味はありますね。

しかし、使おうにもかなりビルド大変ですしね。

私はCore2Duoマシン持ってないからなんともできないですが^^;


760 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 21:20:04 ]
>>540
を見ると、
MATLABはMSVC版の3.5倍ぐらい速いようなので(MATLABはマルチスレッドに対応してる)
MSVCで2GFLOPSなら、MATLABで7GFLOPSぐらい出そうですが
Macはその倍近い12GFLOPSですし
MATLABの維持費を考えると、35万円ぐらいの8コアのMacPro買って
実効50GFLOPSもいいかもしれません

761 名前:名無しさん@お腹いっぱい。 [2009/02/16(月) 00:38:19 ]
質問です。

やりたいことは、x=1:50; y=1:50; として、
その各々の格子点からcを作成して、 c = [ 1 ; x0; y0; ];
(x0, y0は格子点によって値が各々1〜50に変わります。)
ある行列Aとの積の値 val = A * c; を求めて、
valをある関数fの引数にすることでzを求めます。 z=f(val);

すると、x軸、y軸、z軸で等高線がひけると思いますが、
この過程を効率よく(スマートに)計算するにはどのようにすれば
よさそうですか??for文でcを作ってやるしかないですか??

50x50x3の3次元行列なんかが作れてスパッと計算できたら
よさそうなのですが、どうもよくわかりませんでした。。

762 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 09:59:37 ]
というわけでMatlabを含めてテスト

テスト対象のCPUはiMacの人と同じくIntel Core2Duo 2.4GHz
テストスクリプトは
n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6
のまま

Octave Cygwin版3.0.3   GFLOPS = 1.1429
Octave MSVC版3.0.3    GFLOPS = 2.3239
MatlabR2008a(MT OFF)   GFLOPS = 6.1464
MatlabR2008a(MT ON)   GFLOPS = 10.326
(MT:マルチスレッド)
そして
Octave MacOSX版     GFLOPS = 12.5

Matlabをもってしても勝てません。もちろんループはOctaveの方が速いので
実際のプログラムの速度ではOctave-MacOSよりMatlabの方が速いでしょう
えーとちなみにMatlabは「安すぎる」と日本の関係者に言われている
アメリカの1ユーザーパッケージでも$1900で、日本国内で個人が買うと…
とても信じられない価格です ^_^;。

じゃあどうするか
・マルチスレッド対応のテキサス州立大学のGotoBLASを使う(無料、自由配布不可)
・マルチスレッド対応のインテルMKLを使う(有料、自由配布不可)
・Macを買う
・Matlabにお布施

ちなみにGotoBLASとMKLは同程度のパフォーマンスのようです。

763 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 11:07:25 ]
>>762
C:\Program Files\MATLAB\R2008a\bin\win32

blas.spec
には
GenuineIntel Family * Model * mkl.dll mklcompat.dll # Intel processors
AuthenticAMD Family * Model * mkl.dll mklcompat.dll # AMD
とありますからMATLABはMKLを使ってます
逆に言うとMKLを導入してもMATLAB程度です

764 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 13:20:48 ]
Cygwin介す場合が遅すぎるだけな気がする

765 名前:octave for windowsメモの筆者 mailto:sage [2009/02/16(月) 15:38:46 ]
>>764 cygwin のblasってATLASじゃないとおもいまね。
かなり昔,mingwでliboctaveだけビルドできた時,行列計算にATLASをつかうと
(もちろんコードはliboctaveを使ったstandalone C++ですが。)
mingwとcygwinで差は,出ませんでした。
まあ,cygwinならoctaveビルド簡単だし,
マルチスレッド対応のテキサス州立大学の
GotoBLASを使う(無料、自由配布不可)

もcygwin上ならできるのでそこでどうなるかでしょうね。

Core2Duoのマシンのない私には無縁ですが^^;

HT Pentium(3.4GHz)だからそれでどれくらい,sse2なATLASとどこまで
向上するか比較できます。



766 名前:octave for windowsメモの筆者 mailto:sage [2009/02/16(月) 16:04:11 ]
>>762
>・マルチスレッド対応のテキサス州立大学のGotoBLASを使う(無料、自由配布不可)

この場合,
octaveを自分でビルドする必要があるわけですね。

gcc-4.3.2-dw2-TDMのmingwでoctaveを構築(3.0.4RC3)したら,左除算がハングって
なぜ????

mingw-gcc-3.4.5なら何とかビルドできますが,いまさらgcc-3ってのもねと
おもっています。

Linuxを入れてgotoBlasてのもいいんかなとおもいますね。

職場から出るときにATLAS仕込んで帰ってやってみます。



767 名前:octave for windowsメモの筆者 mailto:sage [2009/02/16(月) 16:18:05 ]
>>761
Octaveで行列型のデータつくってはきだして
gnuplotのcontourにお任せするのはどうですか。
3Dのグラフの等高線図はgnuplotで書きますから。
たしかMATRIX型のデータも扱えるはずですよ。
どうやって等高線を引くのかアルゴリズムはしりませんが,
gnuplotはソースコード公開しているからその気になれば
読めばわかると思います。

768 名前:octave for windowsメモの筆者 mailto:sage [2009/02/16(月) 18:44:26 ]
>>766 自己レスです。意味不明な文章になっているので。<m(__)m>
帰りにコンピュータを走らせcygwinで自分のCPUにあわせたatlasを構築して,
そのATLASを使ってcygwin上でoctaveをビルドして,
MSVCのSSE2のCPUのATLASとの比較をして見ます。

という意味です。すみません。<m(__)m>




769 名前:761 mailto:sage [2009/02/16(月) 22:48:04 ]
>>767 返信ありがとうございます!
わたしの質問の仕方がまずかったようです。出力したデータの等高線を描くのは問題ないのですが、
そのデータを出力する際に、

for xi = (1:5) * 25.0 / 5.0 - 10.0
for yi = (1:5) * 25.0 / 5.0 - 10.0
c = [1; xi; yi];
a = A * c;
b = 1.0 ./ (1+exp(-a));
z = sum(b);
printf("%f %f %f\n", xi, yi, z);
endfor
endfor

としているのですが、これより速く動作する(octaveらしい)書き方がありますか?
という意味でした。分かりにくくてすみませんでした。

特にfor文で回すのではなく、他の言語(SciPy, RubyのNArray)で使えるような
3次元行列を使う方法があれば嬉しいと思っています。

770 名前:octave for windowsメモの筆者 mailto:sage [2009/02/17(火) 19:16:55 ]
>>762

MSVC
MFLOPS = 1845.9

mingw (Benjamin さんのもの)
MFLOPS = 1973.0

ATLA3.8.2を自分のコンピュータ用にcygwinでビルドしてこれをつかって,
mingw-4.3.2-dw2-TDMでoctave-3.0.4RC3をビルドしたもの
MFLOPS = 4830.2

(mingw 4.3.2でのビルドがReference Blasだとうまく動かなかったのが
Atlas使ったらあっさり動いた。なぜ!!)

私のコンピュータはHT-PentiumなのでCore2Duoまでは行かないでも,
マルチスレッドですから,やはり専用にATLASかけるとかなり違いますね。
Core2Duoならどうでしょうか?

ATLASの威力をフルに発揮させるにはやはりoctaveを自分でビルドしないと
だめですね。

octave for windowsメモにmingwで自分でビルドする方法でも書いたほうが
いいのかな。

goto blasもためしてみたいですね。

771 名前:octave for windowsメモの筆者 mailto:sage [2009/02/17(火) 19:30:43 ]
>>769 すいません。思いつきません。
<m(__)m>
Octaveは現在3次元とは言わず,
多次元行列サポートしてますんで,頑張ればできるんではないかと^^;

772 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 20:00:29 ]
>>770
おおすごいですね
MSVCで2GFLOPSだとCore2duo 2.1GHz並ですか
ATLASで5GFLOPS近くもすごい
MSVC版は作者の使ってるマシンのCPUで最適化してるから
キャッシュ容量とかの差で、セルフビルドしたATLASと差が出るのかもしれません

こちらでもAtom 1.6GHzのネットブックに
FreeBSD7.1RのPackagesで入れたOctave 3.0.2で、0.17GFLOPSだったのが
Portsでatlas-3.8.2をmakeした後に、Portsでoctave-3.0.3をmakeして測ったら0.81GFLOPSでした
3万円ぐらいのネットブックでこんだけ出れば十分です

773 名前:octave for windowsメモの筆者 mailto:sage [2009/02/18(水) 09:13:35 ]
>>770 >>772
家のパソコン1.2GHzのCeleron Mでやってみました。
MSVC 3.0.3 367 MFLOPS (sse2,Michael)
mingw 3.0.2 830 MFLOPS (see2,Benjamin) 
mingw 3.0.4RC3 1110 MFLOPS (sse2, ATLAS3.8.2を自分のパソコンで作成)

やはり,自分の使っているCPUでATLASかけたほうがいいですね。
Celeron Mは,意外に速いのですが,MSVC版とmingw版ではHT-pentiumでは
差が少ない飼ったのですが, Celeron Mではかなり差がありますね。
実際に ATLASをかけられたCPUとCeleron Mとのコードの最適化の
相性でしょうね。

P行列計算が関係のない,硬い微分方程式の解析でもmingw
Octave版の方msvc版よりかなり速いです。
mingw版はサポートしているforgeが少ないですが,私はforgeを
つかっていないのでデメリットにはなりません。
GCCも入っているのでmkoctfileのために,Msvc 2008 Expressを
入れる手間を考えると私は,Benjamin版を使っていました。

しかし,これからは自分でビルドしたものを使います。


774 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 13:03:57 ]
>>769

こんな感じでいいのかな?

x = (1:5) * 25.0 /5.0 - 10.0;
[X,Y] = meshgrid(x, x);
c = [ones(length(x).^2, 1), X(:), Y(:)];
a = A * c';
b = 1.0 ./ (1+exp(-a));
z = sum(b);

result = [X(:), Y(:), z'];

for i = 1:length(x).^2
printf("%f %f %f\n", result(i,:));
end

775 名前:octave for windowsメモの筆者 mailto:sage [2009/02/18(水) 13:05:10 ]
>>770 >>772 >>773
大学のパソコンでcygwinでやりました。ATLAS演算は,予想通りほぼ一緒でした。
MFLOPS = 4749.2
とにかく,windows上でお金をかけずに行列計算をそこそこ高速でやりたい人は
自分でATLASからビルドするということがとりあえずのまとめですね。

goto BLASでどうでるかですね。これは,再配布禁止なので,
自分でビルドするしかないですよね。





776 名前:octave for windowsメモの筆者 mailto:sage [2009/02/18(水) 17:31:53 ]
octave-3.0.4RC4がでました。

ttp://www.nabble.com/3.0.4-RC4-to22073703.html#a22073703

これで最後のRelease Candidate (RC) だと思いますが^^;

777 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 20:43:39 ]
>>774 ありがとうございます!XとYの長さが同じ時はこれで完璧ですね。
なるほど、X(:), Y(:)で列ベクトルにして値をもっちゃえばできたんですね、
勉強になりましたm(_ _)m

778 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 09:40:55 ]
Octave 3.0.3をcygwinでmakeすると
libcxsparse.a
でこけますね
3.0.2でやればいいのかな

779 名前:octave for windowsメモの筆者 mailto:sage [2009/02/19(木) 14:25:20 ]
>>778 SuiteSparse3.2.0になってますか。
なんか,g77とgfortranが互換性がないため,
gcc-4を使うためには,SuiteSparseを最新版にする必要があります。

ちなみに私は,SuiteSparseは自分でビルドして使っています。
自分のコンピュータ用にオプション入れていますので
-O3 -fomit-frame-pointer -march=1686 -mmmx -msse3

自分でcygwinでビルドする場合にはcs.hにパッチをあてる必要があります。

--- cs.h.org/cs.h 2007-05-18 21:12:04.000000000 +0900
+++ cs.h 2007-08-15 04:10:12.078125000 +0900
@@ -17,7 +17,11 @@
extern "C" {
#else
#ifndef NCOMPLEX
+#ifdef __CYGWIN__
+#define I 1.0I
+#else
#include <complex.h>
+#endif
#define cs_complex_t double _Complex
#endif
#endif




780 名前:octave for windowsメモの筆者 mailto:sage [2009/02/23(月) 13:04:07 ]
ATLAS(3.8.2)の組み込み(Windows版cygwin,mingw)の簡易メモ
そのうち自分のページに書くつもりですが,その前に
ATLASのビルドは,cygwin上で行う。(mingwでは無理)。
ATLAS(3.8.2)はgcc-3とgcc-4では違うコードを吐く。octaveでgcc-4でのビルドが
よいので,gcc-4でのビルドがいい。cygwinのgcc-4は,gcc-4.exeとgfortran-4.exe
を使うが,ATLASはgccとgfortranでないと動かない。gcc-3のgcc.exeをgcc-3.exe
のようにリネームして,構築する。
外部ライブラリではcygwinでは,setup.exeでインストールし,mingwではBenjamin
さんのライブラリを拝借するのがはやい。
まずは,ここまで。




781 名前:octave for windowsメモの筆者 mailto:sage [2009/02/23(月) 13:15:46 ]
>>781
すでにあるLapackは使えないので,
適宜,CC,F77,CXX,CFLAGS,FFLAGS,CXXFLAGS,CPPFLAGS,LDFLAGSを定義して
(これが結構面倒なんだが^^;)
./configure --with-blas='-L/usr/local/atlas/lib -lf77blas -lcblas
-latlas' --without-lapack
で構築する。外部のLapackをつかうと使っているblasが違うのでうまくいかない
,octaveのソースにあるLapackを使うのが簡単。それで--without-lapackを
つかって./configureをする。
分かる人にはこれでわかるはず。わからない人には,暇になったら丁寧に書くの
でお待ちを。

782 名前:octave for windowsメモの筆者 mailto:sage [2009/02/23(月) 13:30:14 ]
>>780 推敲がいい加減だな。<m(__)m>

途中の文章を以下に訂正。

cygwinのgcc-4は,gcc-4.exeとgfortran-4.exe という名前だが,
ATLASはgcc.exeとgfortran.exeでないと動かない。gcc-3のgcc.exeをgcc-3.exe
のように退避して,gcc-4.exeとgfortran-4.exeをそれぞれ
gcc.exeとgfortran.exeにしてATLASを構築する。

>>781
mingw-gcc-4.3.0-dw2-TDMでは,C++のdllライブラリlibstdc++_tdm_dw2_1.dll
を使えるので.octファイルのサイズを抑えることができる。
CXXFLAGSの先頭にに-D_DLLをLDFLAGSの先頭に,-shared -shared-libgccを
加える。

今日はここまで。

783 名前:名無しさん@お腹いっぱい。 [2009/02/24(火) 18:30:30 ]
Octave-3.0.4 RC5がでました。予想外に3.0.4のリリース苦戦している模様。
これが最後のRC版になればいいのですが,

ttp://www.nabble.com/octave-3.0.4-rc5-td22177145.html


784 名前:octave for windowsメモの筆者 mailto:sage [2009/02/25(水) 08:05:40 ]
>>783 Plot周りのバグの指摘にJaroslav Hajekさんがきづいていなかったようで
Jwe氏より待ったがかかりました。3.0.4のリリースは遅れそうです。

私としては通常の使用では3.0.3で十分なので,無理して急ぐことはない
と意見をかきこんでいます。

しばらくは,3.0.2または3.0.3を使いましょう^^;。



785 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 01:18:02 ]
matlabと完全互換でなくなったのは
何か理由があるのでしょうか?



786 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 01:48:42 ]
>>785
互換性はあると思いますよ
 MATLAB→Octave
は比較的
Octaveの変な方言を使うのをやめれば
 Octave→MATLAB
もスムーズになると思われます

変な方言とは具体的には

if A<=B,
endif ← end; にする

function F=func(x)
endfunction ←不要

#    ←コメントは %

if A<>B,
if A!=B, ← A ~= B だけ

787 名前:octave for windowsの筆者 mailto:sage [2009/02/28(土) 13:22:51 ]
>>785
元々からして完全互換を歌ったことははないですよ。

MATLABが変わっていったのに追いついていなかったというのが正しい認識だと思います。
Octave ver.3は、MATLABの仕様変更に対応して変わったという面があります。

私自身はMATLABを使ったことはなく、Octaveを使った講義でMATLAB互換を歌っていますのでMATLABの書籍は持っています。

最近のOctaveは、本格的なMex対応やplot周りなどは、最近のMATLABに仕様を変えつつありますし、互換性のあるコードが以前より書きやすくなっていると思います。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<345KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef