データ解析ツールoctaveを語ろう Part 2
■ このスレッドは過去ログ倉庫に格納されています
知る人ぞ知る強力なデータ解析ツール octave ...
unixを科学研究で使っている香具師には非常に心強い味方のはずだ。
matlab互換を主張しながら、微妙にバージョンアップを続ける
octaveについて語ろう。
そのPart 2です
前スレ
データ解析ツールoctaveを語ろう
http://pc12.2ch.net/test/read.cgi/unix/1086016412/ >>169
問題がややあいまいなので、もうちっと具体的にどうぞ。
情報の後出しは、無しということで。 どこまで必要な情報なのか・・・書ききれるのか分かりませんが書いてみます
有限要素法のプログラムを勉強のために作っているのですが、データが節点、
要素等番号がついています。NASTRANのデータ形式をGRIDとかCHEXAとか
を使っています。(手を抜いて継続行を一行にしていたりしますが・・・)
これらの番号(ID)は連続した数字ではなく、プログラム内部で参照して番号を
関連付けるしかないのですが、現状総ナメで番号(ID)を内部の連続した配列番号
に関連付けています。変数はelem(:).id、node(:).idがデータの番号で関連付
けした変数はelem(:).no、node(:).noとかにしています。主にelemがnode
を参照するのでnode(:).idを連想配列風の処理で内部の配列番号に変換したいのです
読みにくいと思いますが、構造体を使った連想配列風の処理を教えていただけない
でしょうか? >>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で信用なりませんが、
各種アルゴリズムの実装を知るには非常に有用です(個人的に、固有値解析のとこは感動しました)。 >>173
お返事有り難う御座います。
処理速度を早くするためにはスパース行列が良さそうですね、
処理手順を多少弄らなければいけなさそうですが少し考えてみます。
案2の方も少し考えてみます。(使えそうな使えなさそうな・・・)
OpenFEMの情報有り難う御座います。少しググってみます。 GNU Octave 3.4.3 Released
ttp://octave.1599824.n4.nabble.com/GNU-Octave-3-4-3-Released-td3890670.html >>175
毎度ありがとうございます。
目玉機能は何かあります?
(simulinkがついに出来たとか :-P ) >>176
残念ながら喜ぶような機能の追加はなく,バグフィックスのようです。
3.4はこれでおしまいで,次は3.6になります。
GUIのインターフェースがつくかも知れませんが,はっきりとしません。 >>177
あ、それは残念。
純正のOctave Workshopと、ネイティブEXCELリーダーが付けばいいなぁ。
>>ネイティブEXCELリーダー
Octave-forgeのio packageである程度のことはできるようです。
私はつかったことがないのでよくわかりません。
ttp://octave.sourceforge.net/io/overview.html
>>純正のOctave Workshop
Qt BaseのGUIが検討されていてもしかしたら,3.6で実装
(たぶんExperimental)されるやもしれません。
Windows版については,最近活動がストップしているBenjaminさんに
変わる人が出てくればいいのですが。
私のスキル,体調,仕事上の都合でそこまでついていけないのが実情です。 scilabでは伝達関数を定義するのに
s=poly(0,"s")
sys=1/(1+s)
ってできますが
Octaveでは
sys=tf( [1] , [1 1] );
ですよね。
scilabみたいに記法する方法はないですかね?
制御系には全く無知なのではずしていたらすみません。
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
こちらをご覧ください。
>>181
1
y1: -----
s + 1
が崩れて表示されていますね。すみませんm(__)m。
>>181
何度もすみません。
****************************
Windowsの場合
ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#110906
こちらをご覧ください。
****************************
は
WindowsでOctave-3.4.2でcontrol packageなどのOctave-forgeを使いたい場合
ということです。舌足らずな説明ですみません。 早速ありがとうございます。
使ってみます。
ginputのバッティングなんかも解消できているといいのですが。
>>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%にまで上がってるはずです。
>>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だと出来るのか。
>>186
それはわかってるつもりなのですが
伝達関数は計算してから入れればいいという考え派なので
しかし制御の本がScilabばっかりなのは
伝達関数の計算なんかめんどい&scicos(5.2以降ならxcos)で制御を勉強したい
という人が多いのでしょうね >>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 もバージョンが
あがっているようです。 >>188
すいません。
http://octave.sourceforge.net/
のWindows installer (Octave and Octave-Forge)
の方は更新されないんですか?
>>189
される見込みは,残念ながら今のところありません。
MaintainerのBenjamin Lindnerさんが5月ごろから,svnの作業ツリーやML
などから,姿を消しておられます。
私は,ビルドしかできないので3.4.2を自分のWebにのせたら,
Nitzan Araziさんが7zipによるアーカイブと octave-forge のパッケージを
(7 zip)作ってくださいました。 lsode関数で微分方程式を解いて時間経過を見るとき
変数xが負の値をとる場合にはゼロになるように条件を加えたいのですが
そういったことは出来るのでしょうか。 >>191 マニュアルを読む限りではそのようなオプションはないと思います。
数学的な工夫でできるかもしれませんが。すみませんがわかりません。 >>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にはあるのに)
>>193 本家のoctave-dev ML (Octave-forgeのメーリングリスト)で聞くしか
ないでしょう。たしかMaintainer が最近変わったようなので。
↑のやつですが、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
>>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を使います。
>>199
すみません、最初にpkg rebuild -autoしたのにどうしてもダメだと思ってましたが
octaveの再起動が必要なことに今の今まで気づいてませんでした;;
どうもお騒がせしました。 FreeMATが4.0から4.1に上がりました
http://freemat.sourceforge.net/
Octave互換モードも出来たらしいです
FreeMATとOctaveを統合してはどうかという話もありますがはたして
>>200
情報ありがとうございます。確かにOctave Integrationとありますね。
OctaveのMLでは,なにも話しは出ていませんが,どうなんでしょうね。
Octave MLでは3.6のリリースに向けて議論がなされています。
GUIも開発されつつあります。 FreeMatって
G=1/(1+0.1*s)
bode(G)
みたいな事はできるんですかね?
Octaveは最新版でやっと出来るようになったみたいですが。
>>206
おぉお。
ついに!
ありがとうございます
>>206 >>207
今回のバイナリーには,インストーラーがありません。そのため上記のページに
詳しい解説とインストール方法が記載されています。英語なので,拙Webページに自分の
改定を少し加えた翻訳の解説とインストール方法を記載しましたので,ご利用
ください。
http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#111210 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
過去レスにサンプルまでいっしょのレスがありました。驚きです。
cygwinのダウングレードで解決されていましたが、
ダウングレードはするつもりがないので相性がよくなるまで待ちます。 >>210
CygwinのMLを見ているとOctaveとの相性の悪い1.7.9に代わって1.7.10が
テストリリースされているようです。まだ,試していませんが問題が解決して
いることを願います。 >>208
すいません
s=tf("s")
bode(s)
ってやるとボード線図は出るのですが、出てきたボード線図のグラフィックウインドウ上でマウスをドラッグしたり
ホイールをまわしたりすると、落ちちゃいます。
僕の環境(WinXP32bit)だけかもしれませんが。
普通にplotだと、出力されたグラフをマウスでいじっても大丈夫なんですが。
http://www.42ch.net/UploaderSmall/source/1323769033.png Mingw正式リリースの3.2.4を使っると巨大データでこけるので困っていました
(Memory Exhaustedのエラーを吐く)
特にWindows7 64bitだとすごくこけやすかったので
(理論的には2GBまで大丈夫なはずなのに500MBぐらいのメモリー使用でこける)
環境を変えるのはあまり好きでは無かったのですが
3.4.3を入れてみたら全くこけなくなりました、
このバージョンなら2GBまでこけないかも
助かりました
OpenBLASは
ttp://www.tatsuromatsuoka.com/octave/Eng/Win/
のを使わせていただきました
自分でmakeするとエラーが出たので >>214
MemoryExhaustedは3.2.4でも悩まされてるけど、
3.4.3は、さらに起きやすくなった。実際、同じスクリプトが動かなくなった。 >>215
こちらはメモリーを4GB積んでます
それとWin7 32bit では試してないので
WinXP 32bit で 3.2.4
Win7 32bit で 3.2.4
Win7 64bit で 3.2.4
WinXP 32bit で 3.4.3
Win7 32bit で 3.4.3
Win7 64bit で 3.4.3
この6つの組合せとメモリー搭載量で起きやすい、起きにくいがあるのかもしれません
よっぽどMigw64bit でmakeしようと思ったけど、色々挫折した(笑
3.4.3を試そうと思ったのはOctaveのMailingリストで、3.2.4から3.4に上げれば
Memory Exhaustedが出ないよという書き込みがあったから Scilab 5.4.1のalpha版が出ました
http://www.scilab.org/products/scilab/download/5.4.0-alpha-1
5.3.3は使っていてbugだらけだったので、少しはましになるかどうか
(xcos の AFFICH_mでリアルタイムで数値が表示されないのは
仕様じゃなくてbugだったのか orz) 最近,HDDが壊れたThink Pad X40にUSB HDDを利用してUbuntu 11.10をいれて触っています。
Ubuntuのソフトウェアセンターのoctaveは3.2.4なので,3.4.3をビルドしてみました。
依存ライブラリが揃っており,Synapticパッケージマネージャーで簡単にインストールできました。
Windowsでのビルドの経験が役にたって少々の試行錯誤で無事ビルドできました。
なかなか,いい感じです。しかし,ビルドツールがUnbuntu上ではWindows上より
はるかに速いのでおどろきました。
また,3.6.0のプレリリースである3.5.90もビルドできました。
最近,HDDが壊れたThink Pad X40にUSB HDDを利用してUbuntu 11.10をいれて触っています。
Ubuntuのソフトウェアセンターのoctaveは3.2.4なので,3.4.3をビルドしてみました。
Windowsでのビルドの経験が役にたって少々の試行錯誤で無事ビルドできました。
なかなか,いい感じです。
しかし,ビルドツールがUnbuntu上ではWindows上よりはるかに速いのでおどろきました。
また,3.5.90のビルドもできました 最近,HDDが壊れたThink Pad X40にUSB HDDを利用してUbuntu 11.10をいれて
触っています。Ubuntuのソフトウェアセンターのoctaveは3.2.4なので,
3.4.3をビルドしてみました。
Windowsでのビルドの経験が役にたって少々の試行錯誤で無事ビルドできました。
なかなか,いい感じです。しかし,ビルドツールがUnbuntu上ではWindows上より
はるかに速いのでおどろきました。 最近,HDDが壊れたThink Pad X40にUSB HDDを利用してUbuntu 11.10をいれて
触っています。Ubuntuのソフトウェアセンターのoctaveは3.2.4なので,
3.4.3をビルドしてみました。
Windowsでのビルドの経験が役にたって少々の試行錯誤で無事ビルドできました。
なかなか,いい感じです。しかし,ビルドツールがUnbuntu上ではWindows上より
はるかに速いのでおどろきました。 >>220 -223
2chブラウザの特性を知らず同じ書き込みを何度もしてすみません。m(__)m >>214
>OpenBLASは
>ttp://www.tatsuromatsuoka.com/octave/Eng/Win/
>のを使わせていただきました
>自分でmakeするとエラーが出たので
MinGW上ではふつうにビルドしただけではエラーになるようです。
同時にできる静的ライブラリから,次の例のようにしてdllを作成しました。
i686-pc-mingw32-gcc -shared-libgcc -shared \
-Wl,--enable-auto-import \
-Wl,--enable-runtime-pseudo-reloc-v2 \
-Wl,--allow-multiple-definition \
-Wl,--out-implib=libblas.dll.a -o libblas.dll \
-Wl,--output-def=libblas.exp \
-Wl,--whole-archive libopenblas_nehalemp-r0.1alpha2.4.lib \
-Wl,--no-whole-archive -lgfortran
こうしてできたものを
ttp://www.tatsuromatsuoka.com/octave/Eng/Win/
にアップしました。 >>225
i686-pc-mingw32-gcc -shared-libgcc -shared \
で始まる行が一行ずつ開いているのは詰めてください。m(__)m >>255
たびたびすみません。
>MinGW上ではふつうにビルドしただけではエラーになるようです。
Cygwin上でふつうにビルドしただけではMinGWでエラーになるようです。
で,CygwinのMinGW64の32bit版GCCで静的ライブラリからリンクしなおして,
dllを作成しています。 >>227
どうもありがとうございました
dllのビルドがおかしかったんだ >>224
あ、おかえりなさいw
普通は自動追尾するはずなんですが、
板欄→板一覧の更新
スレ欄→スレ一覧の更新
を手動でやればいいんでしたっけか。
自分も適当にやったので、本当はどうすればいいのか、実はよくわかってないですw
というわけなんですが、
>>213
の状態になるのは僕の環境だけなんでしょうかねぇ?
>>213 >>229
再現確認しました。
現在配布のバイナリは,share\octave\site\m\startup\octaverc
でfltkがgraphics_toolkitに指定してあります。
graphics_toolkit gnuplot
でやると落ちないようです。
gnuplotのmultiplotを使っているので,マウスぐりぐりは
変なことになりますが,落ちることはないようです。
fltkで落ちるのは,バグかなと思います。
ちょっと調べてみます。 >>213 >>229
再現確認しました。
現在配布のバイナリは,share\octave\site\m\startup\octaverc
でfltkがgraphics_toolkitに指定してあります。
graphics_toolkit gnuplot
でやると落ちないようです。
gnuplotのmultiplotを使っているので,マウスぐりぐりは
変なことになりますが,落ちることはないようです。
fltkで落ちるのは,バグかなと思います。
ちょっと調べてみます。 >>230
subplotが怪しいのかなあとおもいましたが,単にsubplotしただけではfltkでの
グラフ落ちませんでした。Controlパッケージのせいなのかな?
ちょっと見当つかないですが,余力があればBug Trackerにあげてみます。
それで解決するかはわかりませんが。 >>234
ありがとうございます。
お世話かけます。
Octave-3.5.91がでました。
ttp://octave.1599824.n4.nabble.com/Octave-3-5-90-snapshot-available-for-ftp-tp4200255p4230198.html
3.6.0へ向けての最後のスナップショットとなると思います。
少し前ですが,Octave のWikiが新しくなりました。
ttp://www.octave.org/wiki/index.php?title=Main_Page
の左の Navigation の index からいろいろなページに飛べます。 ttp://sourceforge.net/projects/octave/files/Octave_Windows%20-%20MinGW/Octave%203.4.3%20for%20Windows%20MinGW%20Installer
/
にインストーラー版 Octave-3.4.3 for windowsがおかれました。
ttp://gnu-octave-repository.2306053.n4.nabble.com/Installer-for-mingw32-Octave-3-4-3-td4225772.html
Octave-forgeは含まれないようなので,従来からあるOctave-Forgeを利用される
方は Octave3.4.3_gcc4.5.2_pkgs_20111026.7z の内容をを上書きして,
設定する必要があると思います。 本当に初歩的な質問ですが、octaveで乱数(メルセンヌツイスタ)を使いたいのですが、その乱数がcファイルなので、どうすればoctaveで使えるのですか?
因みに目的はメルセンヌツイスタを用いた乱数発生で円を求める奴です >>239
help rand
を見ると、現在のOctaveのrandで用いているのは
擬似Mersenne Twisterのようです >>241外した答えになっているような気がする。許してください。 >>240
ごめんなさい、メルセンヌツイスタ縛りなのでrand関数は不可です
あくまでも公式サイトから落としたメルセンヌツイスタプログラムを用いて計算しなければならないので…
てか何故PCから見れないんだ、このスレ(´・ω・`) いまは↓
ttp://toro.2ch.net/test/read.cgi/unix/1256735581/
で見れるようです。私もある方に教えてもらいました。 >>243
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/mt19937ar.c
ソースはこれですか。
コンパイルして,実行形式を作る。
そのあと,Octaveから system コマンドをつかって実行して,
load コマンドなどでOctaveの変数に取り込むのが手っ取り早いかと。
それです、正にそれです
流石に馬鹿過ぎる質問ですがコンパイルと実行ファイル制作ってどうするんですか?
コマンドプロンプトを使ってやるのですか?
それともoctave上でコンパイルするのですか?
あ、当然ググりました >>246
課題?
$ gcc -o mt19937ar mt19937ar.c
$ ./mt19937ar
1000 outputs of genrand_int32()
1067595299 955945823 477289528 4107218783 4228976476
3344332714 3355579695 227628506 810200273 2591290167
(以下略) >>247
無事に窓を用いてコンパイルは出来ました(mt19937ar.exe)
けどそこからがよく分かりません…
system関数?load関数?
因みにこれは微妙に課題です
ゼミでoctaveを使うことになったのでその予行練習課題みたいなものです >>239
確認ですが、その問題というのは、
0〜1の乱数を2個発生させる。(r1,r2)
r1^2+r2^2< 1 だったら カウンタを1増加させる。
この作業を100万回行う。
カウンタの値/100万×4がπになるはず
っていう問題ですかい?
問題を丸投げするんだから、情報を小出しにせず、
堂々と丁寧に全部書くことをオススメします。
了解しました
課題は2次元球(円)から10次元球までの体積(面積)をoctaveを用いて解くものです
条件としましては
・乱数を用いること、その際条件としてメルセンヌツイスタを用いる
・半径は1(x1+x2+x3+…+xn≦1を満たす、但しx1,x2,x3,…,xnはメルセンヌツイスタを用いて発生させた乱数とする)
・乱数発生回数は問わない(但し回数は考察対象とする)
因みに背景としましては、自分卒研にてベイズ推計を用いての逆問題について研究していますので、その際用いられるMCMC法でメルセンヌツイスタ乱数およびoctaveが必要なので、先生から予行練習課題としてこの課題が出されたのです 訂正です
乱数の範囲は[0,1]です
そして体積はV=(octaveで求めた値)×2^n(n:次元)で求めるものとします
一応octaveの基本はある程度理解をしたのですが、高度なのはさっぱり分からないのでここで聞きました 書き忘れた…orz
>>249で書いてるのと一緒です
オレの馬鹿、連レスサーセンです >>252
多分、方法は2つあって、
1) メルセンヌツイスタのアルゴリズムをOctaveで書き下ろして使う
2) http://dirk.eddelbuettel.com/code/octave-mt.html を読む
のどっちかじゃないすか?
#そもそもなんで、この問題をわざわざoctaveでやるのかの意味がよくわからんです。
octaveでどんな問題でも解けるように というトレーニングなら1)の方法でしょーね。
>>253 番さんの
2)の方法を使うためには,>>241のoctファイルを作成する方法をOctaveの
マニュアルでよんでください。
randmt.cc をダウンロードして
mkoctfile コマンドをつかって,Octファイル作ればいいのですが,
なんかエラーがでてしまいます。
octave:2> mkoctfile randmt.cc
randmt.cc:42:17: warning: inline function 'uint32 randomMT()' used but never defined
randmt.o: In function `randomMTunit':
E:\usr\Tatsu\test\octave/randmt.cc:48: undefined reference to `randomMT'
randmt.o: In function `Z11FrandmtseedRK17octave_value_listi':
E:\usr\Tatsu\test\octave/randmt.cc:105: undefined reference to `seedMT'
randmt.o: In function `randomMTunit':
E:\usr\Tatsu\test\octave/randmt.cc:48: undefined reference to `randomMT'
E:\usr\Tatsu\test\octave/randmt.cc:48: undefined reference to `randomMT'
E:\usr\Tatsu\test\octave/randmt.cc:48: undefined reference to `randomMT'
E:\usr\Tatsu\test\octave/randmt.cc:48: undefined reference to `randomMT'
E:\usr\Tatsu\test\octave/randmt.cc:48: undefined reference to `randomMT'
randmt.o:E:\usr\Tatsu\test\octave/randmt.cc:48: more undefined references to `randomMT' follow
collect2: ld returned 1 exit status
うーむ。 >>254 ページをよく読んでいなかったorz。
Download code.からoctave-mt.tar.gzをダウンロードする。
適当なフォルダに解凍する。
たとえば,E:\usr\Tatsu\test\octave\octave-mt に解凍したら,
octave:3> cd E:\usr\Tatsu\test\octave\octave-mt
octave:4> system('make')
のようにすると
gcc -Wall -O6 -c -o cokus.o cokus.c
mkoctfile randmt.cc cokus.o
randmt.cc:42:17: warning: inline function 'uint32 randomMT()' used but never defined
ln -sf randmt.oct randmtseed.oct
ln -sf randmt.oct randmtn.oct
ans = 0
とoctファイルができる。
helpを読むには,
octave:5> help randmt
とする。
やってみました
octave:1> cd "C:/Documents and Settings/DateMasa/デスクトップ/MT"
octave:2> system('make')
mkoctfile randmt.cc cokus.o
randmt.cc:42: warning: inline function `uint32 randomMT()' used but never define
d
c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: unrecogniz
ed option '--enable-runtime-pseudo-reloc-v2'
c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: use the --
help option for usage information
collect2: ld returned 1 exit status
make: *** [randmt.oct] Error 1
ans = 2
こんな感じのエラーが出てしまいました…
確認で一応 help randmt を実行しましたが「そんな関数なんてねーよ」と吐き出してきました
後マニュアルに書いてあるとおりmkoctfileでccファイルをoctファイルにしてみようと試みたのですが
これもエラーが出てしまいました 因みにmkoctfileでのエラーは次のとおりです
octave:6> mkoctfile randmt.cc
g++: randmt.cc: No such file or directory
g++: no input files
g++: randmt.o: No such file or directory >>256 >>257 パスにスペースがあるとだめですよ。
だから
cd "C:/Documents and Settings/DateMasa/デスクトップ/MT"
ではだめです。 アドバイスを参考にスペースが入らないよう解凍位置を変更してみました
octave:3> cd C:/MT-file
octave:4> system('make')
mkoctfile randmt.cc cokus.o
randmt.cc:42: warning: inline function `uint32 randomMT()' used but never define
d
c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: unrecogniz
ed option '--enable-runtime-pseudo-reloc-v2'
c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: use the --
help option for usage information
collect2: ld returned 1 exit status
make: *** [randmt.oct] Error 1
ans = 2
これでhelp randmtをやっても「だからねーって言ってるだろ」とエラーが出てしまいました
どこが違うのか… >>259
c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: unrecogniz
ed option '--enable-runtime-pseudo-reloc-v2'
c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: use the --
help option for usage information
collect2: ld returned 1 exit status
make: *** [randmt.oct] Error 1
ans = 2
ちがったGCCのバージョンが認識されてますね。(3.4.5)
Octave 3.4.3ではGCC-4.5.2がパッケージされていて,
それが認識されないといけないのですが。
ttp://octave.1599824.n4.nabble.com/Re-Fw-Re-msys-from-octave-td4234096.html
が参考になるかもです。
ちなみに'--enable-runtime-pseudo-reloc-v2’はGCC-3.4.5にはないオプションです。 minGWを新しいものに変え、今までの事をやりました
無事randmtが起動できました
そして課題もまとめることができました
本当にありがとうございます! >>261 よかったですね。卒研頑張ってください。 >>213 >>234
http://savannah.gnu.org/bugs/?35159
Control PackageとFLTKの組み合わせでBode線図にグラフに問題があるのは,
Windows だけでないようです。
3.6.0で改善すればよいのですが。
3.6のプレリリースの3.5.90や現在developmentソースでControl packgeが
組み込めない状態なのでちょっと時間がかかると思います。
しばらくは,gnuplot を graphics_toolkit にしてお使いください。
本当に初歩的な質問で申し訳ございません。
今octave3.4.3をインストールして使おうと思っています。
octaveはmatlabと非常に相関性があるということで家ではこのoctaveを使おうと思っています。
そこでいくつか質問があります。
1.octaveを起動させ、matlabコードを張り付けて実行したいのですが
張り付けすることができません。
いちいち、タイプしなければならないんでしょうか?
2.matlabでは、memo帳(functionやscript)が出てきてそこにコードを打って
実際のmatlab上で実行させるのですが、このoctaveはメモ帳のようなものはなく
いちいち打たなければならないのでしょうか?
調べてみると、matlabと同じようにfunctionがあるみたいですが、
これはfunctionが別のところになければ実行できないのですが、
どうすればよいのでしょうか?
よろしくお願いいたします。 >>264
文章からして、windows上のことと思います。Octaveは、マルチプラットフォーム
なソフトなので、OS(Windows, Mac, Linix)などを記載してください。
私の書く文章にわからない点があると思いますが適宜Googleなどで
調べてください。
1.Windows上では、Octaveはコマンドプロンプト上で動作しています。
octaveの実行ウィンドウをマウスで右クリックして、プロパティを開き、
オプションタブで簡易編集モードがアクティブになっていることを確認
してください。octave のプロンプトに張り付けたい文章をクリップボード
にコピーしてoctaveのプロンプト上で右クリックをすれば、張り付ける
ことができます。
これは、Octaveの機能というよりコマンドプロンプトの機能ですので
「コマンドプロンプト 張り付け コピー 簡易編集モード」などで
ググってください。NotePad++を既定のテキストエディタにするには、
Octaveをダウンロードされたページの説明(英語)をよく読んでください。
設定をすれば、octave のプロンプトからeditとうてば起動できます。
2.将来的には、octaveもMATLABのようなGUIを備えたソフトになるべく
作業がされていますが、現在はGUIソフトではありません。
テキストエディタは自分で準備してください。
Notepad++がいいのではと思います。
>調べてみると、matlabと同じようにfunctionがあるみたいですが、
これはfunctionが別のところになければ実行できないのですが、
どうすればよいのでしょうか?
なにが言いたいのかよくわかりません。もう少し実例をあげてわかりやすく
質問してください。
>>265 いかん文章の推敲があまいなあ。
NotePad++を既定のテキストエディタにするには、
Octaveをダウンロードされたページの説明(英語)をよく読んでください。
設定をすれば、octave のプロンプトからeditとうてば起動できます。
は
2.の部分の説明でNotepad++ を既定のエディタにするために何を読めばいいか
をかきました。
なお、拙ページに説明の翻訳をあげていますので、よければ参考にしてください。
ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#111210 >>264
バージョンは、3.2.4ですが、私のoctaveを使った講義の資料を紹介した部分を
あげていますので参考になれば幸いです。
ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#110613
どういうわけかグラフを一つ書きません。
訳がわかりません。
## WindowsXP + octave 3.2.4 and 3.4.3
clf
for i = 1:4
subplot(4,4,i+12);
h=plot(randn(1,5),"r+");
set(gca(),"position",[(i-1)*0.225+0.1, 0.25, 0.2,0.2])
endfor
input("3番目が抜けているはず。書き直すと今度は書く。改行で継続","s");
i = 3;
subplot(4,4,i+12);
h=plot(randn(1,5),"r+");
set(gca(),"position",[(i-1)*0.225+0.1, 0.25, 0.2,0.2])
Notepad++(テキストエディタ) の インストール(オプション,推奨)
最新の Notepad++ を http://notepad-plus-plus.org/ からダウンロードし,インストールします。
<Install folder>\share\octave\site\m\startup\octaverc をエディタで編集する。 次の行のコメントを解除し,Octave の既定のエディタに設定します。
EDITOR('C:\\Program Files\\Notepad++\\notepad++.exe');
注意:notepad++.exe がインストールされるフォルダが上記でない場合は,設定を適宜変更します
これをやったのですが、
editとうっても
error: C:\Octave\Octave3.4.3_gcc4.5.2\Octave3.4.3_gcc4.5.2\share\octave\3.4.3\
m\miscellaneous\edit.m at line 212, column 7
と出てきて起動できません。 >>264
エスパー的解釈で補完して答えてあげやう。
どうせwindows版だろうし。
1)C:\Octave というフォルダがあるだろうから(なければ作る)
その中に
MyProj とかいうフォルダを作る。
1)Windowsのメモ帖を立ち上げる。
2)そこに
a=1
b=a+5
ってな感じでmatlabっぽいコードを書いて見る。
3) 名前をつけて保存で ファイルの種類をテキスト文書(*.txt)じゃなく、全ての文書(*.*)にしてから
1)で作ったc:\Octave\MyProjの中に mytest.m という名前で保存する。 ファイル名は適当でいいが、
拡張子は必ず .m にすること (テキスト文書で保存すると、 mytest.m.txt っていうワケワカランファイル名に
なってしまうので注意)
4)Octaveを立ち上げる。
5) cd c:\octave\myproj と打つ。 (1で作ったフォルダ)
6) pwd と打って、ans=c:\octave\myproj って出るのを確かめる
7) dir と打って、 mytest.m が表示されるのを確かめる
8) mytest と打つ( 拡張子 .m は つけちゃダメ)
9) 動いた?
10) 本当は source mytest.m と打つべきなんだけどね(これは拡張子をつける。ややこしいね)
11) mytest とうつと、 mytest という関数を起動しようとして、カレントディレクトリを探すと
mytest.m があるので それが起動されるというシカケなのだ。
12) 例えば which mytestってやると、それがどこにあるかわかるだろう
13) たとえば which plotってやると実は plot も plot.m を遥か深い漆黒の穴から古(いにしえ)の契約により呼び出している事がわかるだろう
14) こんなもんでどうでしょか?
>>263
対処ありがとうございます。
どうも複合技でバグっているっぽいですね。
慣れ親しんだgnuplotで使い続けさせていただきます。
それにしてももう少し起動が早くならないですかねぇ。
scicoslab (scilabじゃなくて) はとても起動が速いのに。
■ このスレッドは過去ログ倉庫に格納されています