トップページunix
211コメント119KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2009/10/28(水) 22:13:01
知る人ぞ知る強力なデータ解析ツール octave ...

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

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

そのPart 2です

前スレ

データ解析ツールoctaveを語ろう
http://pc12.2ch.net/test/read.cgi/unix/1086016412/
0002octave for windowsメモの筆者2009/10/29(木) 00:07:36
>>1 スレたてありがとうございます。
0003名無しさん@お腹いっぱい。2009/10/29(木) 02:35:44
ロリコンのオイラにも使いこなせだろうか…
0004名無しさん@お腹いっぱい。2009/11/06(金) 10:32:08
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;

とやればいいようです。
0005名無しさん@お腹いっぱい。2009/11/06(金) 10:56:36
電卓や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を使います。
それらの使い方の例を次に示します。
0006名無しさん@お腹いっぱい。2009/11/06(金) 11:02:54
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;
0007名無しさん@お腹いっぱい。2009/11/06(金) 13:40:31
>>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と同じ並びだったりします
0008octave for windowsメモの筆者2009/11/06(金) 18:27:07
>>5
他の視点としてはC, fortran, C++で書けば速いコードができるのだが,
プログラムを書くのに時間がかかってしまのですが,octaveなどで組み込みの
強力なツールを使えばプログラミングが早く終わるケースなどがあります
よね。

ちょっとして問題までコンパイラを使うのは時間の無駄だと思います。

また,プログラミングする前のプロトタイプ作成にも有効ですよね。

liboctaveはC++で動く数値演算クラスライブラリとして有用ですし,
octaveのスクリプトからの移植は,比較的容易ですので真剣に高速化したい
ときも近道になりますよね。

私の主なoctaveの用途はodeのソルバーと固有値問題解析です。

いろんな場面で連立微分方程式を解く

超音波は波動を使った研究をしていて波動方程式はフーリエ変換すると固有値
問題になるのでそのときもoctaveが大変約に立っています。

ExcelでVBAでルンゲクッタ公式を書いて,微分方程式を解いているのを見ている
となんと時代遅れで時間の無駄なことをしているのだろうと
思ってしまいます。
スティッフな問題なんぞに対応できないですしね。

#ところで,思い切りスレ違いですが,
非線形最小2乗法はgnuplotもかなり強力ですよ。
0009名無しさん@お腹いっぱい。2009/11/06(金) 19:16:01
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))
------------------------------------

解決法知っている方おられましたらよろしくおねがいします。
0010octave for windowsメモの筆者2009/11/07(土) 05:44:41
>>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への乗り換えをお勧めします
0011octave for windowsメモの筆者2009/11/07(土) 07:12:46
>>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をお使いください。
0012名無しさん@お腹いっぱい。2009/11/09(月) 15:56:31
>>10 >>11

レスありがとうございます。
gnuplotはcygwin導入前から導入していてそれを使えるようにしたかったんです。
octaveはcygwinから使えるよっていうのをwebで見て
じゃあoctave/cygwinと単体で導入していたgnuplotをコラボさせましょうということで進めていくと
>>9 のような事態になりました^^;
MinGW版のoctaveさっそく導入しましたら一発で解決しました。
情報提供感謝でございます。

P.S.
あと>>9の補足ですが、octaveとgnuplotをつなぐための設定ファイルの内容ですが
参考として挙げたwebページではwgnuplotに投げるとなっていますが
ほかのページも巡回して検討し、pgnuplotとしてました。
まあ、それでも同じ現象が出たので設定ファイルのせいではないのかなと考えてます。
0013octave for windowsメモの筆者2009/11/10(火) 08:56:21
>>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を使わないと
いけません。
0014octave for windowsメモの筆者2009/11/15(日) 06:27:13
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に対するバグは解消されたようです。
0015octave for windowsメモの筆者2009/11/21(土) 14:57:57
Octave 3.2.4のリリースにむけたパッチの募集が始まりました。

http://old.nabble.com/3.2.4-call-for-patches-tt26440879.html
0016名無しさん@お腹いっぱい。2009/11/22(日) 02:25:10
mingw版の3.2.2使ってるのですが、何かplotを連続でした場合
今までのは書き換わるだけだったのに
3.2.2のは画面がクリアされて一瞬白くなって
連続で書き換えるとチカチカして非常に見にくい。
0017octave for windowsメモの筆者2009/11/22(日) 05:29:44
>>16

その問題はmingw版だけの問題ではなく,octave-3.2.2ではそうなります。
(バグです。)
octave-3.2.3では,解決してますので,そちらをお使いください。
0018octave for windowsメモの筆者2009/11/23(月) 18:29:01
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
0019名無しさん@お腹いっぱい。2009/11/30(月) 20:22: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
>
0020octave for windows メモの筆者2009/12/01(火) 01:05:58
>>19

mexがうごかないといってるようですね。

octave version 3.0からmexに
対応していますが,バイナリ互換ではないのでmexのCのソースから
octave用のmexを作成しなおす必要があります。

まずは,mexのソースコード(c言語で書かれています。)を持っているかを
確認してください。

mexのソースがなければ,octaveで動かすのは無理です。

これは,ライセンスなどにもかかわるので,mexのソースコードが手に入らない場合
mexのコードをともなうMATLABのコードをoctaveで動かすのは無理だと考えて
ください。
0021名無しさん@お腹いっぱい。2009/12/02(水) 09:59:34
>>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でも動くようにしてくれるとは思います。
0022名無しさん@お腹いっぱい。2009/12/02(水) 13:55:31
みなさまありがとうございます。そういうことでした。
0023名無しさん@お腹いっぱい。2009/12/16(水) 22:13:45
matlabのkmeans関数ってoctaveには(少なくとも同じ名前では)無いようですが、
別名で同じ機能の関数ってあるのでしょうか?
それともこれは自前で作成するしかないですか?
0024octave for windows メモの筆者2009/12/21(月) 18:11:04
>>23 私はmatlabユーザーではないのでよく分かりませんが,
そもそもkmeans関数はどのような機能の関数なのでしょうか?
また,mファイルで書かれている関数で,ソースが手に入るのならば,
octaveで動かせる可能性があります。
mexでもソースが手に入れば,octaveでmexを作成しなおせば,
動く可能性があります。
0025名無しさん@お腹いっぱい。2010/01/06(水) 09:48:14
>>19
>>21
dynare の version が 4.1.0にアップデートされました。
Octave 3.2.3 で動きます。
0026名無しさん@お腹いっぱい。2010/01/15(金) 01:17:52
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 関数を呼び出すようにしているもの

一応、動作確認しています。バグ残っているかも知れません.
(すぐには対応できないと思います).ご参考になるかと思いお伝えしました.
0027:octave for windows メモの筆者2010/01/19(火) 18:54:33
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
0028:octave for windows メモの筆者2010/01/20(水) 08:52:38
octave 3.2.4のRelease Candidateがでてます。
もうすぐ,octave 3.2.4がでると思います。

おそらく,3.2シリーズは3.2.4で終わりで,次はoctave 3.4がでると思います。
ビルドシステムの大幅な変更があります (libtoolを使ったものになります。)。
一般の方にはあまり関係がないと思いますが,自分でビルドされる方は
maintainersのMLをご覧になって情報を収集されることをお勧めします。
思いますが,
0029octave for windows メモの筆者2010/01/24(日) 12:37:21
octave 3.2.4のソースがでました。(unofficialだそうです。)

ttp://old.nabble.com/3.2.4-release-to27272214.html

をごらんください。
0030octave for windows メモの筆者2010/01/30(土) 09:07:05
Octave公式Webにはまだのっていないようですが,octave-3.2.4 のソースがアップロードされています。

ttp://old.nabble.com/Octave-Version-3.2.4-Released-to27353121.html#a27353121

おそらく,3.2シリーズでは最後のリリースとなると思います。
3.2.3で問題となったバグがかなりフィックスされているようです。
各種バイナリもそのうち整備されると思います。 
0031:octave for windows メモの筆者2010/02/03(水) 17:40:31
Cygwin 版のOctave 3.2.4のバイナリが配布されています。
0032:octave for windows メモの筆者2010/02/18(木) 13:58:35
Octave のMLにGNU ProjectのリーダーのRichard Stallman氏が登場して,
Mathworks社のライセンス(Matlabが関係すると思います)についての話題が
提供され,現在,精力的に議論が行われています。

法律的なこともかかわっているので正直言って理解できないことが多いのですが
ライセンスについては,敏感な立場の方がおられると思いNabbleのアーカイブ
のURLを書いておきます。

ttp://old.nabble.com/Mathworks-hosted-GPL'd-software-to27550496.html

をご覧ください。
0033::octave for windows2010/02/23(火) 12:35:16
計算のたびに以下のように
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
0034:octave for windows メモの筆者2010/02/23(火) 18:09:54
>>33
ttp://old.nabble.com/Re:-Really-Long-Command-Prompt-p27222063.html
0035octave for windows メモの筆者2010/03/26(金) 08:55:03
Windows 版Octave-3.2.4がでました
ttp://sourceforge.net/projects/octave/files/
からどうぞ。
0036octave for windows メモの筆者2010/03/26(金) 18:01:51
>>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
対処はできそうです。
0037octave for windows メモの筆者2010/03/26(金) 19:22:22
たびたびすみません。<m(__)m>
>>36 のについては
ttp://old.nabble.com/flicking-problem-again-Octave-3.2.4-mingw32-td28038688.html
なんか何もしなくても,うまくいきだしました。^^;
0038名無しさん@お腹いっぱい。2010/04/06(火) 19:30:51
mingwの3.2.4を入れてみたけど
wxtターミナルで、plotしたあとに
xlabel('hoge');
drawnow;
とやっても反映されないのね
plotコマンドを再実行すると反映されるので
xlabel, ylabelで定義してから
plotする流儀に変わったのかな
0039名無しさん@お腹いっぱい。2010/04/06(火) 20:05:32
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近くの性能が出るかもしれません。
0040名無しさん@お腹いっぱい。2010/04/08(木) 23:17:13
>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 )

とかもっともシンプルに打っても動きがヘン
0041octave for windows メモの筆者2010/04/09(金) 15:38:24
>>38,>>40
たぶん,oct2matというoctave-forgeのパッケージがぶつかっているせいだと
思います。
その他,Octave 本家のMLで話題になったことの対処法を拙ページに書いて
おりますのでよろしければ参考にしてください。
ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#100403
0042octave for windows メモの筆者2010/04/09(金) 15:56:46
>>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の作成には個人的には成功しています。

0043octave for windows メモの筆者2010/04/09(金) 15:58:21
>>42 からの続きです
使うマシンがないので公開はしていませんが,
mingwでatlasを作成するためだけにCygwin上でビルドした,
特別なGCCとどうやってスタティックライブラリから
dllを作るかは書いたほうがいいですかね。

あまり暇がないので,GCCの公開ぐらいならやりますが。

また,Benjmaminさんはどうもうまくmingw上のAtlasをハンドリングできて
いないようです。
彼は本当に高速な計算にはLinuxをお使いのようなので,
そこまで期待するのはちょっときついかもしれません。

今回octave-forgeのサポートがかなり増えていますので,相当なご尽力を
なさっていますのであまり多くを望むのは難しいでしょう。
0044402010/04/09(金) 18:02:17
>41
おお、サンクス。まともにプロットするようになった。

0045名無しさん@お腹いっぱい。2010/04/10(土) 09:44:04
そういえば、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

という警告が出ますな。正式な手続きがわからん
0046octave for windows メモの筆者2010/04/10(土) 13:33:31
>>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さん
も対応されるでしょう。
0047octave for windows メモの筆者2010/04/10(土) 13:56:50
>>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周りをいじらないといけないでしょうね。

いまは,我慢して無視するのが現実的かと思います。
どこかの
0048名無しさん@お腹いっぱい。2010/04/10(土) 15:35:16
警告の原因は、これ(↓)じゃないんですか。了解です
set (gca, 'xminortick', 'on', 'yminortick', 'on')
0049octave for windows メモの筆者2010/04/11(日) 12:18:20
>>48
はい
set (gca, 'xminortick', 'on', 'yminortick', 'on')
は警告の原因ではないようです。
mark_as_commandのコードをみましたが,3.2ではdeprecatedというフォルダに
はいっていて実質何もしていません。mark_as_commandが実行されたときに
エラーになるとコードが動かなくなるのを防ぐために存在しているようです。

というわけで,多分,octave-forgeのパッケージが将来的に対応すべき
問題なのでしょう。現時点ではやはり無視してつかうのでいいでしょう。
0050octave for windows メモの筆者2010/04/17(土) 17:31:46
>>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");

のようにすれば消すことができます。
0051名無しさん@お腹いっぱい。2010/04/24(土) 09:29:28
>>50
了解です

それとは関係ありませんが
前スレは、ここで安定して見れるっぽいです
ttp://ranran2.net/app/2ch/unix/1086016412
0052octave for windows メモの筆者2010/04/26(月) 12:23:21
>>51
おお! ありがとうございます<m(__)m>
0053名無しさん@お腹いっぱい。2010/04/26(月) 19:12:25
CSVファイルを読み込むためのdlmread関数を使うために
pkg load io
とすると
package io is not installed
と表示されるのですが、
ioパッケージって標準では入ってない物なのですか?
0054octave for windows メモの筆者2010/04/27(火) 18:05:28
>>53
octaveのバージョンはなんでしょう。また,platformはなんでしょう。
3.2.4ならdlmreadは,io パッケージでなくoctave本体に入って入ってますが。

また,octave-forgeのパッケージが何がはいるかはdistributorにもよるので
具体的な情報がないと誰もこたえられないと思います。
0055octave for windows メモの筆者2010/04/27(火) 18:12:08
>>53
書き忘れましたが,csvならばcsvreadも使えます。dmlreadで
セパレータ指定してもいいと思います。
0056名無しさん@お腹いっぱい。2010/05/19(水) 19:54:09
今さっき気がつきましたが

pkg load jhandles

でGNUTERMに何が設定してあっても、jhandleでグラフ描画するんですね
wxtはなんかグラフがはみ出すし、オーバーヘッドが大きいような気がしてました
0057octave for windows メモの筆者2010/05/20(木) 19:23:11
>>56
そうですね。3Dとかでmeshを細かく刻むとjhandlesじゃないと遅いですよね。

ただ,ginputをやろうとするとエラーがでたりします^^;。

3.4がでてFLTK backendが,まともになればjhandleもいらないかなとは
思います。

ただ,3.4リリースのための開発版3.3はMinGWではまだ不安定です。
gnulibでportabilityをあげようとしての結果なのだと思っています。
3.4のリリースはいつごろになるのかな。
0058名無しさん@お腹いっぱい。2010/05/20(木) 22:44:31
>>57
使ってみたらprintがだめっぽいですね
gif, png, jpgはだめ
MSVC版ではいんちきくさいながらも出来たのに

それとAuto Redrawしないので表示が消えちゃいます
drawnowすればいいだけですけど
実装があんまりよくないです

でもまあ、表示速度は段違いなので
経過を表示させる場合はいいかもです
0059octave for windows メモの筆者2010/05/21(金) 11:30:57
>>58
そうですね。まあ,MSVC版ではoctaveのメンテナーとjhandleのメンテナーが
同じ人でしたからね。

MinGWでSun Javaを扱うのが難しいなどで時間もかかったようですし,
FLTK Backendがまともになれば,jhandlesの意味も薄れるので力がそれ
実装がMSVC版ほど力が入っていないのはある程度しょうがないと思います。

pipeがwindowsでは遅いのでgnuplotが遅いのはあるていど仕方ないですね。
octaveからだとgnuplotはwindows NativeよりCygwinの方が大分速いですね。

私は,本当につかうグラフはデータ書き出してgnuplotでやります。
octaveからだとgnuplotの機能をフルには引き出せないので

octaveのグラフィックスはあくまでも経過表示用にしか使っていません。
0060名無しさん@お腹いっぱい。2010/05/21(金) 13:57:11
>>59
今出来るかどうか知りませんが、昔はこんな事してました

gset term postscript color
gset output 'hogehoge.ps'
plot (x1,y1)
gset term X11

単にprint文を知らなかっただけですけど
0061octave for windows メモの筆者2010/05/21(金) 16:34:10
>>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になる流れではと思います。
0062octave for windows メモの筆者2010/05/26(水) 19:40:02
今日,MinGW上でgcc-4.5.0でdevelopment branchのoctaveビルドしました。
先月ビルドしたときは,極めて不安定ですぐseg-faultを起こしていましたが
今日は安定して動いています。

fltk バックエンドも軸がちゃんと表示できるようになっていましたし,
連続プロットもgnuplotに比べかなり高速です。
ただしマウスで3Dぐりグリができなさそうなのが残念ですが。

しかし,MinGWはdevelopment branchのなかで一番対応が遅れていたのですが
これでなんとかなるめどがついた気がします。

あまり遠くない時期にoctave3.4が出てくるような気がします。

0063名無しさん@お腹いっぱい。2010/06/26(土) 11:09:20
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
なのでデュアルコア自体は効いてるようです
0064octave for windows メモの筆者2010/07/26(月) 18:27:24
>>62

最近のdevelopmentブランチをビルドしてみました(MinGW,gcc)。
fltkでepsを作成できるようになっており,またマウスによる3dの回転も
できるようになっています。
fltkもだいぶ実用に耐えるようになってきた感じです。
なにしろ高速なのがいいです。やっぱりOpenGLをつかっているからでしょう。

pkg installにもバグがあったようですが,それも解消されているし,
developmentブランチへの乗り換えを画策しています。
0065名無しさん@お腹いっぱい。2010/08/14(土) 01:19:11
数学セミナーの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個まで増やすとどうなるか
という事について書かれてます。
0066名無しさん@お腹いっぱい。2010/09/14(火) 21:48:37
既知の問題であれば申し訳ないのですが、ちょっと困っています。
以下のようにして、

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を数桁大きくすると正しく計算できるようです。

お手数ですが、この問題の回避策があれば教えていただけないでしょうか?
0067662010/09/14(火) 21:52:39
すみません、書き忘れました。
Win版 3.2.4です。
0068名無しさん@お腹いっぱい。2010/10/12(火) 03:41:06
保守
0069octave for windows メモの筆者2010/10/16(土) 17:54:10
>>51
現在 前スレ見れるところ
ttp://logsoku.com/thread/pc8.2ch.net/unix/1086016412/
0070名無しさん@お腹いっぱい。2010/11/13(土) 10:00:19
OctaveやFreeMATではMATLABのstemにあたるマッチ棒のようなプロットはどうやるんですか?
0071名無しさん@お腹いっぱい。2010/11/14(日) 00:32:04
cvytvftvyghgbvyvybuhjkkvghghvgvgfvgfcjnhjgjhhuihuyfgvcg
0072octave for windows メモの筆者2010/11/15(月) 16:46:45
>>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");

もっと詳しくはマニュアルを
0073octave for windows メモの筆者2010/11/24(水) 08:02:34
前スレでも,>>63 にもあるように,ちょくちょく話題になるGotoBLAS2 に
ついてライセンスが変わったとoctave ML 情報が入っています。

http://octave.1599824.n4.nabble.com/GotoBLAS2-license-td3055645.html

参考までに
0074名無しさん@お腹いっぱい。2010/11/24(水) 09:50:17
>>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
後藤和茂さんがヘッドハントされてからバージョンアップが止まってますが、
これも改善するかもしれません。
0075octave for windows メモの筆者2010/11/24(水) 19:04:09
>>73
Goto BLASの開発は,終了したようです。
http://blog.goo.ne.jp/nakatamaho/e/61d0cfbe1222364a3ef70505dce4f463

残念ですが。
0076octave for windows メモの筆者2010/11/24(水) 19:06:02
>>75 すみません。
74をみていませんでした<m(__)m>。
0077octave for windows メモの筆者2010/11/25(木) 14:49:21
>>74
>後藤和茂さんがヘッドハントされてからバージョンアップが止まってますが、
>これも改善するかもしれません。

そうですね。
天才ハッカー(いい意味でのハッカーです。)後藤さんのあとを
続くような方が現れてプロジェクトとして
立ち上がってくれればいいのですが。
0078名無しさん@お腹いっぱい。2010/12/21(火) 14:14:37
scilabとの違いが良くわからない
0079名無しさん@お腹いっぱい。2010/12/21(火) 15:21:18
>>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はパラメータのμ秒数だけ待つ命令
0080名無しさん@お腹いっぱい。2010/12/22(水) 13:33:15
データを全部テキストデータで保存すると
ファイル増えてしかたない
sqliteあたりにまとめて保存できないでしょうか
0081名無しさん@お腹いっぱい。2010/12/23(木) 22:20:35
>>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コマンドで作られたファイルとの互換性もあるようです
0082octave for windows メモの筆者2010/12/24(金) 17:39:00
>>79
・グラフがOctaveよりはきれい
Ver. 3.3.54+ のFLTK Backendは,グラッフィクス,かなりよいですよ。
でも,自分でビルドしないと使えないのとMinGWではまだバグがある。

Ver 3.4はどれくらいかかるかな。
JWEさんのエンジンかかってきたから,数ヶ月後にはでるとおもうのですが。
0083octave for windows メモの筆者2010/12/30(木) 05:32:50
>>80
help save

`-zip', `-z'とか`-hdf5'を使うと小さくなると思うのですが。
0084octave for windows メモの筆者2010/12/31(金) 06:32:59
東京電機大学の松田先生の「Octaveの精義」がでました。
0085名無しさん@お腹いっぱい。2011/01/02(日) 08:27:31
ttp://www.amazon.co.jp/dp/4877832319/
0086octave for windows メモの筆者2011/01/19(水) 18:39:37
開発版も様々なプラットフォームでのビルドがかなり安定してきています。
私は,MinGWのビルドしていますが状況はかなり改善しています。

3.4リリースが確実に近づいています。
新しい fltk Backend は,すばらしいものです。
できるだけ早く皆様が見る日がくればいいなと思います。
Debianなどでは,自力でビルドできる方がいらっしゃると思います。
ビルドできる環境におられるかたは
是非自力で開発版をビルドされて,
その実力をみていただきたいと思います。
0087octave for windows メモの筆者2011/01/24(月) 07:26:47
Octave 3.4のリリースの準備としてOctave 3.3.90がリリース(ソースのみ)
されました。

http://alpha.gnu.org/gnu/octave/

多くの方にビルドいただき,3.4のリリースにご協力いただきたいと思います。
0088octave for windows メモの筆者2011/01/28(金) 08:30:06
Octave 3.3.90のMinGWでのビルドを行ってバイナリパッケージを作成してみました。 http://www.tatsuromatsuoka.com/octave/Eng/Win/
0089octave for windows メモの筆者2011/02/02(水) 09:18:42
Octave 3.3.91のMinGWでのビルドを行ってバイナリパッケージを作成してみました。
http://www.tatsuromatsuoka.com/octave/Eng/Win/
いくつかのバグがフィックスされています。
0090名無しさん@お腹いっぱい。2011/02/08(火) 08:12:40
>>89
テストパッケージ、ありがたく使わせてもらっています。

octaveと直接関係ないところで申し訳ありませんが。。。
パッケージに入っているckwなのですが、ckw.cfgの以下行が

Ckw*chdir: d:\usr\Tatsu

自分の環境に存在しないディレクトリだとckwが
立ち上がらないようです。

0091名無しさん@お腹いっぱい。2011/02/08(火) 10:59:39
>>89
入れてみましたけど

octave:1> backend("fltk")
error: `backend' undefined near line 1 column 1

となりますね。
plotするとgnuplotで描画されます。

0092名無しさん@お腹いっぱい。2011/02/08(火) 12:32:24
>>91
graphics_toolkitに変わったみたいですよ(たしか)
0093名無しさん@お腹いっぱい。2011/02/08(火) 14:27:09
>>92
確認しました

octave:1> graphics_toolkit('fltk')
octave:2> xx=[0:100];
octave:3> yy=sin(xx./5);
octave:4> plot(xx,yy)

これで表示されました
0094octave for windows メモの筆者2011/02/09(水) 09:54:37
>>90
ckw のご指摘ありがとうございました。
0095octave for windows メモの筆者2011/02/09(水) 10:00:50
Octave-3.4.0のソースがリリースされました。
http://www.gnu.org/software/octave/download.html


各ディストリビユーターによるバイナリのリリースはこれからだと思います。

なお,Windows版はMaintanerのBenjamin Lindnerさんの準備状況から
少し時間がかかると思います。
混乱を避けるため,3.4.0のtesting binaryを私の方から出すことは
しないつもりです。

直前のスナップショットの3.3.92を出すかもしれません。
(たぶん中身はほとんど変わらない)
0096octave for windows メモの筆者2011/02/10(木) 07:16:38
GUI Octave なるものがあるそうです。

https://sites.google.com/site/guioctave/
0097名無しさん@お腹いっぱい。2011/02/10(木) 12:50:16
>>96
GNUplotを使ってたり残念感がありますね
ckwとgnuplotをwxt拡張で使ってる方がまだましというか
どうせならScilabやR言語のグラフ機能を乗っ取ったとかの方が良かった
0098octave for windows メモの筆者2011/02/27(日) 16:18:39.27
>>97
まあ,3.4になってfltkになればよくなると思いますが。Windowsでは,
まだしばらく3.4のリリースかかりそう。
0099名無しさん@お腹いっぱい。2011/03/27(日) 03:29:38.85
3.4をビルドしてみたけど、fltkでついにui系の機能が実装され始めたみたいだね。
今のとこuigetfile、uiputfile、uigetdir、uimenuだけだけど、今まで手つかずだっただけに素晴らしい!

ところで、fltkって画像ファイルの出力ってできないんだろうか?
graphics_toolkit fltk;
plot(1:10);
print('test.eps','-deps');
とかやっても、空っぽのファイルしか出来ないんだけど…。
他の形式でも同様。

…うん、printはgnuplot backend使えって話はごもっともなんだけど、アニメーション作成用に
もうちょっと高速な出力手段を模索中。

誰か情報持ってない?
0100名無しさん@お腹いっぱい。2011/04/15(金) 10:51:34.50
すみません,2ch初心者なんですが….
Octaveのプログラミングについて質問させていただける板ってどこにありますか?
「Octave」「octave」で検索かけてもこの板しか見つかりませんでした.
エラーの返ってきちゃう関数をどうすれば使えるか調べたいんですけど(汗)
0101名無しさん@お腹いっぱい。2011/04/18(月) 22:25:16.10
>>100
MATLABのスレを探してみてください
OctaveはMATLABのクローンなので

あと、エラーの返ってくる関数を調べる方法は知りませんが
エラー処理はtry, catch でやります



A=[1,2]
B=[1;2]
try
C=A+B
catch
%lasterr
disp('error!!')
D=A+B'
end

AとBはベクトルの向きが違うので、足すとエラーが出るのですが
エラーの出そうな処理をtryの後に書き、エラーが出た後の処理をcatchの後に書きます
コメントアウトしているlasterrは直前のエラーが何かを表示します
0102名無しさん@お腹いっぱい。2011/05/08(日) 12:20:29.28
octave for windowsはビルドが難航してるのかな?
0103名無しさん@お腹いっぱい。2011/06/13(月) 00:08:14.52
octave から gnuplot を使うとき、最近のバージョンのoctave だと
gset や __gnuplot_set とかが使えないんですが

set term tgif みたいな処理はoctave からはどのように
すれば良いんでしょうか?
0104octave for windows メモの筆者2011/06/16(木) 03:40:35.38
>>103
最近バージョンでは,gnuplotのコマンドを直接たたくことはできません。

plotしたあと
drawnow のdebug オプションを使って
>> drawnow ("tgif", "foo.tgif", false, "debug.gp")

>> system('gnuplot debug.gp');
でfoo.tgifを作成する。
ぐらいでしょうか
0105octave for windows メモの筆者2011/06/16(木) 03:56:40.97
>>104
すみません。やってみましたが,うまくいきませんでした。<m(__)m>
0106octave for windows メモの筆者2011/06/16(木) 04:07:12.45
>>105
うまくいかなかったのはWindows 版のgnuplot のbug のせいのようです。
windowsでは
system('gnuplot debug.gp');
system ('type debug.gp | gnuplot')でうまくいきそうです。
tgifをもっていないのでfoo.tgifをテキストエディタで確認しただけですが。

postscriptでうまくいったので,tgifでもおそらくいくと思います。
0107octave for windows メモの筆者2011/06/16(木) 06:58:04.50
>>103 たびたびすみません。ケアレスミスがあるので104-106は無視してください。

plotしたあと
drawnow のdebug オプションを使って
>> drawnow ("tgif", "foo.obj", false, "debug.gp");

でgnuplotのスクリプトdebug.gpを出力し
それをsystemコマンドでgnuplotでgif出力(foo.obj)させます。
>> system('gnuplot debug.gp');

debug.gp のデータはバイナリであり,windows 上ではgnuplotバクにより
正しくプロットされません。



0108octave for windows メモの筆者2011/06/16(木) 07:02:12.97
107の続き

windowsでは
>> system ('type debug.gp | gnuplot');
としてください。
0109octave for windows メモの筆者2011/06/16(木) 07:33:34.95
108 の続き


tgif はもっていないので,fig ファイルを生成するようにして
Cygwin 上Xfigで
でfoo.figを作成したところうまくいきました。

 >> drawnow ("fig", "foo.fig", false, "debug.gp");
 >> system ('type debug.gp | gnuplot');
 できたfoo.fig をXfigでよみこんでプロットを確認しました。
tgifでもうまくいくと思います。
0110名無しさん@お腹いっぱい。2011/06/18(土) 10:54:38.14
octave for windows メモの筆者さん
>>103です。
いろいろお答えいただきましてありがとうございました。

tgif への出力はできるようになりました。

私がoctaveを使いこなしていないからかも
知れませんが 個人的には gnuplot の細かい設定が
octave上からできる方が便利なのですが。
0111octave for windows メモの筆者2011/06/18(土) 17:08:46.76
>>110
Octave は3.2(3.2では試験的,3.4から本格的)から
Open GL ベースのグラフィックスを扱うようになり,
整合性の観点から低レベルでgnuplotを直接触ることはやめになりました。
その代わり,octave-forgeにgnuplot パッケージがあり,
gnuplotを直接いじりたい方はそちらを使うという思想のようです。
0112octave for windows メモの筆者2011/06/18(土) 17:15:21.41
>>111 gnuplotとパッケージのReferenceはこちらから,
http://octave.sourceforge.net/gnuplot/overview.html

説明がわかりにくいのでつかったことはありません。
0113名無しさん@お腹いっぱい。2011/06/18(土) 20:09:09.69
>>112
意外と良いかも
0114名無しさん@お腹いっぱい。2011/06/20(月) 11:49:46.70
cygwin x上で以下のようなエラーが出てgnuplotを使うことができません.どなたか解決策が分かる方いましたら教えて下さい.

octave:1> x = [0.0, 0.2, 0.4]
x =

0.00000 0.20000 0.40000

octave:2> plot(x, sin(x))
error: Invalid call to strcat. Correct usage is:

-- Function File: strcat (S1, S2, ...)

error: called from:
error: /usr/share/octave/3.4.0/m/help/print_usage.m at line 87, column 5
error: /usr/share/octave/3.4.0/m/strings/strcat.m at line 92, column 5
error: /usr/share/octave/3.4.0/m/plot/__gnuplot_get_var__.m at line 113, column 11
error: /usr/share/octave/3.4.0/m/plot/__go_draw_axes__.m at line 40, column 18
error: /usr/share/octave/3.4.0/m/plot/__go_draw_figure__.m at line 167, column 19
error: /usr/share/octave/3.4.0/m/plot/__gnuplot_drawnow__.m at line 86, column 5
0115octave for windows メモの筆者2011/06/21(火) 00:54:07.79
>>114
どうもCygwin1.7.9-1とOctave+gnuplotの相性が悪いようで
Cygwin を1.7.8-1のダウングレードすると動きます。
0116名無しさん@お腹いっぱい。2011/06/21(火) 15:01:05.47
114です.
cygwinのバージョンを1.7.8-1に直したところグラフ表示できました.ありがとうございました!!
0117名無しさん@お腹いっぱい。2011/06/21(火) 21:24:25.60
最近octaveを始めたんだけど
octaveのサポート状況の良いディストリってどれ?

ubuntu のoctave はバージョン古い。
FreeBSDのportsのoctaveなんかは最新のおっかけは凄いけど
portsからのインストールは遅い。
0118octave for windows メモの筆者2011/06/22(水) 03:04:37.49
>>117
jweさんがDebianだからのぞいてみたけど,まだ3.2.4のままですね。
octaveの本家のMLをみるとLinuxの人は割りと自分でビルドしているようです。
0119octave for windows メモの筆者2011/06/22(水) 06:18:06.49
>>117 >>118 Unix はよくわかりませんがぐぐったら以下がでてきました。
octave Download - Linux Packages Search (RPM, DEB, XZ, TXZ, TGZ)
http://pkgs.org/package/octave
3.4.0のようです。
0120名無しさん@お腹いっぱい。2011/06/24(金) 03:56:24.07
FreeBSDでは、現在 3.4.1 です。
なんか凄い気合入って追っかけているような感じ。
0121octave for windows メモの筆者2011/06/24(金) 04:04:41.54
>>120 FreeBSDのOctaveのメンテナーの方を知っています。
(日本人です。)
その方は多倍長BLASの作者でもあります。
最近連絡を取りました。

ところでoctave 3.4.1には,mkoctfileにバグが見つかり,
3.4.2の準備段階です。(現在RC2がでている)。
FreeBSDは,3.4.2がでたらすぐ対応するようです。
0122名無しさん@お腹いっぱい。2011/06/24(金) 23:22:10.88
しばらくはFreeBSDだな。
Octave のためだけに。
0123名無しさん@お腹いっぱい。2011/06/25(土) 00:23:16.92
VMwareにFreeBSD入れておくか
0124名無しさん@お腹いっぱい。2011/06/25(土) 01:55:02.93
octaveのメーリングリストを見ていると
MysqlでもCUDAでも何でも新機能を導入しようとする場合に
John W. Eaton氏が、GPLかどうかを問いかけて潰れていってる気がする

Rなんか2009年の段階でGPU対応してるのに
http://brainarray.mbni.med.umich.edu/Brainarray/Rgpgpu/
Mysqlにまで対応している
http://www.okada.jp.org/RWiki/?RMySQL

じゃあScilabでもいいやと調べてみても
まともなものが無い
Scilabは他のtoolboxも貧弱だし
0125octave for windows メモの筆者2011/06/25(土) 02:16:04.98
ソースだけど3.4.2がでました。
http://octave.1599824.n4.nabble.com/GNU-Octave-3-4-2-Released-td3622778.html
0126octave for windows メモの筆者2011/06/25(土) 02:33:11.93
>>124

MySQLはoctave-forgeで対応している気がする。
自分では使わないから詳細はわかりませんが。

http://octave.sourceforge.net/database/overview.html

These are bindings that allow SQL queries and other database operations
on postgres, mysql, sqlite, and standard ODBC databases from within
Octave. A simplified interface that is uniform across all database types
is provided, as well as the entire C client API for each database
(libpq, libmysqlclient, etc).
0127octave for windows メモの筆者2011/06/25(土) 02:42:05.19
>>124 >>126
こんなページもあります。
http://octave-swig.sourceforge.net/octave-db.html

これを見る限りOctave-forgeのdatabase パッケージにてMySQLには
対応できるのではと思います。
0128octave for windows メモの筆者2011/06/25(土) 06:29:16.81
>>124
CUDAについては,OctaveはGPLですので,
jwe氏が言うことは仕方のないことなのでしょう。
OctaveがGPLから他のライセンスに変えるか,GPLが変わるか
CUDAがかわるかどちらかでないといけないのでしょうが,
まあ実現はしないのだと思います。

ところで,MySQLは,
http://www-jp.mysql.com/about/legal/licensing/faq.html
にあるように問題がないように思います。
だからOctave-forgeのdatabaseパッケージでMySQLはサポートされている
のだと思っています。
0129octave for windows メモの筆者2011/06/25(土) 06:35:35.07
>>128
ただし,再配布せず自分でやる分には問題がないと思います。
以前GotoBLASが,GPL非互換だったとき自分でソースからビルドして,
octaveのビルド時に組み込んで使用することはできました。

かなり,億劫なことになりますが,
http://scinesur.wordpress.com/2009/11/12/cuda-on-octave-3-x-in-linux-64-bits/
なこのページもあることですし,自力でやることはできるのかなと思います。
0130名無しさん@お腹いっぱい。2011/06/25(土) 08:57:30.61
>>126
mingw版もcygwin版も(どちらも3.2.4)

octave:5> pkg install database-1.0.4.tar.gz

で入れようとしても、内部のmakeでこけますね

tar.gzを直接開いて./configureしてみると
sqlite3でwarningが出るし
結果がこれで

octave-forge is configured with
octave: octave (version 3.2.4)
mkoctfile: mkoctfile for Octave 4
swig: pre-generated
postgres: postgresql/libpq-fe.h not found
mysql: mysql/mysql.h not found
sqlite3: yes
odbc: yes

postgresqlやmysqlはライブラリが必要みたいだし
makeもsqliteの段階でこけるので、unix系なら動くのかもしれませんが
Windowsでは無理っぽいですね
0131octave for windows メモの筆者2011/06/25(土) 12:23:55.27
>>130

そうですね。3.0.xのころdatabaseパッケージを四苦八苦していれましたが,
postgres と mysqlはあきらめてsqlite3とodbcだけでやったことがあります。

CygwinならたしかpostgresqlがOctaveを意識せずにあったような気がしますが,
それを使ってpkg installをしたことがないので,なんともいえません。
Cygwinの方がUnixに近いのでライブラリをかき集めれば何とかなるかも
知れません。
0132octave for windows メモの筆者2011/06/29(水) 02:59:55.51
MinGWの体験版のOctave-3.2.4バイナリを作成し,配布してます。
http://www.tatsuromatsuoka.com/octave/Eng/Win/

あくまでも体験版で,
Octave-forgeがはいっていませんし,バグもあると思います。
インストーラーなる気の利いたものもなく,zipファイルを解凍して
適当なフォルダにおきます。
ビルドに必要なツールも一応いれたつもりなので,自分でビルドしてみたい
方はどうぞ。ただし,あまり丁寧な説明はしていません。
0133名無しさん@お腹いっぱい。2011/07/04(月) 06:29:50.28
どなたか賢い方、助けて下さい…

Benjaminさんの
Octave-3.2.4_i686-pc-mingw32_gcc-4.4.0_setup.exe
で、コマンドラインからのpath指定が効かないんですが、なんとかなりませんでしょうか?

> octave.exe --path c:\
> octave.exe --path c:\\
> octave.exe --path c:/
> octave.exe --path c://
> octave.exe --path /c/

いずれもダメでした。
Linuxなら特に問題ないのですが…
0134octave for windows メモの筆者2011/07/04(月) 15:21:59.89
>>133 Cygwin版ならちゃんと動くんでバグかもしれません。
0135octave for windows メモの筆者2011/07/04(月) 15:28:18.58
>>133

>octave --eval "cd c:\\" --persist
で代用できませんか?
0136octave for windows メモの筆者2011/07/04(月) 15:38:46.46
>>134, 135 すみません勘違いです。

マニュアルによれば
--path path
-p path
Add path to the head of the search path for function files.
The value of path specified on the command line will override any
value of OCTAVE_PATH found in the environment, but not any commands in
the system or user startup files that set the internal load path
through one of the path functions.

となっていて,Cygwin版でもMinGW版でも OCTAVE_PATH には,なにも反映され
ない。Linuxでの期待通りの動きとはどんなものですか?

Linuxもってないのでわからないので。
0137名無しさん@お腹いっぱい。2011/07/04(月) 23:18:23.00
>>134-136
試して下さって、大変ありがとうございます!!

Linux版なら、
$ octave -q --path /home/user/work
octave:1> path
.
/home/user/work (←このフォルダが存在する場合のみ)
/usr/lib/octave/3.2.4/site/oct/i686-pc-linux-gnu
/usr/lib/octave/site/oct/api-v37/i686-pc-linux-gnu
...
となります(恐らくご想像通りでしょうが…)。

ちなみに、
$ OCTAVE_PATH=/home/user/work octave -q
でも同義です。

こちらでも迂回策を探してはいるのですが、環境変数も効きませんし、なかなか…
0138octave for windows メモの筆者2011/07/05(火) 01:47:59.89
>>137
octave --eval "addpath C:\\" --persist
ではいかがでしょうか。
0139octave for windows メモの筆者2011/07/05(火) 01:56:50.28
>>137 蛇足です。Cygwin版のoctaveでは,おっしゃられている動作をする
ようです。MinGWならではのバグのようです。

職場のパソコンで自分でビルドした3.4.2(MinGW)でも,動作しなければバグ
報告をします。
0140octave for windows メモの筆者2011/07/05(火) 06:45:34.07
>>139 職場のパソコンでoctave 3.4.2と3.2.4(Benjamin版)で試してみました。

octave --path c:\
***********
3.2.4
.
C:\Programs\Octave\3.2.4_gcc-4.4.0\share\octave\packages\zenity-0.5.7
 (以下略)
**************
3.4.2
.
C:
C:\octave\3.4.2\lib\octave\3.4.2\site\oct\i686-pc-mingw32
:
(以下略)
となるのですが
octave --path C:\octave

Octave's search path contains the following directories:

.
C:\octave
C:\octave\3.4.2\lib\octave\3.4.2\site\oct\i686-pc-mingw32
:
 (以下略)
**********************

0141名無しさん@お腹いっぱい。2011/07/05(火) 07:58:49.52
>>138
ありがとうございます、現在そちらの方向で検討中です。

>>140
え?なぜ3.4.2はそんな残念な動作に…
3.2.4(Benjamin版)ではC:\Octaveを指定しても駄目なようですね

こちらの職場PCにはBenjaminさんのメモにしたがってビルドした
3.2.4がありますので、そちらも試してみます。
0142octave for windows メモの筆者2011/07/05(火) 08:11:41.89
>>141
140 は長くて,2chにおこられたので,後から続きを書こうとしてわすれていました。
どーもドライブのルートディレクトリの場合は失敗して,C:\とならず,C:
となるのですが,C:\octaveのような場合は大丈夫です。

一応,development branch でも試すために,現在ビルド中です。 
0143octave for windows メモの筆者2011/07/05(火) 09:51:31.50
>>142 予想通りDevelopment Branchのソースからビルドしても,
octave --path c:\
のようなルートディレクトリの指定はバグってますね。
時間があるときにbug trackerに登録します。
(直るかどうかわかりませんが。)
0144octave for windows メモの筆者2011/07/05(火) 10:18:47.77
>>143 bug tracker に登録しておきました。
https://savannah.gnu.org/bugs/?33714
0145名無しさん@お腹いっぱい。2011/07/05(火) 23:05:49.70
>>143
大変感謝です…。

ちなみに、Benjaminさんメモに従ってビルドした3.2.4ですが、
MSYS環境ではpath指定が通りました。

コマンドプロンプトからはlibgcc_s….dllが足りないとか言われて
実行できなかったので、未検証です。
(MSYS環境以下を探しても見つからなかったので諦めてましたが、
よく考えたらMinGW環境以下にありそうですね…忘れてました)
0146octave for windows メモの筆者2011/07/06(水) 01:46:53.64
>>145
Msys 環境下で指定がうまくいくということは,パスのハンドリングが
octave --path でUnix likeになっているからかもしれません。
なお,libgcc_s….dllなどたらない,dllは,Benjaminさんのビルドのbin
ディレクトリからコピーして,自分でビルドしたoctave.exe,
octave-3.2.4.exeのあるディレクトリにペーストすればいいです。

または,バッチファイルなどでBenjaminさんのビルドのbinディレクトリに
パスを通すという手もあります。

0147名無しさん@お腹いっぱい。2011/07/06(水) 18:47:15.59
>>146
コマンドプロンプト環境下で試してみました。
dllはOctaveのビルドに使用したc:\mingwのbinにパスを通して
対処してます。

octave --path c:\msys -> OK
octave --path c:\ -> OK(ちゃんとc:\と表示される)
…あれ?

Benjaminさんメモに従うとコンパイルは自動で流れるので、
できるバイナリはインストーラで配布されているものと
同じはず、だと思うんですが…?

なお、本来の目的はOctave起動後にaddpathすることで達して
おりますので、これ以上追いかける意味は無くなってしまったのですが…。
ご報告まで。
0148octave for windows メモの筆者2011/07/06(水) 21:34:11.72
>>147
ご報告ありがとうございました。
回避法があるとはいえ,不思議ですね。
0149名無しさん@お腹いっぱい。2011/08/03(水) 16:34:09.93
質問いいでしょうか?
画像をfft2して、その後、元の画像に戻るかiff2でチェックしたいのですが、どうもうまくいきません・・・
プログラムのどこが悪いのでしょうか?

Iin=imread('BOAT.bmp');% 画像の入力
figure,imagesc(Iin,[0 255]);% 画像表示
colormap(gray);
axis image;

%FFT変換
Iin_d=double(Iin);
O_fft=fft2(Iin_d);% FFT
O_fft=fftshift(O_fft);
O_fft=(abs(O_fft));
O_fft=10*log10(O_fft);% FFT結果のlog表示
figure,imagesc(O_fft,[0 MAX]);% 画像表示
colormap(gray);
axis image;

%逆FFT
O_fft2=(abs(O_fft2));
O_fft2=10*log10(O_fft2);
O_fft2=fftshift(O_fft);
O_fft2=real(ifft2(O_fft2));
figure,imagesc(O_fft2,[0 MAX]);% 画像表示
colormap(gray);
axis image;

どなたかお願いします
0150octave for windows メモの筆者2011/08/08(月) 09:37:41.35
>>149
画像処理は詳しくありませんが,演算が逆演算になっていないような気がします。
0151名無しさん@お腹いっぱい。2011/08/08(月) 14:03:14.87
abs()をつけてる時点で虚数次元が飛んでますからね
0152octave for windows メモの筆者2011/08/08(月) 16:59:04.63
>>149 >>150
自信なし:一応画像で確認した。

Iin_d=double(Iin);
O_fft=fft2(Iin_d);% FFT
O_fft2=real(ifft2(O_fft)); %ifft
figure,imagesc(Iin,[0 255]);

fftした結果を演算されていますが,もとのイメージのフーリエ空間での
画像に演算をされておられるので情報が変わってしまっています。
したがって,ifftで戻るはずは原理的にないような気がします
0153octave for windows メモの筆者2011/08/08(月) 17:55:52.63
>>152
訂正

Iin_d=double(Iin);
O_fft=fft2(Iin_d);% FFT
O_fft2=real(ifft2(O_fft)); %ifft
figure,imagesc(O_fft2,[0 255]); %ここを訂正
0154名無しさん@お腹いっぱい。2011/08/09(火) 15:43:46.03
むしろこんな感じ

sigma=40;
for XX=1:128,
for YY=1:128;
ZZ(XX,YY)=63*exp(-1*(XX-64)^2/(2*sigma^2))*exp(-1*(YY-64)^2/(2*sigma^2));
end;
end;
ZZ1=fft(ZZ);
ZZ2=ifft(ZZ1);
image(ZZ)
colorbar
pause(2);
image(abs(ZZ1))
colorbar
pause(2);
image(abs(ZZ2));
colorbar
pause(2);

要点は、imageで表示するとき以外はabsとかを使わない
0155octave for windows メモの筆者2011/09/02(金) 10:37:46.27
Blas としてOpenBLASかなり使えます。
https://github.com/xianyi/OpenBLAS

なお,Cygwin 上にmingw64のクロスコンパイラが入りました。
mingw64は32 bitもサポートしていますので,windows 用には,
それを使います。
(setup.exeでインストールしてください。)

makeは以下のようにしてください。
make CC=i686-pc-mingw32-gcc FC=i686-pc-mingw32-gfortran OSNAME=WINNT TARGET=CORE2
TARGETは各自のCPUにあわせてください。
できた
libopenblas_(cpu id)-r0.1alpha2.2.dll
octaveのあるbinフォルダにコピペして,
octave-3.2.4 mingwなら blas.dllとリネームすればいいです。
(octave-3.4.2 ならlibblas.dllに )

0156octave for windows メモの筆者2011/09/05(月) 10:46:31.60
Octave-3.4.2-mingw + octaveforge pkgs が出ました。
http://old.nabble.com/Octave-3.4.2-mingw-%2B-octaveforge-pkgs-to32394771.html
0157octave for windows メモの筆者2011/09/07(水) 17:24:14.86
Gnu Octave windows版のOctave-forge packageがアップデートされました。
http://old.nabble.com/Re%3A-Octave-3.4.2-mingw-%2B-octaveforge-pkgs-p32413743.html
0158octave for windows メモの筆者2011/09/15(木) 08:01:26.94
Gnu Octave windows版のOctave-forge packageがアップデートされました。
http://octave.1599824.n4.nabble.com/Updated-Octave3-4-2-Mingw-for-testing-was-Mingw-Octave-3-4-2-blank-gnuplot-printouts-td3814047.html
0159名無しさん@お腹いっぱい。2011/09/22(木) 00:01:20.14
memory exhaustエラーが、少し大きめのデータで出てしまうのが、
改善されるといいなぁ。
0160名無しさん@お腹いっぱい。2011/09/22(木) 09:47:51.52
>>159
64bit版ならそのエラーが簡単には出ないって話ですけどね
ただし正式なバイナリーがリリースされてない
0161octave for windows メモの筆者2011/09/22(木) 14:14:55.62
>>159 >>160

ttp://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html

にしたがってビルドするしかないようですね。
Debian 上での例が載ってます。
0162octave for windows メモの筆者2011/09/22(木) 17:00:01.71
>>159 >>160
Scilab なら64bit版があるようです。

ttp://www.scilab.org/products/scilab/download

でも,文法かなり違うからなあ。
0163名無しさん@お腹いっぱい。2011/09/26(月) 13:34:26.79
>>162
Scilabの32bitも64bitもメモリー管理としては大差無いようです

Windows7 64bit に4GBのメモリーを積んだ条件で
Octave 3.2.4で

AA=ones(12000,10000);

とやると通りますが

AA=ones(13000,10000);

では error: memory exhausted と出ます。

Scilab 5.3.3 では32bitでも64bitでも

stacksize('max');

を実行した後に

AA=ones(13000,10000);

は通りますが

AA=ones(14000,10000);

はエラーが出ます。
倍精度が16bitだとして(複素数の実部と虚部にそれぞれ8bit倍精度)
2GBぐらいに壁があるようです。
0164octave for windows メモの筆者2011/09/26(月) 17:59:23.61
>>163
私もやってみました。
-->AA=ones(13600,10000);
!--error 17
stack size exceeded!

Use stacksize function to increase it.
Memory used for variables: 135007946
中間的なメモリが必要です: 136000002
Total memory available: 268435455

Scilabの場合,スタックサイズの上限に問題があるようですね。
0165名無しさん@お腹いっぱい。2011/09/27(火) 09:00:38.67
>>163
倍精度複素数16bitではなくて16Bytesの間違いでした

全部の変数で2GB未満しかアロケート出来ないっぽいです
2^32は42億9496万7296でしたか、つまり4Gですが
CPUは2の補数をとった2Gまでしかアクセスできないのでしょう
0166octave for windows メモの筆者2011/09/27(火) 10:26:32.43
>>165
ttp://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html
をよく読むとArray Indexとなる整数のバイト数を64 bitの体系にあわせて,
ライブラリまで含めて構築しなおす必要があるようです。
(たとえばFortran のライブラリなら(たとえばLAPACK),
interger のデフォルトのバイトを8バイトにする。)
Scilab 64 bitは,そこまで考えてビルドされていなのではと推測します。
0167octave for windows メモの筆者2011/09/30(金) 10:42:53.78
Octave 3.4.3-rc0 release candidate available for ftp

ttp://octave.1599824.n4.nabble.com/Octave-3-4-3-rc0-release-candidate-available-for-ftp-td3857294.html

だそうです。
0168名無しさん@お腹いっぱい。2011/10/01(土) 22:47:50.57
Octaveの連想配列はどう書けば良いのですか?
データに番号がついていて連続していない状態で、他のデータから連続していないデータを参照しているので
内部で番号をつけ直しています。つけ直しの時に総ナメのような感じになってしまうので連想配列が使えたら
と思いまして質問しました。
0169名無しさん@お腹いっぱい。2011/10/02(日) 01:13:05.09
>>168
構造体で、それっぽいことはできたはず。
その用途でしたら、スパース行列でもよさげ。
どっちが速いかは未検討。
01701682011/10/02(日) 09:20:50.75
>>169
a.idみたいな感じで丁度構造体を使っているので構造体を使った連想っぽい処理をもう少し具体的に知りたいです
どんな感じで使えば良いのですか?
0171名無しさん@お腹いっぱい。2011/10/02(日) 14:17:52.86
>>169
問題がややあいまいなので、もうちっと具体的にどうぞ。
情報の後出しは、無しということで。
01721682011/10/02(日) 18:24:07.84
どこまで必要な情報なのか・・・書ききれるのか分かりませんが書いてみます
有限要素法のプログラムを勉強のために作っているのですが、データが節点、
要素等番号がついています。NASTRANのデータ形式をGRIDとかCHEXAとか
を使っています。(手を抜いて継続行を一行にしていたりしますが・・・)
これらの番号(ID)は連続した数字ではなく、プログラム内部で参照して番号を
関連付けるしかないのですが、現状総ナメで番号(ID)を内部の連続した配列番号
に関連付けています。変数はelem(:).id、node(:).idがデータの番号で関連付
けした変数はelem(:).no、node(:).noとかにしています。主にelemがnode
を参照するのでnode(:).idを連想配列風の処理で内部の配列番号に変換したいのです
読みにくいと思いますが、構造体を使った連想配列風の処理を教えていただけない
でしょうか?
0173名無しさん@お腹いっぱい。2011/10/02(日) 23:48:46.22
>>172
もっとスマートな方法もありそうですが…
期待外れだったら、すいません。

案1(スパース行列)
node_id = [1 10 100 1000 10000];
node_id_t = sparse(0,0);
node_id_t(node_id) = 1:length(node_id);
% node_id_t(10000) -> 5

案2(連想配列?)
node.id_1 = 1;
node.id_10 = 2;
node.id_100 = 3;
node.id_1000 = 4;
node.id_10000 = 5;
% getfield(node,['id_' num2str(10000)]) -> 5

ちなみに、FEMをOctaveで、ということでしたら、OpenFEMというのも参考になるかもしれません。
Matlab用で、コードがめちゃくちゃ読みづらくて、かなりbuggyで信用なりませんが、
各種アルゴリズムの実装を知るには非常に有用です(個人的に、固有値解析のとこは感動しました)。
01741682011/10/04(火) 20:03:02.40
>>173
お返事有り難う御座います。
処理速度を早くするためにはスパース行列が良さそうですね、
処理手順を多少弄らなければいけなさそうですが少し考えてみます。
案2の方も少し考えてみます。(使えそうな使えなさそうな・・・)

OpenFEMの情報有り難う御座います。少しググってみます。
0175octave for windows メモの筆者2011/10/11(火) 10:17:19.15
GNU Octave 3.4.3 Released 
ttp://octave.1599824.n4.nabble.com/GNU-Octave-3-4-3-Released-td3890670.html
0176名無しさん@お腹いっぱい。2011/10/11(火) 21:28:31.48
>>175
毎度ありがとうございます。
目玉機能は何かあります?
(simulinkがついに出来たとか :-P )
0177octave for windows メモの筆者2011/10/12(水) 16:12:10.66
>>176
残念ながら喜ぶような機能の追加はなく,バグフィックスのようです。
3.4はこれでおしまいで,次は3.6になります。
GUIのインターフェースがつくかも知れませんが,はっきりとしません。
0178名無しさん@お腹いっぱい。2011/10/12(水) 20:10:34.63
>>177
あ、それは残念。
純正のOctave Workshopと、ネイティブEXCELリーダーが付けばいいなぁ。
0179octave for windows メモの筆者2011/10/13(木) 11:33:00.99
>>ネイティブEXCELリーダー
Octave-forgeのio packageである程度のことはできるようです。
私はつかったことがないのでよくわかりません。
ttp://octave.sourceforge.net/io/overview.html

>>純正のOctave Workshop
Qt BaseのGUIが検討されていてもしかしたら,3.6で実装
(たぶんExperimental)されるやもしれません。
Windows版については,最近活動がストップしているBenjaminさんに
変わる人が出てくればいいのですが。
私のスキル,体調,仕事上の都合でそこまでついていけないのが実情です。
0180名無しさん@お腹いっぱい。2011/10/13(木) 13:02:18.29
scilabでは伝達関数を定義するのに

s=poly(0,"s")
sys=1/(1+s)

ってできますが
Octaveでは
sys=tf( [1] , [1 1] );
ですよね。
scilabみたいに記法する方法はないですかね?

0181octave for windows メモの筆者2011/10/13(木) 17:08:44.70
制御系には全く無知なのではずしていたらすみません。
Octave 3.4に対応した
Octave-forgeのcontrol packageでは,
ttp://octave.sourceforge.net/control/function/tf.html

Exampleに
octave:1> s = tf ("s");
octave:2> G = 1/(s+1)

Transfer function "G" from input "u1" to output ...
1
y1: -----
s + 1
とあります。
Windowsの場合
ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#110906
こちらをご覧ください。
0182octave for windows メモの筆者2011/10/13(木) 17:10:32.55
>>181
1
y1: -----
s + 1
が崩れて表示されていますね。すみませんm(__)m。
0183octave for windows メモの筆者2011/10/13(木) 17:18:17.15
>>181
何度もすみません。
****************************
Windowsの場合
ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#110906
こちらをご覧ください。
****************************

WindowsでOctave-3.4.2でcontrol packageなどのOctave-forgeを使いたい場合
ということです。舌足らずな説明ですみません。
0184名無しさん@お腹いっぱい。2011/10/13(木) 23:33:20.68
早速ありがとうございます。
使ってみます。

ginputのバッティングなんかも解消できているといいのですが。
0185名無しさん@お腹いっぱい。2011/10/14(金) 15:57:12.92
>>180
OctaveのはMatlab互換なので馴れてしまえば後々で便利です

例えば化学の一次反応を
(d/dt)x=k(x0-x)
と置きましょう。xは反応量、x0は初期量、kは反応速度定数(毎秒)です。
式を展開すると
(1/k)(d/dt)x=x0-x
x0=(1/k)(d/dt)x+x
これをラプラス変換すると
X0=(s/k)X+X=(s/k+1)X
X0=((s+k)/k)X
伝達関数G(s)は(伝達関数はOutput/Input)
G(s)=X/X0=k/(s+k)
これを普通にラプラス逆変換すると
x/x0=k exp(-kt)
ですが、Octaveで計算すると、k=0.02 として
Octave:4> k=0.02; G=tf([k] [1,k],0);
Octave:5> [y,t]=step(G);plot(t,y);
であっさり描けてしまいます
時定数は1/k=1/0.02=50秒で、図でも50秒で1-exp(-1)=63%にまで上がってるはずです。
0186名無しさん@お腹いっぱい。2011/10/15(土) 13:48:46.19
>>185
>>180のヒトは

伝達関数G(s)は(伝達関数はOutput/Input)
G(s)=X/X0=k/(s+k)


Octave:4> k=0.02; G=tf([k] [1,k],0);

Octave:4> k=0.02; G=k/(s+k)
で書ければいいなぁ 

って言っているんだと思います。

Octave3.4だと出来るのか。
0187名無しさん@お腹いっぱい。2011/10/15(土) 14:33:56.65
>>186
それはわかってるつもりなのですが

伝達関数は計算してから入れればいいという考え派なので

しかし制御の本がScilabばっかりなのは
伝達関数の計算なんかめんどい&scicos(5.2以降ならxcos)で制御を勉強したい
という人が多いのでしょうね
0188octave for windows メモの筆者2011/10/17(月) 07:33:56.72
>>186
>Octave3.4だと出来るのか。
正確にいうと最近のControl package でできるようになり,
それにはoctaveが3.4以上である必要があるということのようです。

ところで3.4.2 for winodws用のOctave-forge Packageが更新されました。
 http://wiki.octave.org/wiki.pl?OctaveForWindows
を参考にしてください。Control package もバージョンが
あがっているようです。
0189名無しさん@お腹いっぱい。2011/10/17(月) 20:24:04.79
>>188
すいません。
http://octave.sourceforge.net/
のWindows installer (Octave and Octave-Forge)
の方は更新されないんですか?

0190octave for windows メモの筆者2011/10/18(火) 08:54:52.33
>>189
される見込みは,残念ながら今のところありません。
MaintainerのBenjamin Lindnerさんが5月ごろから,svnの作業ツリーやML
などから,姿を消しておられます。

私は,ビルドしかできないので3.4.2を自分のWebにのせたら,
Nitzan Araziさんが7zipによるアーカイブと octave-forge のパッケージを
(7 zip)作ってくださいました。
0191名無しさん@お腹いっぱい。2011/10/19(水) 20:34:16.86
lsode関数で微分方程式を解いて時間経過を見るとき
変数xが負の値をとる場合にはゼロになるように条件を加えたいのですが
そういったことは出来るのでしょうか。
0192名無しさん@お腹いっぱい。2011/10/20(木) 12:35:32.94
>>191 マニュアルを読む限りではそのようなオプションはないと思います。
数学的な工夫でできるかもしれませんが。すみませんがわかりません。
0193名無しさん@お腹いっぱい。2011/10/21(金) 23:07:54.32
>>188
Octave3.4.2_gcc4.5.2\share\octave\packages\control-2.1.54
の中身を見ているのですが、
tf2ss とか sysout とか、その変の関数がゴッソリと無くなっているのは
なんか理由があるんでしょうかね?

s=tf("s") で G=1/s , H = 1/(s^2+1) , GH=G*H
っていう記述が出来るようになったのは有りがたい反面、使い慣れた関数が
無くなっているのはちょっと寂しい。
(matlabにはあるのに)
0194名無しさん@お腹いっぱい。2011/10/24(月) 20:16:09.57
>>193 本家のoctave-dev ML (Octave-forgeのメーリングリスト)で聞くしか
ないでしょう。たしかMaintainer が最近変わったようなので。
0195名無しさん@お腹いっぱい。2011/10/24(月) 21:27:34.49
>>193
tf2ssはssでイケルっぽい
0196octave for windows メモの筆者2011/10/27(木) 07:58:32.39
Mingw Octave-3.4.3 binaries for testing on windows - Updated
http://octave.1599824.n4.nabble.com/Mingw-Octave-3-4-3-binaries-for-testing-on-windows-Updated-td3942303.html
0197名無しさん@お腹いっぱい。2011/10/29(土) 15:09:02.44
↑のやつですが、Win7 x64でcommunications-1.1.0がmakeでエラーを吐いてインストールできません。
communicationsを使いたいので、どなたか情報を持ってる方お願いします

pkg install signal image optim miscellaneous struct specfun -auto -forge -global (これはOK)
pkg install communications -auto -forge -global
ov-galois.o:C:\Users\hoge\AppData\Local\Temp\oct-2\communications\src/ov-galois.cc:556: undefined reference to `H5Gcreate'
ov-galois.o:C:\Users\hoge\AppData\Local\Temp\oct-2\communications\src/ov-galois.cc:567: undefined reference to `H5Screate_simple'
(snip)
collect2: ld returned 1 exit status
make: *** [gf.oct] Error 1
'make' returned the following error: make: Entering directory `/tmp/oct-2/communications/src'
(snip)
make: Leaving directory `/tmp/oct-2/communications/src'
error: called from `pkg>configure_make' in file C:\Octave\Octave3.4.3_gcc4.5.2\share\octave\3.4.3\m\pkg\pkg.m near line
1339, column 9
error: called from:
error: C:\Octave\Octave3.4.3_gcc4.5.2\share\octave\3.4.3\m\pkg\pkg.m at line 790, column 5
error: C:\Octave\Octave3.4.3_gcc4.5.2\share\octave\3.4.3\m\pkg\pkg.m at line 361, column 9
0198名無しさん@お腹いっぱい。2011/10/30(日) 05:18:24.99
>>197
回線が細いので確認できませんが,
Octave3.4.3_gcc4.5.2_20111025.7zにくわえて
Octave3.4.3_gcc4.5.2_pkgs_20111026.7zもいれて
pkg rebuild -auto
でいけませんか。
不要なものはpkg uninstallで消す。
Octave3.4.3_gcc4.5.2_pkgs_20111026.7zにすでにoctave-forgeは入っていて,
それを再認識させるには pkg installでなく,pkg rebuildを使います。
0199名無しさん@お腹いっぱい。2011/10/31(月) 01:21:57.38
>>199
すみません、最初にpkg rebuild -autoしたのにどうしてもダメだと思ってましたが
octaveの再起動が必要なことに今の今まで気づいてませんでした;;
どうもお騒がせしました。
0200名無しさん@お腹いっぱい。2011/12/02(金) 10:02:30.70
FreeMATが4.0から4.1に上がりました
http://freemat.sourceforge.net/

Octave互換モードも出来たらしいです

FreeMATとOctaveを統合してはどうかという話もありますがはたして
0201octave for windows メモの筆者2011/12/03(土) 10:38:58.08
>>200
情報ありがとうございます。確かにOctave Integrationとありますね。
OctaveのMLでは,なにも話しは出ていませんが,どうなんでしょうね。
Octave MLでは3.6のリリースに向けて議論がなされています。

GUIも開発されつつあります。
0202octave for windows メモの筆者2011/12/03(土) 20:10:07.47
>>200
Octave のMLで情報を流してみました
http://octave.1599824.n4.nabble.com/FYI-FreeMat-4-1-includes-Octavee-Integration-td4151738.html
レスポンスがどうなるかですね。


0203名無しさん@お腹いっぱい。2011/12/04(日) 10:21:08.63
FreeMatって

G=1/(1+0.1*s)
bode(G)

みたいな事はできるんですかね?
Octaveは最新版でやっと出来るようになったみたいですが。
0204:octave for windows メモの筆者2011/12/05(月) 07:09:35.32
control-2.2.2 released
だそうです。

http://octave.1599824.n4.nabble.com/control-2-2-2-released-in-package-forum-please-upload-td4157808.html
http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/control/NEWS?revision=9260&view=markup
0205:octave for windows メモの筆者2011/12/08(木) 07:03:41.15
control-2.2.3 released in package forum - please upload
http://octave.1599824.n4.nabble.com/control-2-2-3-released-in-package-forum-please-upload-td4169495.html
[2]
http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/main/control/NEWS?revision=9303&view=markup
0206octave for windows メモの筆者2011/12/09(金) 12:18:21.65
NizanさんのWindows版Octave-3.4.3のバイナリがOctaveForgeにアップロード
されました。


https://sourceforge.net/projects/octave/files/Octave_Windows%20-%20MinGW/Octave%203.4.3%20for%20Windows%20MinGW%20Installer/
0207名無しさん@お腹いっぱい。2011/12/10(土) 02:50:59.58
>>206
おぉお。
ついに! 
ありがとうございます
0208octave for windows メモの筆者2011/12/10(土) 17:54:33.57
>>206 >>207
今回のバイナリーには,インストーラーがありません。そのため上記のページに
詳しい解説とインストール方法が記載されています。英語なので,拙Webページに自分の
改定を少し加えた翻訳の解説とインストール方法を記載しましたので,ご利用
ください。

http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#111210
0209名無しさん@お腹いっぱい。2011/12/11(日) 23:57:09.22
cygwin(install all)いれるときに一緒に入れたoctave使いたい。
初期設定ファイルいじらずに、初めて起動した。
startxからoctave起動して、簡単な計算とかはできるんだけど
グラフがまったく出力されない。↓こんなのでる。
gnuplotにパス通してないから?(´・ω・`)

octave:1> x=[0,0.2,0.4]
x =

0.00000 0.20000 0.40000

octave:2> plot(x,sin(x))
78 [main] octave-3.4.2 2720 exception::handle: Exception: STATUS_ACCESS_VIOLATION
1712 [main] octave-3.4.2 2720 open_stackdumpfile: Dumping stack trace to octave-3.4.2.exe.stackdump
error: popen2: popen2 (child): unable to start process -- Bad address
error: called from:
error: /usr/share/octave/3.4.2/m/plot/__gnuplot_open_stream__.m at line 30, column 44
error: /usr/share/octave/3.4.2/m/plot/__gnuplot_drawnow__.m at line 72, column 19
error: Invalid call to strcat. Correct usage is:

-- Function File: strcat (S1, S2, ...)

error: called from:
error: /usr/share/octave/3.4.2/m/help/print_usage.m at line 87, column 5
error: /usr/share/octave/3.4.2/m/strings/strcat.m at line 92, column 5
error: /usr/share/octave/3.4.2/m/plot/__gnuplot_get_var__.m at line 113, column 11
error: /usr/share/octave/3.4.2/m/plot/__go_draw_axes__.m at line 40, column 18
error: /usr/share/octave/3.4.2/m/plot/__go_draw_figure__.m at line 167, column 19
error: /usr/share/octave/3.4.2/m/plot/__gnuplot_drawnow__.m at line 86, column 5
02102092011/12/12(月) 00:01:14.96
過去レスにサンプルまでいっしょのレスがありました。驚きです。
cygwinのダウングレードで解決されていましたが、
ダウングレードはするつもりがないので相性がよくなるまで待ちます。
0211octave for windows メモの筆者2011/12/12(月) 05:14:49.53
>>210
CygwinのMLを見ているとOctaveとの相性の悪い1.7.9に代わって1.7.10が
テストリリースされているようです。まだ,試していませんが問題が解決して
いることを願います。
■ このスレッドは過去ログ倉庫に格納されています