1read 100read
2012年07月UNIX40: データ解析ツールoctaveを語ろう Part 2 (363) TOP カテ一覧 スレ一覧 2ch元 削除依頼
WXG for Linux/FreeBSD (639)
ライセンスあれこれ (502)
unixと数学 (302)
おれは操作ミスでこんな被害を出したぞ! (312)
ジャーナリングファイルシステム (309)
FreeBSD Q&A for beginners, part 108 (228)

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


1 :2009/10/28 〜 最終レス :2012/10/22
知る人ぞ知る強力なデータ解析ツール 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元 削除依頼
【さぁ】NetApp【あっぷっぷ】 (599)
muttを使おう (815)
*BSDニュース@2ch その5 (906)
正規表現 (800)
UNIX使いなのにプログラミングできないヤシ (794)
Tru64とAlphaってどう思いますか? (367)
--log9.info------------------
【東京ワールド】中庭健介応援スレ9【跳べ!4T】 (418)
☆☆☆ソチ五輪フィギア日本代表☆☆☆ (687)
ケヴィン・レイノルズ応援スレ9 (687)
アリッサ・シズニー応援スレ part2 (612)
ブライアン・ジュベール Part29 (432)
【なん】ハビエル・フェルナンデスPart1【です】 (266)
【ペア】高橋成美選手はオリンピックに出れるの? (252)
【妄想ポエム】青嶋ひろの Part5【御用ライター】 (888)
悪質な寒国工作員のせいでヨナ嫌いになった人の数 1 (634)
ジェフリー・バトル Part49 (359)
日本のスケートリンク問題について語ろう part4 (892)
フィギュアスケート☆西野友毬 Part8 (256)
*○* スレ立て代行 依頼スレpart4 *○* (393)
アイスクリスタルってどうよ!その14 (613)
フィギュアスケート★アイスダンス Part64 (945)
フィギュアスケート☆山田満知子 (476)
--log55.com------------------
【新型肺炎】備蓄スレ【コロナウイルス】 Part.11
【新型肺炎】備蓄スレ【コロナウイルス】 Part.12
【肺炎】2019年新型コロナウイルス総合スレPart10
【新型肺炎】備蓄スレ【コロナウイルス】 Part.13
【肺炎】2019年新型コロナウイルス総合スレPart11
【新型肺炎】備蓄スレ【コロナウイルス】 Part.14
【肺炎】2019年新型コロナウイルス総合スレPart12
IDにHIVかAIDSがでたらエイズが治るスレ Part20