1read 100read
2012年1月2期UNIX36: データ解析ツールoctaveを語ろう Part 2 (297)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
・ 次のスレ
37: zsh その6 (837)
38: netatalkについて語るスレ (822)
39: 雑談スレだよもんもんもん☆もんだよだよもん!{33} (105)
41: 今までにオライリー本何冊買いましたか? (457)
データ解析ツールoctaveを語ろう Part 2
1 :09/10/28 〜 最終レス :12/01/26 知る人ぞ知る強力なデータ解析ツール octave ... unixを科学研究で使っている香具師には非常に心強い味方のはずだ。 matlab互換を主張しながら、微妙にバージョンアップを続ける octaveについて語ろう。 そのPart 2です 前スレ データ解析ツールoctaveを語ろう http://pc12.2ch.net/test/read.cgi/unix/1086016412/
2 : >>1 スレたてありがとうございます。
3 : ロリコンのオイラにも使いこなせだろうか…
4 : OctaveスレですがFreeMAT 4.0が使い物になるか検証してみます FreeMATでは関数名がOctave/MATLABと変わってるものがあります 例えば Octave/MATLABのfgetlは、fgetline Octave/MATLABのinterp1は、interplin1 (しかもオプションが違う) とか色々 というような感じなので、Octave、MATLAB、FreeMATで共通に動かせるプログラムを 書くにはどの処理系で動かしているかプログラムの中で判別する必要があります。 OctaveとMATLABを判別するには if exsit('OCTAVE_VERSION'), % octave の処理 else % MATLAB の処理 end; とやれば良いです。FreeMATではどうやら if exist('verstring'), % FreeMAT の処理 else % FreeMAT 以外の処理 end; とやればいいようです。
5 : 電卓やExcelで計算出来る程度をのことをわざわざOctave/MATLAB/FreeMATで 行うのは時間の無駄です。 逆に理論上は電卓やExcelでも計算可能だが超絶むずい問題を Octave/MATALB/FreeMATでさらさらと計算する事は非常に有意義です。 統計計算ならExcelでも可能でしょうけど、非線形最小二乗法の計算ともなれば ちょっと難しいですが、Octave/MATLAB系言語なら簡単(?)に計算可能です。 MATLABでは高いOptimization Toolboxのオプションを買えば lsqcurvefitというマルカート法を用いた非線形最小二乗計算が出来ます。 でもまあしかし、Octave-Forgeについてくるleasqrを使えば只で マルカート法による非線形最小二乗計算ができますのでそちらを使いましょう。 使うのはleasqr.mとdfdp.mだけなので簡単です。 FreeMATではこのleasqr.mをどう試行錯誤しても使えなかったので FreeMAT自身のマルカート法を用いた非線形最小二乗関数であるfitfunを使います。 それらの使い方の例を次に示します。
6 : test1.mで保存してOctave/MATLAB/FreeMATで実行 function F=test1() stol=0.0001; niter=50; AA=[0:360]; BB=AA./180.*pi; CC=cos(BB); x0=[1,0]; % if exist('verstring'), wt=zeros(size(BB))+1; [p1, f1] = fitfun(@sintest1, x0, CC, wt, eps, BB); p1 else [f1, p1] = leasqr(BB', CC, x0, @sintest2, stol, niter); p1 end; disp(sprintf('pi = %f', p1(2)*2)); function F=sintest1(param1, xx), F=sintest(xx, param1); function F=sintest2(xx,param1), F=sintest(xx, param1); function F=sintest(xx, param1), freq =param1(1); phase=param1(2); E=sin(xx.*freq+phase); F=E;
7 : >>6 の説明を簡単にします sintestは、param1で指定された波数freqと位相phaseのsinデータを生成する関数で 入力値にはcosのデータを用意し、 その波数と位相を非線形最小二乗法で求めるというものです cosはsinから見ると位相が90度=π/2ずれてますので 推定された位相を2倍すればπが得られるはず!で 実際に計算してみるとそうなりました ところで、leasqrとfitfunでは、解析する関数のパラメータの順番が違います そこで元になってるsintest関数をleasqr用とfitfun用にラッパー関数 sintest1, sintest2で置き換えてから処理しています。 ちなみにMATLABのOptimization Toolboxの非線形最小二乗法関数の lsqcurvefitもFreeMATのfitfunと同じ並びだったりします
8 : >>5 他の視点としてはC, fortran, C++で書けば速いコードができるのだが, プログラムを書くのに時間がかかってしまのですが,octaveなどで組み込みの 強力なツールを使えばプログラミングが早く終わるケースなどがあります よね。 ちょっとして問題までコンパイラを使うのは時間の無駄だと思います。 また,プログラミングする前のプロトタイプ作成にも有効ですよね。 liboctaveはC++で動く数値演算クラスライブラリとして有用ですし, octaveのスクリプトからの移植は,比較的容易ですので真剣に高速化したい ときも近道になりますよね。 私の主なoctaveの用途はodeのソルバーと固有値問題解析です。 いろんな場面で連立微分方程式を解く 超音波は波動を使った研究をしていて波動方程式はフーリエ変換すると固有値 問題になるのでそのときもoctaveが大変約に立っています。 ExcelでVBAでルンゲクッタ公式を書いて,微分方程式を解いているのを見ている となんと時代遅れで時間の無駄なことをしているのだろうと 思ってしまいます。 スティッフな問題なんぞに対応できないですしね。 #ところで,思い切りスレ違いですが, 非線形最小2乗法はgnuplotもかなり強力ですよ。
9 : octaveでgnuplot(wgnuplot)を実行させようとするとグラフが表示されない現象に悩まされているので質問させてください。 まずバージョン情報をば。 OS: Windows Vista octave: 3.0.3(cygwin setupからインストール) gnuplot: 4.0 patchlevel 0(wgnuplotをcygwinからではなく個別にインストール) また、octaveはcygwin1.5.25上で動かしています。 octaveからgnuplotにデータを渡すために octaveの設定ファイルに下記サイト等を参考にして変更を施しました。 http://www.t.hosei.ac.jp/~miya_ken/computer/octave.htm ですがグラフを表示させようとすると octaveのウィンドウでデータが羅列されるだけで gnuplotがグラフィカルに表示してくれません。 自分の打ちこんだデータについては何度も確認しましたが間違っている場所は見当たりません。 参考までに載せておきます(テスト用なのでただのsinカーブです) ------------------------------------ x=0:0.1:2*pi; plot(x,sin(x)) ------------------------------------ 解決法知っている方おられましたらよろしくおねがいします。
10 : >>9 Cygwin版ならのcygwin版gnuplotを使うのがいいとおもいますが,Xを動かしたくないんですね。XソフトとしてCygwin-XでなくXmingを使う動作が軽くて結構いいですよ。 Octave 2.91?以降ではguiモードのwgnuplotはpgnuplotをつかっても使えません。コンソールモードのgnuplotを利用してください。 これはcvs版しかないので 角藤さんによるCVS版Windows 用バイナリ http://www.ring.gr.jp/pub/text/TeX/ptex-win32/w32/ 私がビルドしたもの File list of gnuplot 4.5 for Windows http://www.tatsuromatsuoka.com/gnuplot/Eng/winbin/ をつかってみてください。ただ,最近のoctaveは仕様の変更がありますからCygwin版のgnuplotしか 動かない可能性はあります。 その場合も,2DグラフのマウスズームをしたいのならCVS版が便利です。 ・gnuplot 4.5 (cvs) cygwin binaries prepared by gcc-4.x.x http://www.tatsuromatsuoka.com/gnuplot/Eng/cygbin/ gnuplot_binary()を~/.octaveなどのスタートアップファイル(マニュアル参照) 適切にセットしてください。 #個人的には,Cygwin-1.5はもうほとんど使っていません。Cygwin-1.7はbeta版とはいえ,すでにいろいろなアプリケーションで新し物は,Cygwin-1.7のみ というものが増えています。OctaveもCygwin-1.7なら3.2.3がつかえますしCygwin-1.7への乗り換えをお勧めします
11 : >>9 ところでCygwinにこだわりがありますか。わざわざ,xのgnuplotを使わないようにされているようなので,Octaveを使うのにCygwin版をお使いになるのかいまいちわかりません。 Cygwinでいろんなことしたいならやはり,xをいれてx版のgnuplotをつかうのが自然だと思います。 Cygwinに固執がなければ octave/mingwだとインストールするだけで簡単にgnuplotも使えるわけですし,なにかわざわざ困難な方向に走っておられるような気がします。 octave/mingwは 以下からダウンロードできます。 http://sourceforge.net/projects/octave/files/Octave_Windows%20-%20MinGW/Octave%203.2.3%20for%20Windows%20MinGW32%20Installer/Octave-3.2.3-3_i686-pc-mingw32_gcc4.4.0_setup.exe/download ただし,SSE3つきのAtlasはバグがあるのでSSE2のAtlasをお使いください。
12 : >>10 >>11 レスありがとうございます。 gnuplotはcygwin導入前から導入していてそれを使えるようにしたかったんです。 octaveはcygwinから使えるよっていうのをwebで見て じゃあoctave/cygwinと単体で導入していたgnuplotをコラボさせましょうということで進めていくと >>9 のような事態になりました^^; MinGW版のoctaveさっそく導入しましたら一発で解決しました。 情報提供感謝でございます。 P.S. あと>>9 の補足ですが、octaveとgnuplotをつなぐための設定ファイルの内容ですが 参考として挙げたwebページではwgnuplotに投げるとなっていますが ほかのページも巡回して検討し、pgnuplotとしてました。 まあ、それでも同じ現象が出たので設定ファイルのせいではないのかなと考えてます。
13 : >>12 一時期MichaelさんやBenjaminさんがOctaveとwindowバージョンのgnuplotを つなぐため独自にビルドされたコンソールモードのgnuplotに pgnuplotと名前をつけていたのでそのような記述があるのではと 思います。その後gnuplotのcvs版コンソールモードのgnuplotが正式に 採用されたとき,いろいろ意見がありましたが,他のプラットフォームと 同様のコンソールモードのgnuplotは単にgnuplotになりました。 ちなみに,pgnuplotはwgnuplotにpipe接続するものですが, 一方通行の通信しかできません。 現在のoctaveでは双方向のpipeを使ったいるので,いわゆるpgnuplotをoctave に使うことやoctaveでwgnuplotを使うことはできません。 できるのはコンソールモードのgnuplotに投げることしかできません。 見られたwebページはおそらくMichaelさんが一時期使っていた コンソールモードのpgnuplotだと思います。 現在はそれは存在しないので,Windowsの場合cvs版のgnuplotを使わないと いけません。
14 : Octave 3.2.3-2/mingw32 がでました。 http://old.nabble.com/Octave-3.2.3-2-mingw32-available-tt26353433.html まだ,自宅は回線が遅いのでためしていません。SSE3のATLASのseg-faultの問題 http://old.nabble.com/Octave-3.2.3-mingw32-crashes-on-a-simple-complex-operation-tt26159558.html は解決していないようで今回はSSE3のATLASは組み込まれていないようです。 jpeg-7に対するバグは解消されたようです。
15 : Octave 3.2.4のリリースにむけたパッチの募集が始まりました。 http://old.nabble.com/3.2.4-call-for-patches-tt26440879.html
16 : mingw版の3.2.2使ってるのですが、何かplotを連続でした場合 今までのは書き換わるだけだったのに 3.2.2のは画面がクリアされて一瞬白くなって 連続で書き換えるとチカチカして非常に見にくい。
17 : >>16 その問題はmingw版だけの問題ではなく,octave-3.2.2ではそうなります。 (バグです。) octave-3.2.3では,解決してますので,そちらをお使いください。
18 : MinGW 版 Octave の maintainer の Benjamin さんが MinGW でoctave をビルドするための HOWTO を書き始めたとの報告が Octave の maintainers の ML でありました。 http://old.nabble.com/HOWTO-for-building-octave-using-mingw-msys-p26465144.html これは,octave-forge の SVN の Tree 上に置かれていますが,テキストファイルなので直接読んだり, ダウンロードできるようです。 https://octave.svn.sourceforge.net/svnroot/octave/trunk/octave-forge/admin/Windows/mingw32/HOWTO.txt
19 : ウインドウズで申し訳ないのですが、 dynareのsimul_stochが機能しません。 このエラーを検索しても意味がわからないのですが、 octaveユーザの方でわかるひとはいますでしょうか。 warning: mark_as_command is obsolete and will be removed from a future version o f Octave octave-3.2.3.exe:1:C:\Octave\3.2.3_gcc-4.4.0\bin > cd c:\test octave-3.2.3.exe:2:c:\test > dynare rbc.mod Configuring Dynare ... error: could not find library or dependents: c:\dynare\4.0.4\matlab\../mex/octav e/mjdgges.mex error: called from: error: c:\dynare\4.0.4\matlab\dynare_config.m at line 92, column 10 error: c:\dynare\4.0.4\matlab\dynare.m at line 57, column 12 octave-3.2.3.exe:2:c:\test >
20 : >>19 mexがうごかないといってるようですね。 octave version 3.0からmexに 対応していますが,バイナリ互換ではないのでmexのCのソースから octave用のmexを作成しなおす必要があります。 まずは,mexのソースコード(c言語で書かれています。)を持っているかを 確認してください。 mexのソースがなければ,octaveで動かすのは無理です。 これは,ライセンスなどにもかかわるので,mexのソースコードが手に入らない場合 mexのコードをともなうMATLABのコードをoctaveで動かすのは無理だと考えて ください。
21 : >>19 octave 3.2.3 からコンパイラを変えたのが原因の気がします。 たしか、dynare 4.0.4 はoctave 3.2.2 だったら動いたような。 ttp://www.dynare.org/DynareWiki/DynareOctave にも Pick version 3.2.2 (version 3.2.3 is not binary compatible with the package for Dynare 4.0.4). とあるので。 まあ、じきに dynare の中の人が最新のoctaveでも動くようにしてくれるとは思います。
22 : みなさまありがとうございます。そういうことでした。
23 : matlabのkmeans関数ってoctaveには(少なくとも同じ名前では)無いようですが、 別名で同じ機能の関数ってあるのでしょうか? それともこれは自前で作成するしかないですか?
24 : >>23 私はmatlabユーザーではないのでよく分かりませんが, そもそもkmeans関数はどのような機能の関数なのでしょうか? また,mファイルで書かれている関数で,ソースが手に入るのならば, octaveで動かせる可能性があります。 mexでもソースが手に入れば,octaveでmexを作成しなおせば, 動く可能性があります。
25 : >>19 >>21 dynare の version が 4.1.0にアップデートされました。 Octave 3.2.3 で動きます。
26 : 23 さん Octave で書かれた K-mean プログラムについて. 横から失礼します. k-means のプログラムを Octave で書きましたので,参考になれば と思いお伝えします. ・http://133.5.18.167/rinkou/octave/okmeans.html すべて Octave で書いたもの. ・http://133.5.18.167/rinkou/octave/kmeans.html OpenCV の kmeans 関数を呼び出すようにしているもの 一応、動作確認しています。バグ残っているかも知れません. (すぐには対応できないと思います).ご参考になるかと思いお伝えしました.
27 : Jaroslav Hajek さんによるとoctave 3.2以上であればfsolveを使って 非線形カーブフィットができるようです。 例 b0 = 3; a0 = 0.2; x = 0:.5:5; noise = 1e-5 * sin (100*x); y = exp (-a0*x) + b0 + noise; c_opt = [a0, b0]; tol = 1e-5; [c, fval, info, output] = fsolve (@(c) (exp(-c(1)*x) + c(2) - y), [0, 0]); Nabble の アーカイブ ttp://old.nabble.com/Re:-i-just-want-to-use-nonlinear-curve-fitting-function-,-what-should--i-do--p27206660.html
28 : octave 3.2.4のRelease Candidateがでてます。 もうすぐ,octave 3.2.4がでると思います。 おそらく,3.2シリーズは3.2.4で終わりで,次はoctave 3.4がでると思います。 ビルドシステムの大幅な変更があります (libtoolを使ったものになります。)。 一般の方にはあまり関係がないと思いますが,自分でビルドされる方は maintainersのMLをご覧になって情報を収集されることをお勧めします。 思いますが,
29 : octave 3.2.4のソースがでました。(unofficialだそうです。) ttp://old.nabble.com/3.2.4-release-to27272214.html をごらんください。
30 : Octave公式Webにはまだのっていないようですが,octave-3.2.4 のソースがアップロードされています。 ttp://old.nabble.com/Octave-Version-3.2.4-Released-to27353121.html#a27353121 おそらく,3.2シリーズでは最後のリリースとなると思います。 3.2.3で問題となったバグがかなりフィックスされているようです。 各種バイナリもそのうち整備されると思います。
31 : Cygwin 版のOctave 3.2.4のバイナリが配布されています。
32 : Octave のMLにGNU ProjectのリーダーのRichard Stallman氏が登場して, Mathworks社のライセンス(Matlabが関係すると思います)についての話題が 提供され,現在,精力的に議論が行われています。 法律的なこともかかわっているので正直言って理解できないことが多いのですが ライセンスについては,敏感な立場の方がおられると思いNabbleのアーカイブ のURLを書いておきます。 ttp://old.nabble.com/Mathworks-hosted-GPL'd-software-to27550496.html をご覧ください。
33 : 計算のたびに以下のように octave-3.2.3.exe:16:C:\Octave\3.2.3_gcc-4.4.0\bin が表示され,非常に見難いのですが 非表示にする方法はありませんか? > x/y ans = 0.50000 octave-3.2.3.exe:14:C:\Octave\3.2.3_gcc-4.4.0\bin > x^y ans = 16 octave-3.2.3.exe:15:C:\Octave\3.2.3_gcc-4.4.0\bin > x**y ans = 16 octave-3.2.3.exe:16:C:\Octave\3.2.3_gcc-4.4.0\bin > sin(pi/2) ans = 1 octave-3.2.3.exe:17:C:\Octave\3.2.3_gcc-4.4.0\bin
34 : >>33 ttp://old.nabble.com/Re:-Really-Long-Command-Prompt-p27222063.html
35 : Windows 版Octave-3.2.4がでました ttp://sourceforge.net/projects/octave/files/ からどうぞ。
36 : >>35 2点不具合を発見しました。 ttp://old.nabble.com/Re:-Octave-3.2.4-mingw32-available-p28037642.html ttp://old.nabble.com/flicking-problem-again-Octave-3.2.4-mingw32-td28038688.html 対処はできそうです。
37 : たびたびすみません。<m(__)m> >>36 のについては ttp://old.nabble.com/flicking-problem-again-Octave-3.2.4-mingw32-td28038688.html なんか何もしなくても,うまくいきだしました。^^;
38 : mingwの3.2.4を入れてみたけど wxtターミナルで、plotしたあとに xlabel('hoge'); drawnow; とやっても反映されないのね plotコマンドを再実行すると反映されるので xlabel, ylabelで定義してから plotする流儀に変わったのかな
39 : mingwの3.2.4を入れて気が付いたのが、binフォルダのblas.dll 前のスレ(http://2chsearch.jp/unix/1086016412/?first=1) の969-970で ttp://machnum.net/base/index.php/articles-computational-physics/37-computational-physics/47-assembler-code-and-mingw ここを見ながらmingw上でgotoblasをコンパイルしてblasのdllを作りました。 またcygwin上でもblasのdllを作りました。 そのblas.dllを、3.2.4デフォルトのblas.dllと入れ替えて動くか試すと、なんと!動きました。 環境変数に GOTO_NUM_THREADS があり、2がセットしてあるのを確認した上で n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6 これでベンチをとってみると Octave 3.2.4 default blas.dll t = 4.2031 MFLOPS = 3806.7 GotoBLAS mingw t = 2.1719 MFLOPS = 7366.9 GotoBLAS cygwin t = 1.2344 MFLOPS = 1.2962e+004 PCは2.1GHzのCore2Duoで理論演算能力は2.1*4*2=16.8GFLOPSなので、cygwin版のGotoBlasと入れ替えれば近い線までいきそう。 mingwの場合はマルチコア未対応なのでしょう。 最近発売された6CoreのCore-i7を使えば、3.3*4*6=79.2GFLOPS近くの性能が出るかもしれません。
40 : >38 3.2.4はgnuplotとの連携のとこバグってると思う x = [0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6 ,2.0] plot( x, x.*x ) とかもっともシンプルに打っても動きがヘン
41 : >>38 ,>>40 たぶん,oct2matというoctave-forgeのパッケージがぶつかっているせいだと 思います。 その他,Octave 本家のMLで話題になったことの対処法を拙ページに書いて おりますのでよろしければ参考にしてください。 ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#100403
42 : >>39 GotoBLAS cygwin t = 1.2344 MFLOPS = 1.2962e+004 これはすごいですね。残念ながらいまだに HT Pentium なので恩恵にはあずか れませんが,導入したらいつかやってみたいですね。 >>mingwの場合はマルチコア未対応なのでしょう。 はい,そうです。SSE3でもなかったような気がします。 ALTASの場合は,cygwinコンパイラでdllを作ると動きません。 また,cygwinで配布しているコンパイラでを使うとcygwinでしか使えない atlasになります。したがって,gcc-4.3.4あたりを自力でcygwin上でビルドし それでスタティックライブラリを作成し,そのスタティックライブラリを mingwのgccでリンクしてdllを作るという技がいります。 pthread-win32も改良されて,HTの場合は速くなりませんが,mingwで動く multi-threaded ATLASの作成には個人的には成功しています。
43 : >>42 からの続きです 使うマシンがないので公開はしていませんが, mingwでatlasを作成するためだけにCygwin上でビルドした, 特別なGCCとどうやってスタティックライブラリから dllを作るかは書いたほうがいいですかね。 あまり暇がないので,GCCの公開ぐらいならやりますが。 また,Benjmaminさんはどうもうまくmingw上のAtlasをハンドリングできて いないようです。 彼は本当に高速な計算にはLinuxをお使いのようなので, そこまで期待するのはちょっときついかもしれません。 今回octave-forgeのサポートがかなり増えていますので,相当なご尽力を なさっていますのであまり多くを望むのは難しいでしょう。
44 : >41 おお、サンクス。まともにプロットするようになった。
45 : そういえば、wxtの場合なのか現バージョンのoctaveの場合なのかわかりませんが 補助目盛(minor tics)がデフォルトでは表示されません リニアプロットでは気が付かないかもしれませんがloglogだと気付くでしょう そんな場合は set (gca, 'xminortick', 'on', 'yminortick', 'on') とやればいいので、octavercにでも書き込んでおけば問題ないと思ってたのですが warning: mark_as_command is obsolete and will be removed from a future version of Octave という警告が出ますな。正式な手続きがわからん
46 : >>45 >補助目盛(minor tics)がデフォルトでは表示されません たしかにそうですね。 x=1:100; loglog(x,x) で確認しました。 mingw版でもcygwin版でも(ともに3.2.4)ともにご指摘のようななので そういう仕様なのかもしれませんね。 一度本家MLで聞いてみます。 > warning: mark_as_command is obsolete and will be removed from a future version of Octave たしかにこれ気になっているんですが,octave --norc でstartupファイル を無視するとでないので Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\startup\octavercで 使っている関数がどこかで使っているのでしょう。 パット見た限りわかりませんので気が向いたら,原因探りますが まあ,やらないかな。 いまのとこ実害がないし,mark_as_commandが なくなったらwarningでなくてerrorになるからそのときはBenjaminさん も対応されるでしょう。
47 : >>45 >>46 >Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\startup\octavercで 使っている関数がどこかで使っているのでしょう。 のではないようですね。 octave --norcでたちあげて pkg load jhandles やると同じメッセージがでます。一度でたら二度目はでないので octave-forgeのどれかをloadするときでるのでしょう。 ちなみにjhandleはデフォールトではloadされない仕様なのでこれは原因 ではないでしょう。 対処しようとするとおそらくpkg周りをいじらないといけないでしょうね。 いまは,我慢して無視するのが現実的かと思います。 どこかの
48 : 警告の原因は、これ(↓)じゃないんですか。了解です set (gca, 'xminortick', 'on', 'yminortick', 'on')
49 : >>48 はい set (gca, 'xminortick', 'on', 'yminortick', 'on') は警告の原因ではないようです。 mark_as_commandのコードをみましたが,3.2ではdeprecatedというフォルダに はいっていて実質何もしていません。mark_as_commandが実行されたときに エラーになるとコードが動かなくなるのを防ぐために存在しているようです。 というわけで,多分,octave-forgeのパッケージが将来的に対応すべき 問題なのでしょう。現時点ではやはり無視してつかうのでいいでしょう。
50 : >>45 >>46 >>47 >>48 >>49 warning: mark_as_command is obsolete and will be removed from a future version of Octave の消し方わかりました。 \Octave\3.2.4_gcc-4.4.0\share\octave\3.2.4\m\startup のoctaverc で pkg ("load", "auto"); という文があるので warning ("off","Octave:deprecated-function"); pkg ("load", "auto"); warning ("on","Octave:deprecated-function"); のようにすれば消すことができます。
51 : >>50 了解です それとは関係ありませんが 前スレは、ここで安定して見れるっぽいです ttp://ranran2.net/app/2ch/unix/1086016412
52 : >>51 おお! ありがとうございます<m(__)m>
53 : CSVファイルを読み込むためのdlmread関数を使うために pkg load io とすると package io is not installed と表示されるのですが、 ioパッケージって標準では入ってない物なのですか?
54 : >>53 octaveのバージョンはなんでしょう。また,platformはなんでしょう。 3.2.4ならdlmreadは,io パッケージでなくoctave本体に入って入ってますが。 また,octave-forgeのパッケージが何がはいるかはdistributorにもよるので 具体的な情報がないと誰もこたえられないと思います。
55 : >>53 書き忘れましたが,csvならばcsvreadも使えます。dmlreadで セパレータ指定してもいいと思います。
56 : 今さっき気がつきましたが pkg load jhandles でGNUTERMに何が設定してあっても、jhandleでグラフ描画するんですね wxtはなんかグラフがはみ出すし、オーバーヘッドが大きいような気がしてました
57 : >>56 そうですね。3Dとかでmeshを細かく刻むとjhandlesじゃないと遅いですよね。 ただ,ginputをやろうとするとエラーがでたりします^^;。 3.4がでてFLTK backendが,まともになればjhandleもいらないかなとは 思います。 ただ,3.4リリースのための開発版3.3はMinGWではまだ不安定です。 gnulibでportabilityをあげようとしての結果なのだと思っています。 3.4のリリースはいつごろになるのかな。
58 : >>57 使ってみたらprintがだめっぽいですね gif, png, jpgはだめ MSVC版ではいんちきくさいながらも出来たのに それとAuto Redrawしないので表示が消えちゃいます drawnowすればいいだけですけど 実装があんまりよくないです でもまあ、表示速度は段違いなので 経過を表示させる場合はいいかもです
59 : >>58 そうですね。まあ,MSVC版ではoctaveのメンテナーとjhandleのメンテナーが 同じ人でしたからね。 MinGWでSun Javaを扱うのが難しいなどで時間もかかったようですし, FLTK Backendがまともになれば,jhandlesの意味も薄れるので力がそれ 実装がMSVC版ほど力が入っていないのはある程度しょうがないと思います。 pipeがwindowsでは遅いのでgnuplotが遅いのはあるていど仕方ないですね。 octaveからだとgnuplotはwindows NativeよりCygwinの方が大分速いですね。 私は,本当につかうグラフはデータ書き出してgnuplotでやります。 octaveからだとgnuplotの機能をフルには引き出せないので octaveのグラフィックスはあくまでも経過表示用にしか使っていません。
60 : >>59 今出来るかどうか知りませんが、昔はこんな事してました gset term postscript color gset output 'hogehoge.ps' plot (x1,y1) gset term X11 単にprint文を知らなかっただけですけど
61 : >>60 今はできません。それらの関数は3.2からはすべて削除されました。 ただ,octave-forgeにgnuplotパッケージが入ったのでこれをつかうと いう手もあるかもしれません。 MinGW-3.2.4には,gnuplotパッケージ入っているのでそれを使うという手も ありそうです。 ttp://octave.sourceforge.net/functions_by_package.php のgnuplotのreferenceはあまり詳しい記述がないので, これでどんな関数があるか調べてhelp g_plotなどどする必要があります。 3.4ではgnuplotはまだbackendとして残るとおもいますが,将来的には backendはfltkのみなり,gnuplotはoctave-forgeになる流れではと思います。
62 : 今日,MinGW上でgcc-4.5.0でdevelopment branchのoctaveビルドしました。 先月ビルドしたときは,極めて不安定ですぐseg-faultを起こしていましたが 今日は安定して動いています。 fltk バックエンドも軸がちゃんと表示できるようになっていましたし, 連続プロットもgnuplotに比べかなり高速です。 ただしマウスで3Dぐりグリができなさそうなのが残念ですが。 しかし,MinGWはdevelopment branchのなかで一番対応が遅れていたのですが これでなんとかなるめどがついた気がします。 あまり遠くない時期にoctave3.4が出てくるような気がします。
63 : Core2DuoのCULV(低電圧)版のSU2300(1.2GHz, 1MBキャッシュ)を積んだノートを買ったので テストしてみました(OSはXP Home) ちなみにCore2以降のCPUに載ってるSSE3は 64bit倍精度浮動小数点演算を1クロックに4個実行できるSIMDユニットで このSSE3が有効な場合の理論FLOPSをを計算すると 1.2G(Hz)*4(FLOPS/Clock)*2(Core)=9.6GFLOPS となります。AtomなどにもSSE3のファンクションは載ってますが それを実現するハードウェアはないため、速くはなりません。 GotoBLAS2は新たに1.13をダウンロードしてCygwin1.7上でmakeします makeオプションは http://www.db.is.kyushu-u.ac.jp/rinkou/cygwin/cblas.html ここのをそのまま使います makeが終わると、exports/にlibgoto2.dllが出来上がってますので これをMingw版Octave 3.2.4のbinのblas.dllと置き換えればOKです その前に環境変数GOTO_NUM_THREADSに2をセットしておき cygwinのbinから、cygwin1.dll、cyggcc_s-1.dll、cyggfortran-3.dllをoctaveのbinにコピーしておきます ベンチマークはいつものを使います n=2000; A=randn(n); B=randn(n);tic; C=A*B; t=toc, MFLOPS=2*n^3/t*1e-6 デフォルト(たぶんatlas.dllを呼んでいる)のblas.dllだと 2.07 GFLOPS GotoBLAS2だと 5.72 GFLOPS で倍以上に速度が上がりました GOTO_NUM_THREADSに1をセットすると 3.24 GFLOPS なのでデュアルコア自体は効いてるようです
64 : >>62 最近のdevelopmentブランチをビルドしてみました(MinGW,gcc)。 fltkでepsを作成できるようになっており,またマウスによる3dの回転も できるようになっています。 fltkもだいぶ実用に耐えるようになってきた感じです。 なにしろ高速なのがいいです。やっぱりOpenGLをつかっているからでしょう。 pkg installにもバグがあったようですが,それも解消されているし, developmentブランチへの乗り換えを画策しています。
65 : 数学セミナーの9月号で数学を発展させるコンピュータソフトという特集が組まれております http://www.nippyo.co.jp/magazine/maga_susemi.html そこでは、Rは取り上げられてますが MATLAB/Octaveはさっぱりですけど、 その特集とは別に 高速化・最適化のためのBLAS入門/藤澤克樹 50 と中央大学でSDPAの研究をしている藤澤先生が MATLABとBLASを使った計算について説明してます やってる事は >>63 とほぼ同じ(行列の1辺が2000ではなくて4000)スクリプトで 4コアCPUを2個使って、スレッド数を1個から8個まで増やすとどうなるか という事について書かれてます。
66 : 既知の問題であれば申し訳ないのですが、ちょっと困っています。 以下のようにして、 R = 10.0; L = 0.1e-3; Rc = 100e3; Cc = 0.1e-9; Ca = 0.01e-9; Z = tf([Cc*Rc 1],[Ca*Cc*Rc Cc+Ca 0]); G = tf([1],[L R]); sys = sysmult(G,Z); sysout(sys,"tf"); とすると、本来numはsの一次式になるはずがそうなりません。 Cc、Caを数桁大きくすると正しく計算できるようです。 お手数ですが、この問題の回避策があれば教えていただけないでしょうか?
67 : すみません、書き忘れました。 Win版 3.2.4です。
68 : 保守
69 : >>51 現在 前スレ見れるところ ttp://logsoku.com/thread/pc8.2ch.net/unix/1086016412/
70 : OctaveやFreeMATではMATLABのstemにあたるマッチ棒のようなプロットはどうやるんですか?
71 : cvytvftvyghgbvyvybuhjkkvghghvgvgfvgfcjnhjgjhhuihuyfgvcg
72 : >>70 octave manual 15.1.1 Two-Dimensional Plotsより Function File: h = stem (x, y, linespec) ― Function File: h = stem (..., "filled") : x = 1:10; y = ones (1, length (x))*2.*x; stem (x, y, "b"); もっと詳しくはマニュアルを
73 : 前スレでも,>>63 にもあるように,ちょくちょく話題になるGotoBLAS2 に ついてライセンスが変わったとoctave ML 情報が入っています。 http://octave.1599824.n4.nabble.com/GotoBLAS2-license-td3055645.html 参考までに
74 : >>73 >GotoBLAS2 has been released by the Texas Advanced Computing Center >as open source software under the BSD license. 素晴らしい。 従来は独特のライセンスのせいでユーザが自分で組み込む必要がありましたが、 今後は公開ソフトウェアに最初から組み込めるわけですね。 GotoBLAS2-1.13で打ち止めへ (2010-04-09 13:29:50) http://blog.goo.ne.jp/nakatamaho/e/61d0cfbe1222364a3ef70505dce4f463 後藤和茂さんがヘッドハントされてからバージョンアップが止まってますが、 これも改善するかもしれません。
75 : >>73 Goto BLASの開発は,終了したようです。 http://blog.goo.ne.jp/nakatamaho/e/61d0cfbe1222364a3ef70505dce4f463 残念ですが。
76 : >>75 すみません。 74をみていませんでした<m(__)m>。
77 : >>74 >後藤和茂さんがヘッドハントされてからバージョンアップが止まってますが、 >これも改善するかもしれません。 そうですね。 天才ハッカー(いい意味でのハッカーです。)後藤さんのあとを 続くような方が現れてプロジェクトとして 立ち上がってくれればいいのですが。
78 : scilabとの違いが良くわからない
79 : >>78 Scilabの使いにくい点 ・実行 MATLAB/Octaveは、拡張子.mを省いたmファイルをコマンドラインで打ち込めばいい Scilabは、コマンドラインでexec('hoge.sce')とやらないといけない ・関数定義 MATLAB/Octaveは、パスの通ってるディレクトリかカレントディレクトリにあれば 勝手に読み込んでくれる。 Scilabは、明示的にgetf('hoge.sci')と読み込まないといけない。 ※Scilab5では途中からgetfではなくexec('hoge.sci')になった ・コメント行 MATLABは%、Octaveは%と# Scilabは// ・その他、ScilbはMATLABから見て方言が多いし、Octave Forgeのような豊富な関数を使えない。 利点 ・グラフがOctaveよりはきれい ・Serial-0.2.tgzという非オフィシャルのパッケージを導入すると RS-232Cのコントロールが可能 例えば、COM3のモデムを操作する場合 fp=openserial(3,"9600,n,8,1") writeserial(fp,'ATI0'+ascii(13)) xpause(200000) readserial(fp) xpause(200000) writeserial(fp,'ATI1'+ascii(13)) xpause(200000) readserial(fp) closeserial(fp) こんな感じ。xpauseはパラメータのμ秒数だけ待つ命令
80 : データを全部テキストデータで保存すると ファイル増えてしかたない sqliteあたりにまとめて保存できないでしょうか
81 : >>80 saveコマンドがあります aaa=[1:1000]; save hoge.sav aaa とやれば変数aaaがhoge.savにテキスト形式で保存されます 読み出す場合は bbb=load('hoge.sav') とやればいいです この場合テキスト形式ですけど save -binary hoge.bin aaa とやればバイナリーで保存できますが、テキストよりもサイズが小さくなるかどうかはケースバイケースです 読み出しは ccc=load('hoge.bin') とやれば、勝手に保存形式を判断してくれます。 またMATLABのsaveコマンドで作られたファイルとの互換性もあるようです
82 : >>79 ・グラフがOctaveよりはきれい Ver. 3.3.54+ のFLTK Backendは,グラッフィクス,かなりよいですよ。 でも,自分でビルドしないと使えないのとMinGWではまだバグがある。 Ver 3.4はどれくらいかかるかな。 JWEさんのエンジンかかってきたから,数ヶ月後にはでるとおもうのですが。
83 : >>80 help save `-zip', `-z'とか`-hdf5'を使うと小さくなると思うのですが。
84 : 東京電機大学の松田先生の「Octaveの精義」がでました。
85 : ttp://www.amazon.co.jp/dp/4877832319/
86 : 開発版も様々なプラットフォームでのビルドがかなり安定してきています。 私は,MinGWのビルドしていますが状況はかなり改善しています。 3.4リリースが確実に近づいています。 新しい fltk Backend は,すばらしいものです。 できるだけ早く皆様が見る日がくればいいなと思います。 Debianなどでは,自力でビルドできる方がいらっしゃると思います。 ビルドできる環境におられるかたは 是非自力で開発版をビルドされて, その実力をみていただきたいと思います。
87 : Octave 3.4のリリースの準備としてOctave 3.3.90がリリース(ソースのみ) されました。 http://alpha.gnu.org/gnu/octave/ 多くの方にビルドいただき,3.4のリリースにご協力いただきたいと思います。
88 : Octave 3.3.90のMinGWでのビルドを行ってバイナリパッケージを作成してみました。 http://www.tatsuromatsuoka.com/octave/Eng/Win/
89 : Octave 3.3.91のMinGWでのビルドを行ってバイナリパッケージを作成してみました。 http://www.tatsuromatsuoka.com/octave/Eng/Win/ いくつかのバグがフィックスされています。
90 : >>89 テストパッケージ、ありがたく使わせてもらっています。 octaveと直接関係ないところで申し訳ありませんが。。。 パッケージに入っているckwなのですが、ckw.cfgの以下行が Ckw*chdir: d:\usr\Tatsu 自分の環境に存在しないディレクトリだとckwが 立ち上がらないようです。
91 : >>89 入れてみましたけど octave:1> backend("fltk") error: `backend' undefined near line 1 column 1 となりますね。 plotするとgnuplotで描画されます。
92 : >>91 graphics_toolkitに変わったみたいですよ(たしか)
93 : >>92 確認しました octave:1> graphics_toolkit('fltk') octave:2> xx=[0:100]; octave:3> yy=sin(xx./5); octave:4> plot(xx,yy) これで表示されました
94 : >>90 ckw のご指摘ありがとうございました。
95 : Octave-3.4.0のソースがリリースされました。 http://www.gnu.org/software/octave/download.html 各ディストリビユーターによるバイナリのリリースはこれからだと思います。 なお,Windows版はMaintanerのBenjamin Lindnerさんの準備状況から 少し時間がかかると思います。 混乱を避けるため,3.4.0のtesting binaryを私の方から出すことは しないつもりです。 直前のスナップショットの3.3.92を出すかもしれません。 (たぶん中身はほとんど変わらない)
96 : GUI Octave なるものがあるそうです。 https://sites.google.com/site/guioctave/
97 : >>96 GNUplotを使ってたり残念感がありますね ckwとgnuplotをwxt拡張で使ってる方がまだましというか どうせならScilabやR言語のグラフ機能を乗っ取ったとかの方が良かった
98 : >>97 まあ,3.4になってfltkになればよくなると思いますが。Windowsでは, まだしばらく3.4のリリースかかりそう。
99 : 3.4をビルドしてみたけど、fltkでついにui系の機能が実装され始めたみたいだね。 今のとこuigetfile、uiputfile、uigetdir、uimenuだけだけど、今まで手つかずだっただけに素晴らしい! ところで、fltkって画像ファイルの出力ってできないんだろうか? graphics_toolkit fltk; plot(1:10); print('test.eps','-deps'); とかやっても、空っぽのファイルしか出来ないんだけど…。 他の形式でも同様。 …うん、printはgnuplot backend使えって話はごもっともなんだけど、アニメーション作成用に もうちょっと高速な出力手段を模索中。 誰か情報持ってない?
100read 1read 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
・ 次のスレ
37: zsh その6 (837)
38: netatalkについて語るスレ (822)
39: 雑談スレだよもんもんもん☆もんだよだよもん!{33} (105)
41: 今までにオライリー本何冊買いましたか? (457)