データ解析ツールoctaveを語ろう Part 2
ロリコンのオイラにも使いこなせだろうか…
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;
とやればいいようです。
電卓や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を使います。
それらの使い方の例を次に示します。
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;
>>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と同じ並びだったりします
>>5 他の視点としてはC, fortran, C++で書けば速いコードができるのだが,
プログラムを書くのに時間がかかってしまのですが,octaveなどで組み込みの
強力なツールを使えばプログラミングが早く終わるケースなどがあります
よね。
ちょっとして問題までコンパイラを使うのは時間の無駄だと思います。
また,プログラミングする前のプロトタイプ作成にも有効ですよね。
liboctaveはC++で動く数値演算クラスライブラリとして有用ですし,
octaveのスクリプトからの移植は,比較的容易ですので真剣に高速化したい
ときも近道になりますよね。
私の主なoctaveの用途はodeのソルバーと固有値問題解析です。
いろんな場面で連立微分方程式を解く
超音波は波動を使った研究をしていて波動方程式はフーリエ変換すると固有値
問題になるのでそのときもoctaveが大変約に立っています。
ExcelでVBAでルンゲクッタ公式を書いて,微分方程式を解いているのを見ている
となんと時代遅れで時間の無駄なことをしているのだろうと
思ってしまいます。
スティッフな問題なんぞに対応できないですしね。
#ところで,思い切りスレ違いですが,
非線形最小2乗法はgnuplotもかなり強力ですよ。
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))
------------------------------------
解決法知っている方おられましたらよろしくおねがいします。
>>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への乗り換えをお勧めします
>>10 >>11 レスありがとうございます。
gnuplotはcygwin導入前から導入していてそれを使えるようにしたかったんです。
octaveはcygwinから使えるよっていうのをwebで見て
じゃあoctave/cygwinと単体で導入していたgnuplotをコラボさせましょうということで進めていくと
>>9 のような事態になりました^^;
MinGW版のoctaveさっそく導入しましたら一発で解決しました。
情報提供感謝でございます。
P.S.
あと
>>9の補足ですが、octaveとgnuplotをつなぐための設定ファイルの内容ですが
参考として挙げたwebページではwgnuplotに投げるとなっていますが
ほかのページも巡回して検討し、pgnuplotとしてました。
まあ、それでも同じ現象が出たので設定ファイルのせいではないのかなと考えてます。
>>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を使わないと
いけません。
mingw版の3.2.2使ってるのですが、何かplotを連続でした場合
今までのは書き換わるだけだったのに
3.2.2のは画面がクリアされて一瞬白くなって
連続で書き換えるとチカチカして非常に見にくい。
>>16 その問題はmingw版だけの問題ではなく,octave-3.2.2ではそうなります。
(バグです。)
octave-3.2.3では,解決してますので,そちらをお使いください。
ウインドウズで申し訳ないのですが、
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
>
>>19 mexがうごかないといってるようですね。
octave version 3.0からmexに
対応していますが,バイナリ互換ではないのでmexのCのソースから
octave用のmexを作成しなおす必要があります。
まずは,mexのソースコード(c言語で書かれています。)を持っているかを
確認してください。
mexのソースがなければ,octaveで動かすのは無理です。
これは,ライセンスなどにもかかわるので,mexのソースコードが手に入らない場合
mexのコードをともなうMATLABのコードをoctaveで動かすのは無理だと考えて
ください。
>>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でも動くようにしてくれるとは思います。
みなさまありがとうございます。そういうことでした。
matlabのkmeans関数ってoctaveには(少なくとも同じ名前では)無いようですが、
別名で同じ機能の関数ってあるのでしょうか?
それともこれは自前で作成するしかないですか?
>>23 私はmatlabユーザーではないのでよく分かりませんが,
そもそもkmeans関数はどのような機能の関数なのでしょうか?
また,mファイルで書かれている関数で,ソースが手に入るのならば,
octaveで動かせる可能性があります。
mexでもソースが手に入れば,octaveでmexを作成しなおせば,
動く可能性があります。
>>19 >>21 dynare の version が 4.1.0にアップデートされました。
Octave 3.2.3 で動きます。
26 :
名無しさん@お腹いっぱい。:2010/01/15(金) 01:17:52
octave 3.2.4のRelease Candidateがでてます。
もうすぐ,octave 3.2.4がでると思います。
おそらく,3.2シリーズは3.2.4で終わりで,次はoctave 3.4がでると思います。
ビルドシステムの大幅な変更があります (libtoolを使ったものになります。)。
一般の方にはあまり関係がないと思いますが,自分でビルドされる方は
maintainersのMLをご覧になって情報を収集されることをお勧めします。
思いますが,
Cygwin 版のOctave 3.2.4のバイナリが配布されています。
Octave のMLにGNU ProjectのリーダーのRichard Stallman氏が登場して,
Mathworks社のライセンス(Matlabが関係すると思います)についての話題が
提供され,現在,精力的に議論が行われています。
法律的なこともかかわっているので正直言って理解できないことが多いのですが
ライセンスについては,敏感な立場の方がおられると思いNabbleのアーカイブ
のURLを書いておきます。
ttp://old.nabble.com/Mathworks-hosted-GPL'd-software-to27550496.html
をご覧ください。
33 :
::octave for windows:2010/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
mingwの3.2.4を入れてみたけど
wxtターミナルで、plotしたあとに
xlabel('hoge');
drawnow;
とやっても反映されないのね
plotコマンドを再実行すると反映されるので
xlabel, ylabelで定義してから
plotする流儀に変わったのかな
>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 )
とかもっともシンプルに打っても動きがヘン
>>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の作成には個人的には成功しています。
>>42 からの続きです
使うマシンがないので公開はしていませんが,
mingwでatlasを作成するためだけにCygwin上でビルドした,
特別なGCCとどうやってスタティックライブラリから
dllを作るかは書いたほうがいいですかね。
あまり暇がないので,GCCの公開ぐらいならやりますが。
また,Benjmaminさんはどうもうまくmingw上のAtlasをハンドリングできて
いないようです。
彼は本当に高速な計算にはLinuxをお使いのようなので,
そこまで期待するのはちょっときついかもしれません。
今回octave-forgeのサポートがかなり増えていますので,相当なご尽力を
なさっていますのであまり多くを望むのは難しいでしょう。
44 :
40:2010/04/09(金) 18:02:17
>41
おお、サンクス。まともにプロットするようになった。
そういえば、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
という警告が出ますな。正式な手続きがわからん
>>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さん
も対応されるでしょう。
>>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周りをいじらないといけないでしょうね。
いまは,我慢して無視するのが現実的かと思います。
どこかの
警告の原因は、これ(↓)じゃないんですか。了解です
set (gca, 'xminortick', 'on', 'yminortick', 'on')
>>48 はい
set (gca, 'xminortick', 'on', 'yminortick', 'on')
は警告の原因ではないようです。
mark_as_commandのコードをみましたが,3.2ではdeprecatedというフォルダに
はいっていて実質何もしていません。mark_as_commandが実行されたときに
エラーになるとコードが動かなくなるのを防ぐために存在しているようです。
というわけで,多分,octave-forgeのパッケージが将来的に対応すべき
問題なのでしょう。現時点ではやはり無視してつかうのでいいでしょう。
>>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 おお! ありがとうございます<m(__)m>
53 :
名無しさん@お腹いっぱい。:2010/04/26(月) 19:12:25
CSVファイルを読み込むためのdlmread関数を使うために
pkg load io
とすると
package io is not installed
と表示されるのですが、
ioパッケージって標準では入ってない物なのですか?
>>53 octaveのバージョンはなんでしょう。また,platformはなんでしょう。
3.2.4ならdlmreadは,io パッケージでなくoctave本体に入って入ってますが。
また,octave-forgeのパッケージが何がはいるかはdistributorにもよるので
具体的な情報がないと誰もこたえられないと思います。
>>53 書き忘れましたが,csvならばcsvreadも使えます。dmlreadで
セパレータ指定してもいいと思います。
今さっき気がつきましたが
pkg load jhandles
でGNUTERMに何が設定してあっても、jhandleでグラフ描画するんですね
wxtはなんかグラフがはみ出すし、オーバーヘッドが大きいような気がしてました
>>56 そうですね。3Dとかでmeshを細かく刻むとjhandlesじゃないと遅いですよね。
ただ,ginputをやろうとするとエラーがでたりします^^;。
3.4がでてFLTK backendが,まともになればjhandleもいらないかなとは
思います。
ただ,3.4リリースのための開発版3.3はMinGWではまだ不安定です。
gnulibでportabilityをあげようとしての結果なのだと思っています。
3.4のリリースはいつごろになるのかな。
>>57 使ってみたらprintがだめっぽいですね
gif, png, jpgはだめ
MSVC版ではいんちきくさいながらも出来たのに
それとAuto Redrawしないので表示が消えちゃいます
drawnowすればいいだけですけど
実装があんまりよくないです
でもまあ、表示速度は段違いなので
経過を表示させる場合はいいかもです
>>58 そうですね。まあ,MSVC版ではoctaveのメンテナーとjhandleのメンテナーが
同じ人でしたからね。
MinGWでSun Javaを扱うのが難しいなどで時間もかかったようですし,
FLTK Backendがまともになれば,jhandlesの意味も薄れるので力がそれ
実装がMSVC版ほど力が入っていないのはある程度しょうがないと思います。
pipeがwindowsでは遅いのでgnuplotが遅いのはあるていど仕方ないですね。
octaveからだとgnuplotはwindows NativeよりCygwinの方が大分速いですね。
私は,本当につかうグラフはデータ書き出してgnuplotでやります。
octaveからだとgnuplotの機能をフルには引き出せないので
octaveのグラフィックスはあくまでも経過表示用にしか使っていません。
>>59 今出来るかどうか知りませんが、昔はこんな事してました
gset term postscript color
gset output 'hogehoge.ps'
plot (x1,y1)
gset term X11
単にprint文を知らなかっただけですけど
>>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になる流れではと思います。
今日,MinGW上でgcc-4.5.0でdevelopment branchのoctaveビルドしました。
先月ビルドしたときは,極めて不安定ですぐseg-faultを起こしていましたが
今日は安定して動いています。
fltk バックエンドも軸がちゃんと表示できるようになっていましたし,
連続プロットもgnuplotに比べかなり高速です。
ただしマウスで3Dぐりグリができなさそうなのが残念ですが。
しかし,MinGWはdevelopment branchのなかで一番対応が遅れていたのですが
これでなんとかなるめどがついた気がします。
あまり遠くない時期にoctave3.4が出てくるような気がします。
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
なのでデュアルコア自体は効いてるようです
>>62 最近のdevelopmentブランチをビルドしてみました(MinGW,gcc)。
fltkでepsを作成できるようになっており,またマウスによる3dの回転も
できるようになっています。
fltkもだいぶ実用に耐えるようになってきた感じです。
なにしろ高速なのがいいです。やっぱりOpenGLをつかっているからでしょう。
pkg installにもバグがあったようですが,それも解消されているし,
developmentブランチへの乗り換えを画策しています。
数学セミナーの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個まで増やすとどうなるか
という事について書かれてます。
既知の問題であれば申し訳ないのですが、ちょっと困っています。
以下のようにして、
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 :
66:2010/09/14(火) 21:52:39
すみません、書き忘れました。
Win版 3.2.4です。
68 :
名無しさん@お腹いっぱい。:2010/10/12(火) 03:41:06
保守
70 :
名無しさん@お腹いっぱい。:2010/11/13(土) 10:00:19
OctaveやFreeMATではMATLABのstemにあたるマッチ棒のようなプロットはどうやるんですか?
71 :
名無しさん@お腹いっぱい。:2010/11/14(日) 00:32:04
cvytvftvyghgbvyvybuhjkkvghghvgvgfvgfcjnhjgjhhuihuyfgvcg
>>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 >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 すみません。
74をみていませんでした<m(__)m>。
>>74 >後藤和茂さんがヘッドハントされてからバージョンアップが止まってますが、
>これも改善するかもしれません。
そうですね。
天才ハッカー(いい意味でのハッカーです。)後藤さんのあとを
続くような方が現れてプロジェクトとして
立ち上がってくれればいいのですが。
scilabとの違いが良くわからない
>>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はパラメータのμ秒数だけ待つ命令
データを全部テキストデータで保存すると
ファイル増えてしかたない
sqliteあたりにまとめて保存できないでしょうか
>>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コマンドで作られたファイルとの互換性もあるようです
>>79 ・グラフがOctaveよりはきれい
Ver. 3.3.54+ のFLTK Backendは,グラッフィクス,かなりよいですよ。
でも,自分でビルドしないと使えないのとMinGWではまだバグがある。
Ver 3.4はどれくらいかかるかな。
JWEさんのエンジンかかってきたから,数ヶ月後にはでるとおもうのですが。
>>80 help save
`-zip', `-z'とか`-hdf5'を使うと小さくなると思うのですが。
東京電機大学の松田先生の「Octaveの精義」がでました。
開発版も様々なプラットフォームでのビルドがかなり安定してきています。
私は,MinGWのビルドしていますが状況はかなり改善しています。
3.4リリースが確実に近づいています。
新しい fltk Backend は,すばらしいものです。
できるだけ早く皆様が見る日がくればいいなと思います。
Debianなどでは,自力でビルドできる方がいらっしゃると思います。
ビルドできる環境におられるかたは
是非自力で開発版をビルドされて,
その実力をみていただきたいと思います。
>>89 テストパッケージ、ありがたく使わせてもらっています。
octaveと直接関係ないところで申し訳ありませんが。。。
パッケージに入っているckwなのですが、ckw.cfgの以下行が
Ckw*chdir: d:\usr\Tatsu
自分の環境に存在しないディレクトリだとckwが
立ち上がらないようです。
>>89 入れてみましたけど
octave:1> backend("fltk")
error: `backend' undefined near line 1 column 1
となりますね。
plotするとgnuplotで描画されます。
>>91 graphics_toolkitに変わったみたいですよ(たしか)
>>92 確認しました
octave:1> graphics_toolkit('fltk')
octave:2> xx=[0:100];
octave:3> yy=sin(xx./5);
octave:4> plot(xx,yy)
これで表示されました
>>90 ckw のご指摘ありがとうございました。
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 GNUplotを使ってたり残念感がありますね
ckwとgnuplotをwxt拡張で使ってる方がまだましというか
どうせならScilabやR言語のグラフ機能を乗っ取ったとかの方が良かった
>>97 まあ,3.4になってfltkになればよくなると思いますが。Windowsでは,
まだしばらく3.4のリリースかかりそう。
3.4をビルドしてみたけど、fltkでついにui系の機能が実装され始めたみたいだね。
今のとこuigetfile、uiputfile、uigetdir、uimenuだけだけど、今まで手つかずだっただけに素晴らしい!
ところで、fltkって画像ファイルの出力ってできないんだろうか?
graphics_toolkit fltk;
plot(1:10);
print('test.eps','-deps');
とかやっても、空っぽのファイルしか出来ないんだけど…。
他の形式でも同様。
…うん、printはgnuplot backend使えって話はごもっともなんだけど、アニメーション作成用に
もうちょっと高速な出力手段を模索中。
誰か情報持ってない?
100 :
名無しさん@お腹いっぱい。:2011/04/15(金) 10:51:34.50
すみません,2ch初心者なんですが….
Octaveのプログラミングについて質問させていただける板ってどこにありますか?
「Octave」「octave」で検索かけてもこの板しか見つかりませんでした.
エラーの返ってきちゃう関数をどうすれば使えるか調べたいんですけど(汗)
>>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は直前のエラーが何かを表示します
octave for windowsはビルドが難航してるのかな?
octave から gnuplot を使うとき、最近のバージョンのoctave だと
gset や __gnuplot_set とかが使えないんですが
set term tgif みたいな処理はoctave からはどのように
すれば良いんでしょうか?
104 :
octave 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を作成する。
ぐらいでしょうか
>>104 すみません。やってみましたが,うまくいきませんでした。<m(__)m>
>>105 うまくいかなかったのはWindows 版のgnuplot のbug のせいのようです。
windowsでは
system('gnuplot debug.gp');
system ('type debug.gp | gnuplot')でうまくいきそうです。
tgifをもっていないのでfoo.tgifをテキストエディタで確認しただけですが。
postscriptでうまくいったので,tgifでもおそらくいくと思います。
>>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バクにより
正しくプロットされません。
107の続き
windowsでは
>> system ('type debug.gp | gnuplot');
としてください。
108 の続き
tgif はもっていないので,fig ファイルを生成するようにして
Cygwin 上Xfigで
でfoo.figを作成したところうまくいきました。
>> drawnow ("fig", "foo.fig", false, "debug.gp");
>> system ('type debug.gp | gnuplot');
できたfoo.fig をXfigでよみこんでプロットを確認しました。
tgifでもうまくいくと思います。
octave for windows メモの筆者さん
>>103です。
いろいろお答えいただきましてありがとうございました。
tgif への出力はできるようになりました。
私がoctaveを使いこなしていないからかも
知れませんが 個人的には gnuplot の細かい設定が
octave上からできる方が便利なのですが。
>>110 Octave は3.2(3.2では試験的,3.4から本格的)から
Open GL ベースのグラフィックスを扱うようになり,
整合性の観点から低レベルでgnuplotを直接触ることはやめになりました。
その代わり,octave-forgeにgnuplot パッケージがあり,
gnuplotを直接いじりたい方はそちらを使うという思想のようです。
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
>>114 どうもCygwin1.7.9-1とOctave+gnuplotの相性が悪いようで
Cygwin を1.7.8-1のダウングレードすると動きます。
116 :
名無しさん@お腹いっぱい。:2011/06/21(火) 15:01:05.47
114です.
cygwinのバージョンを1.7.8-1に直したところグラフ表示できました.ありがとうございました!!
117 :
名無しさん@お腹いっぱい。:2011/06/21(火) 21:24:25.60
最近octaveを始めたんだけど
octaveのサポート状況の良いディストリってどれ?
ubuntu のoctave はバージョン古い。
FreeBSDのportsのoctaveなんかは最新のおっかけは凄いけど
portsからのインストールは遅い。
>>117 jweさんがDebianだからのぞいてみたけど,まだ3.2.4のままですね。
octaveの本家のMLをみるとLinuxの人は割りと自分でビルドしているようです。
FreeBSDでは、現在 3.4.1 です。
なんか凄い気合入って追っかけているような感じ。
>>120 FreeBSDのOctaveのメンテナーの方を知っています。
(日本人です。)
その方は多倍長BLASの作者でもあります。
最近連絡を取りました。
ところでoctave 3.4.1には,mkoctfileにバグが見つかり,
3.4.2の準備段階です。(現在RC2がでている)。
FreeBSDは,3.4.2がでたらすぐ対応するようです。
しばらくはFreeBSDだな。
Octave のためだけに。
VMwareにFreeBSD入れておくか
>>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).
>>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では無理っぽいですね
>>130 そうですね。3.0.xのころdatabaseパッケージを四苦八苦していれましたが,
postgres と mysqlはあきらめてsqlite3とodbcだけでやったことがあります。
CygwinならたしかpostgresqlがOctaveを意識せずにあったような気がしますが,
それを使ってpkg installをしたことがないので,なんともいえません。
Cygwinの方がUnixに近いのでライブラリをかき集めれば何とかなるかも
知れません。
MinGWの体験版のOctave-3.2.4バイナリを作成し,配布してます。
http://www.tatsuromatsuoka.com/octave/Eng/Win/ あくまでも体験版で,
Octave-forgeがはいっていませんし,バグもあると思います。
インストーラーなる気の利いたものもなく,zipファイルを解凍して
適当なフォルダにおきます。
ビルドに必要なツールも一応いれたつもりなので,自分でビルドしてみたい
方はどうぞ。ただし,あまり丁寧な説明はしていません。
どなたか賢い方、助けて下さい…
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なら特に問題ないのですが…
>>133 Cygwin版ならちゃんと動くんでバグかもしれません。
>>133 >octave --eval "cd c:\\" --persist
で代用できませんか?
>>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もってないのでわからないので。
>>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
でも同義です。
こちらでも迂回策を探してはいるのですが、環境変数も効きませんし、なかなか…
>>137 octave --eval "addpath C:\\" --persist
ではいかがでしょうか。
>>137 蛇足です。Cygwin版のoctaveでは,おっしゃられている動作をする
ようです。MinGWならではのバグのようです。
職場のパソコンで自分でビルドした3.4.2(MinGW)でも,動作しなければバグ
報告をします。
>>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
:
(以下略)
**********************
>>138 ありがとうございます、現在そちらの方向で検討中です。
>>140 え?なぜ3.4.2はそんな残念な動作に…
3.2.4(Benjamin版)ではC:\Octaveを指定しても駄目なようですね
こちらの職場PCにはBenjaminさんのメモにしたがってビルドした
3.2.4がありますので、そちらも試してみます。
>>141 140 は長くて,2chにおこられたので,後から続きを書こうとしてわすれていました。
どーもドライブのルートディレクトリの場合は失敗して,C:\とならず,C:
となるのですが,C:\octaveのような場合は大丈夫です。
一応,development branch でも試すために,現在ビルド中です。
>>142 予想通りDevelopment Branchのソースからビルドしても,
octave --path c:\
のようなルートディレクトリの指定はバグってますね。
時間があるときにbug trackerに登録します。
(直るかどうかわかりませんが。)
>>143 大変感謝です…。
ちなみに、Benjaminさんメモに従ってビルドした3.2.4ですが、
MSYS環境ではpath指定が通りました。
コマンドプロンプトからはlibgcc_s….dllが足りないとか言われて
実行できなかったので、未検証です。
(MSYS環境以下を探しても見つからなかったので諦めてましたが、
よく考えたらMinGW環境以下にありそうですね…忘れてました)
>>145 Msys 環境下で指定がうまくいくということは,パスのハンドリングが
octave --path でUnix likeになっているからかもしれません。
なお,libgcc_s….dllなどたらない,dllは,Benjaminさんのビルドのbin
ディレクトリからコピーして,自分でビルドしたoctave.exe,
octave-3.2.4.exeのあるディレクトリにペーストすればいいです。
または,バッチファイルなどでBenjaminさんのビルドのbinディレクトリに
パスを通すという手もあります。
>>146 コマンドプロンプト環境下で試してみました。
dllはOctaveのビルドに使用したc:\mingwのbinにパスを通して
対処してます。
octave --path c:\msys -> OK
octave --path c:\ -> OK(ちゃんとc:\と表示される)
…あれ?
Benjaminさんメモに従うとコンパイルは自動で流れるので、
できるバイナリはインストーラで配布されているものと
同じはず、だと思うんですが…?
なお、本来の目的はOctave起動後にaddpathすることで達して
おりますので、これ以上追いかける意味は無くなってしまったのですが…。
ご報告まで。
>>147 ご報告ありがとうございました。
回避法があるとはいえ,不思議ですね。
質問いいでしょうか?
画像を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;
どなたかお願いします
>>149 画像処理は詳しくありませんが,演算が逆演算になっていないような気がします。
abs()をつけてる時点で虚数次元が飛んでますからね
>>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で戻るはずは原理的にないような気がします
>>152 訂正
Iin_d=double(Iin);
O_fft=fft2(Iin_d);% FFT
O_fft2=real(ifft2(O_fft)); %ifft
figure,imagesc(O_fft2,[0 255]); %ここを訂正
むしろこんな感じ
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とかを使わない
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に )
memory exhaustエラーが、少し大きめのデータで出てしまうのが、
改善されるといいなぁ。
>>159 64bit版ならそのエラーが簡単には出ないって話ですけどね
ただし正式なバイナリーがリリースされてない
>>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ぐらいに壁があるようです。
>>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の場合,スタックサイズの上限に問題があるようですね。
>>163 倍精度複素数16bitではなくて16Bytesの間違いでした
全部の変数で2GB未満しかアロケート出来ないっぽいです
2^32は42億9496万7296でしたか、つまり4Gですが
CPUは2の補数をとった2Gまでしかアクセスできないのでしょう
Octaveの連想配列はどう書けば良いのですか?
データに番号がついていて連続していない状態で、他のデータから連続していないデータを参照しているので
内部で番号をつけ直しています。つけ直しの時に総ナメのような感じになってしまうので連想配列が使えたら
と思いまして質問しました。
>>168 構造体で、それっぽいことはできたはず。
その用途でしたら、スパース行列でもよさげ。
どっちが速いかは未検討。
170 :
168:2011/10/02(日) 09:20:50.75
>>169 a.idみたいな感じで丁度構造体を使っているので構造体を使った連想っぽい処理をもう少し具体的に知りたいです
どんな感じで使えば良いのですか?
>>169 問題がややあいまいなので、もうちっと具体的にどうぞ。
情報の後出しは、無しということで。
172 :
168:2011/10/02(日) 18:24:07.84
どこまで必要な情報なのか・・・書ききれるのか分かりませんが書いてみます
有限要素法のプログラムを勉強のために作っているのですが、データが節点、
要素等番号がついています。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で信用なりませんが、
各種アルゴリズムの実装を知るには非常に有用です(個人的に、固有値解析のとこは感動しました)。
174 :
168:2011/10/04(火) 20:03:02.40
>>173 お返事有り難う御座います。
処理速度を早くするためにはスパース行列が良さそうですね、
処理手順を多少弄らなければいけなさそうですが少し考えてみます。
案2の方も少し考えてみます。(使えそうな使えなさそうな・・・)
OpenFEMの情報有り難う御座います。少しググってみます。
>>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みたいに記法する方法はないですかね?
>>181 1
y1: -----
s + 1
が崩れて表示されていますね。すみませんm(__)m。
早速ありがとうございます。
使ってみます。
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)で制御を勉強したい
という人が多いのでしょうね
>>189 される見込みは,残念ながら今のところありません。
MaintainerのBenjamin Lindnerさんが5月ごろから,svnの作業ツリーやML
などから,姿を消しておられます。
私は,ビルドしかできないので3.4.2を自分のWebにのせたら,
Nitzan Araziさんが7zipによるアーカイブと octave-forge のパッケージを
(7 zip)作ってくださいました。
lsode関数で微分方程式を解いて時間経過を見るとき
変数xが負の値をとる場合にはゼロになるように条件を加えたいのですが
そういったことは出来るのでしょうか。
>>191 マニュアルを読む限りではそのようなオプションはないと思います。
数学的な工夫でできるかもしれませんが。すみませんがわかりません。
193 :
名無しさん@お腹いっぱい。: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にはあるのに)
>>193 本家のoctave-dev ML (Octave-forgeのメーリングリスト)で聞くしか
ないでしょう。たしかMaintainer が最近変わったようなので。
197 :
名無しさん@お腹いっぱい。: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
>>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の再起動が必要なことに今の今まで気づいてませんでした;;
どうもお騒がせしました。
>>200 情報ありがとうございます。確かにOctave Integrationとありますね。
OctaveのMLでは,なにも話しは出ていませんが,どうなんでしょうね。
Octave MLでは3.6のリリースに向けて議論がなされています。
GUIも開発されつつあります。
FreeMatって
G=1/(1+0.1*s)
bode(G)
みたいな事はできるんですかね?
Octaveは最新版でやっと出来るようになったみたいですが。
207 :
名無しさん@お腹いっぱい。:2011/12/10(土) 02:50:59.58
>>206 おぉお。
ついに!
ありがとうございます
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
210 :
209:2011/12/12(月) 00:01:14.96
過去レスにサンプルまでいっしょのレスがありました。驚きです。
cygwinのダウングレードで解決されていましたが、
ダウングレードはするつもりがないので相性がよくなるまで待ちます。
>>210 CygwinのMLを見ているとOctaveとの相性の悪い1.7.9に代わって1.7.10が
テストリリースされているようです。まだ,試していませんが問題が解決して
いることを願います。
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が出ないよという書き込みがあったから
217 :
名無しさん@お腹いっぱい。:2011/12/18(日) 02:33:58.07
iphone用octaveでないかなー
最近,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で落ちるのは,バグかなと思います。
ちょっと調べてみます。
また,2重投稿になってるm(__)m
>>230 subplotが怪しいのかなあとおもいましたが,単にsubplotしただけではfltkでの
グラフ落ちませんでした。Controlパッケージのせいなのかな?
ちょっと見当つかないですが,余力があればBug Trackerにあげてみます。
それで解決するかはわかりませんが。
>>234 ありがとうございます。
お世話かけます。
本当に初歩的な質問ですが、octaveで乱数(メルセンヌツイスタ)を使いたいのですが、その乱数がcファイルなので、どうすればoctaveで使えるのですか?
因みに目的はメルセンヌツイスタを用いた乱数発生で円を求める奴です
>>239 help rand
を見ると、現在のOctaveのrandで用いているのは
擬似Mersenne Twisterのようです
>>241外した答えになっているような気がする。許してください。
243 :
239:2011/12/26(月) 16:06:13.41
>>240 ごめんなさい、メルセンヌツイスタ縛りなのでrand関数は不可です
あくまでも公式サイトから落としたメルセンヌツイスタプログラムを用いて計算しなければならないので…
てか何故PCから見れないんだ、このスレ(´・ω・`)
それです、正にそれです
流石に馬鹿過ぎる質問ですがコンパイルと実行ファイル制作ってどうするんですか?
コマンドプロンプトを使ってやるのですか?
それとも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で書いてるのと一緒です
オレの馬鹿、連レスサーセンです
>>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 にしてお使いください。
264 :
名無しさん@お腹いっぱい。:2011/12/28(水) 22:51:43.25
本当に初歩的な質問で申し訳ございません。
今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が別のところになければ実行できないのですが、
どうすればよいのでしょうか?
なにが言いたいのかよくわかりません。もう少し実例をあげてわかりやすく
質問してください。
268 :
名無しさん@お腹いっぱい。:2011/12/29(木) 11:36:23.43
どういうわけかグラフを一つ書きません。
訳がわかりません。
## 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])
269 :
名無しさん@お腹いっぱい。:2011/12/29(木) 13:53:53.94
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じゃなくて) はとても起動が速いのに。
>>271 起動はUbuntuなどのUnixではとても速いです。起動がWindows用に最適化
されていないように感じます。
>>269 どうもoctavercおかしい、文字列をの''であって、""でないから、\\でなくて\が
パスセパレータですね。でも、おかしい
octave:1> edit
warning: unrecognized escape sequence `\P' -- converting to `P'
warning: unrecognized escape sequence `\N' -- converting to `N'
error: system: CreateProcess failed -- can't create child process
error: called from:
error: C:\Octave\Octave3.4.3_gcc4.5.2\share\octave\3.4.3\m\miscellaneous\edit.m at line 212, column 7
とりあえず、Notepad++をOctaveとは別に起動してそこで編集してみてください。
>>271 >>263 Cygwin版octaveで、試してみました。FLTKマウスぐりぐりでも、Octaveハング
しません。ただし、マウスぐりぐり自体は少し変ですが。
# Cygwin版では、octave-forgeパッケージはauto loadでないですね。
>>273 windows 7 64ビットだとNotePad++は
C:\Program Files (x86)\Notepad++
にインストールされる。
()は、認識されるかわからないので、コマンドプロンプトで
dir c:\ /X
古いプログラム互換のための短いパス名を調べて、Program Files (x86)
は、PROGRA~2であることがわかる。ついてにパスセパレータを\から
/に変更して、私の環境では、
EDITOR('C:/PROGRA~2/Notepad++/notepad++.exe');
としてみた。
これで、octave のコマンドプロンプトから、editで NotePad++ が
(少なくとも私の環境では)起動するようになった。
276 :
名無しさん@お腹いっぱい。:2011/12/31(土) 10:25:08.41
>>270 できました!
すごい。9の時点で動いたので、これからはnotepadにコードを作って
そのたびに5から8の動作をして確かめたいと思います。
本当にありがとうございました:D
278 :
名無しさん@お腹いっぱい。:2012/01/06(金) 23:34:58.90
matlab風に使いたいのでoctave workshopのinstaller付のwin版を
ダウンロードしたのですが、インストールはできたのに起動しません。
原因をご存知の方がいればお教えください。
280 :
名無しさん@お腹いっぱい。:2012/01/07(土) 21:22:43.08
278です。
GUI Octaveをインストールしたのですが
Error message: Redirect console error: 3
と表示されてしまいます。
たびたび申し訳ありませんが、原因をご存知の片がいればお教えください。
>>281 私は,GUI に興味がないので使用したことがないので,お役に立てません。
ここで回答がつかなければ,GUI Octaveは生きているプロジェクトのようです
ので敷居は高いですが,GUI Octaveの英語のフォーラムで尋ねられるとよいか
と思います。
>>280 Octave-3.2.4をインストールしていない
に1票
283 :
名無しさん@お腹いっぱい。:2012/01/08(日) 12:30:30.35
Octave-3.2.4をインストールする前にGUI Octaveをインストールすると、
Error message: Redirect console error: 3
が出る。
これは、GUIOctaveの File/Options/Octave/GNUOctave Executable Files Directory に
パスが正しく設定されていないことでもわかる。
Octave-3.2.4を入れているのに、なぜかここにパスが設定されていないときは、
ここに
C:\Octave\3.2.4_gcc-4.4.0\bin
を設定する。
そもそもOctave-3.2.4を入れていないのであれば、
一度GUIOctaveをアンインストールして、Octave-3.2.4を入れる.
これが正しく入っていると、GUIOctaveはインストール時に自動的にOctaveパスをセットしてくれるので
特に設定は要らない。
Octave-3.2.4を入れるときには
octave for windows メモの筆者さんの
http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#100403 を、ありがたく、よく読んでからな〜
FreeBSD 9.0Rが出たので入れてみたメモ
octaveはpackagesから入れると起動時にGLIBCXXなにがしというエラーが出ます
portsから入れるとmake途中で同じエラーが出ます
原因はglibcのバージョンの問題で
LD_LIBRARY_PATH
の先頭に
/usr/local/lib/gcc46
を入れてください。
一応正常そうに動きました。
287 :
名無しさん@お腹いっぱい。:2012/01/14(土) 20:02:14.37
for i=1:1:n
t=0:dt:t;
figure(i)
subplot(1,3,1)
plot(t,xx1(i,:))
grid on
title('Displacement-time')
xlabel('time')
ylabel('displacement')
subplot(1,3,2)
plot(t,xx2(i,:))
grid on
title('Velocity-time')
xlabel('time')
ylabel('Velocity')
subplot(1,3,3)
plot(t,xx3(i,:))
grid on
title('Acceralation-time')
xlabel('time')
ylabel('Acceralation')
hold on
end
288 :
名無しさん@お腹いっぱい。:2012/01/14(土) 20:04:41.86
上のコードは自分で作成しました。
もし、n=5であれば、5つの図を出したいのですが、
上記の場合ですと、1つ目の図はプロットされていますが、
2つ目以降のグラフは、grid とtitleなどが表示された図が表示されるだけで
プロットされてません。
なお、xx1やxx2はちゃんと値が入っているので数字的ミスはまったくないです。
forで回すのは、figureを作成するうえでやめたほうがいいんでしょうか?
よろしくお願いします。
>>288 それぞれの図を描くとき
drawnow
が入っていないのが原因なのでは?
t=0:dt:t;
octaveにかけると、この文でエラーになるけど?
>>290 上のコードはこれ単独では動きません。
動かすには,tとdtの設定のほかにも,xx1とxx2の定義が必要ですので。
できれば,単独で動いて動作確認できるコードをあげていただけると
答えがつきやすいと思います。
ところで
t=0:dt:t; はループの外に出すでしょう。ループの中にいれるのは,
間違いでないけど意味が不明です。
やってみました。たしかにループでなく描画するとグラフかけますね。
バグかもしれません。
Octaveのバージョン,Windows,Mac,Linuxなどお知らせください。
>>
おっと, windows版octave 3.4.3で試してみました。
>>287 よくコードを読むと
t=0:dt:t;
がfor loopの中に入っているためn=2からは
区間ではなくなってますね。
t=0:dt:t
をloopの外に出すと正しく動くようです。
以上
>>296 Scilabも5.4.0-alphaからコマンドウインドウの左右に
補助ウインドウが出るようになりました
ただしScilabは左が、変数&履歴ウィンドウ、右がファイルブラウザ
まあでもド素人にMatlab系のプログラミング技術を教えるだけなら
FreeMATでいいかもしれないです
インストールが簡単だし、dos画面じゃないし、
グラフもgnuplotとかではなくてネイティブだし
>>298 FreeMATって、コントロールパックとかあるんでしたっけ?
伝達関数とか、それのインパルス応答とか、ボード線図かくやつ。
>>299 無いですね
tfもzpもstepもbodeも
制御をやる目的ならscilabの方がいいと思います
scilabはmatlabから入ると流儀がわからないかもしれませんが
慣れればどってことないです
octaveは限界が高いですけど
初心者がやるにはハードルも高いと思います
dos画面だけってのは初心者は面くらうでしょう
それで電卓代わりに使う目的ならfreematで十分という話です
>>300 OctaveはもともとUnix由来のソフトですし,Windowsの開発陣のリソースは実に
薄い。UnixではTerminalでのソフトはまだ一般的ですし,UnixのTerminalは
コマンドプロンプトよりは使いやすい。
#Windows 2000からはコマンドプロンプトが正しい名称であって
#ドスプロンプトではないです。まあ,それのほうがつうじますが。
>>301 ちょっと舌足らずした。
とはいうもののUnixでもGUIのご時世なので,Octave本体もやっと
真剣にGUIインターフェースをつくりはじめています。
ちとお待ちください。
遅ればせながら、3.6.0のNEWSを読んでみた。
ぱっと目についた新機能は以下。
1.バイナリ演算子のブロードキャスト
ex.) rv=(1:5)'、M=magic(5)の時、repmat(rv,1,5).*Mがrv.*Mと書ける
2.プロファイラの実装
profile, profshow, profexplore
3.parfor(for文の並列処理)のサポート
但し、内部動作はforのまま
parfor、一瞬期待したのに…!
308 :
名無しさん@お腹いっぱい。:2012/02/10(金) 15:43:20.25
>>308 もしかして、試してすらいない?
うちの環境だとこんな感じ。
Octave 3.2.4, Linux 2.6.32, Core2Duo 1.8GHz
octave:1> lutest(5000);
P の掛け算の計算時間
Elapsed time is 0.0580444 seconds.
L による割り算の計算時間
Elapsed time is 0.0310717 seconds.
U による割り算の計算時間
Elapsed time is 0.0300882 seconds.
leftdivu() による割り算の計算時間
Elapsed time is 0.843658 seconds.
精度
ans = 1.1294e-06
ans = 1.1197e-06
※実際は100回計算してる。上の時間は平均値
>>309 試してというか、インストールすらまだしてないw
ちょっとoctave使ってみようかな、ありがとう
久々です
少し訳の分からないエラーが出たので質問したいのですが…
今サクラエディタ上で次のようなプログラムを作ってました
function dx = f(x,t)
dx = 1/(1+t^2);
end
t = linspace(0,10,101);
x = lsode("f",1,t);
因みにプログラムの内容は微分方程式 X' = 1/(1+t^2)をlsodeを用いて解くというものです
コレをコンパイラしたところ以下のようなエラーが出てしまいます
warning: function name `f' does not agree with function file name (filename)
parse error near line 5 of file (filename)
syntax error
>>> t = linspace(0,10,101);
error: `t' undefined near line 2 column 12
error: called from:
error: (filename)
こんな感じのエラーでした
しかし窓でプログラムを制作した場合は何故かエラーなしでグラフを表示することができました
何でこんなエラーが出たのでしょうか?
^
>>311 今サクラエディタ上で次のようなプログラムを作ってました
というのは,以下の内容を含むmファイルを作成して(例えばfoo.m)
function dx = f(x,t)
dx = 1/(1+t^2);
end
t = linspace(0,10,101);
#**********:
Octave のプロンプトからfooと打ったということでしょうか。
Octaveのmファイルには,スクリプトmファイルと関数mファイルがある。
Octaveはfunctionで始まるmファイルは関数mファイルと考える。
上の例は関数定義のあとにlsodeがあり,明らかに関数mファイルではない。
したがって上のスクリプトは間違いである。
warning: function name `f' does not agree with function file name (filename)
は,関数mファイルは関数名とファイル名が一致しないといけないのでたwarning.
>>311 >>312 上のスクリプトをスクリプトmファイルと認識させたいならfunctionキーワードの
前に命令を入れる。例えば
1;
function dx = f(x,t)
dx = 1/(1+t^2);
end
1;は無意味な命令だがそのおかげで,octaveはこのファイルをスクリプトm
ファイルと認識できる。
>>313 解決しました!
ありがとうございます!
流石に課題丸投げは行けないと思うが、悩みに悩んだ結果積んでしまったので教えてください
ttp://loda.jp/subject_2ch/?id=762 これが課題の内容(pdf形式)です
只今小問2に関するプログラムを制作してるのですが、どうしても等高線グラフができません
一応原因はある程度把握してますが(ip(k,n)に関して、kが整数ではないからエラーがでる)それに変わるプログラムが分からず…
以下に小問2に関するプログラムを載せますので、どこがどう違うのかを指摘してくれれば有難いです
1;
function dx = f(x,t,n1,k1)
dx = -k1*x^n1;
endfunction
t = (0:1:300);
x0 = 10;
for k = 10^-9 : 0.1 : 1
for n = 1 : 5
x = lsode(@(x)f(x,t,n,k),x0,t);
ip(k,n) = (x(21) - 8)^2 + (x(41) - 6)^2 + (x(61) - 5)^2 + (x(121) - 3)^2 + (x(181) - 2)^2 + (x(301) - 1)^2;
endfor
endfor
contourf(pi)
>>315 ttp://loda.jp/subject_2ch/?id=762 がダウンロードできないので,もとの問題についてはわかりませんが,
ip(k,n) = (x(21) - 8)^2 + (x(41) - 6)^2 + (x(61) - 5)^2 + (x(121) - 3)^2 + (x(181) - 2)^2 + (x(301) - 1)^2;
はkが正の整数かロジカルでないといけないので,こういう書き方は許されません。
>>316 (ip(k,n)に関して、kが整数ではないからエラーがでる)って書いてありましたね。
すみません。
>>315 1;
function dx = f(x,t,n1,k1)
dx = -k1*x^n1;
endfunction
t = (0:1:300);
x0 = 10;
k=1e-9;
for m = 1:10
for n = 1 : 5
x = lsode(@(x)f(x,t,n,k),x0,t);
ip(m,n) = (x(21) - 8)^2 + (x(41) - 6)^2 + (x(61) - 5)^2 + (x(121) - 3)^2 + (x(181) - 2)^2 + (x(301) - 1)^2;
k=k+0.1;
endfor
endfor
contourf(ip)
は一応等高線はでるが,目指しているものと同じかわかりません。
>>318 contourf(ip)
は
contourf(1:5, 1e-9:0.1:1, ip)
か
contourf(1e-9:0.1:1, 1:5,ip')
にすればよいかも。
>315-319
要は配列の概念とcontoturfの使い方がわかっていないのかなと思います。
ヘルプを読めばいいのですが,英語ですしね。無理もないかもしれません。
pdfをダウンロードできました。
もう少しいじる必要があると思いますが,基本的にはこれでいいのかな。
あとは自力で頑張ってください。
>315-319
要は配列の概念とcontoturfの使い方がわかっていないのかなと思います。
ヘルプを読めばいいのですが,英語ですしね。無理もないかもしれません。
pdfをダウンロードできました。
もう少しいじる必要があると思いますが,基本的にはこれでいいのかな。
課題ですので,あとは自力で頑張ってください。
まだ,公式には発表されていませんが,Michael氏がMSVC版のoctaveの復活に意欲
を見せておられます。さて,どうなるでしょうか。
まだ,公式には発表されていませんが,Michael氏がMSVC版のoctaveの復活に意欲
を見せておられます。さて,どうなるでしょうか。
326 :
名無しさん@お腹いっぱい。:2012/03/03(土) 23:33:37.71
いきなりの質問ですみません。
2つほど質問があります。
1.2段のワードの形式で論文を書いているのですが、
どうしても、ワードの大きさに縮小してしまうと、メモリどころか
線すらはっきり映りません。これをどう解決すればよいのでしょうか?
2.グラフを描くときに、色ではなく破線や点線はどのようなコードを
打てばよいのでしょうか?
なにとぞよろしくお願いします。特に1番目の質問が深刻です。
327 :
名無しさん@お腹いっぱい。:2012/03/03(土) 23:42:00.21
2番目は解決しました。すみません。
>>326 ?? プロットした図が縮小すると見えなくなるということでしょうか。
ワードだからWindowsですよね。octave-3.2.4でしょうか。
gnuplotの画面をコピーしてワードに貼り付けているということでしょうか。
私はoctave の図をそのまま使わないので良くわかりませんが,
print コマンドでemfか何かでセーブした図を使ったほうがいいかもしれません。
329 :
名無しさん@お腹いっぱい。:2012/03/05(月) 20:49:38.55
octave-3.6.0で
1.1
ans = 1.10000000000000
single(1.1)
ans = 1.10000002384186
となります。これってどうなんですか?
どなたか教えて下さい。
>>329 補足するとsingle(単精度)の有効桁は10進に治すと約6-7桁なので
それ以上の桁数の数値についての保証はなく
>>330 の方がおっしゃるように,単精度の範囲では問題ないことになります。
333 :
名無しさん@お腹いっぱい。:2012/03/29(木) 13:44:37.57
octave 3.6.1-mingwで例えば
text(0.5,0.5,"{\pi}","interpreter","tex")
とやってもTeXでπで書いてくれません。
対処法を教えていただけませんか。
お願いします。
>>333 graphics_toolkit gnuplot
でなんとかなりませんか?
octave 3.6.1-mingwはgraphics_toolkitはfltkがデフォで,texはまだfltkでは
対応していないと思うので。
SourceForgeに登録されてるWindowsバイナリの3.2.4、3.4.3、3.6.1
(MinGW版、いずれもクリーンインストール)を、現在XPで使用中
なのですが、3.2.4と比較して3.4.3、3.6.1の起動がやたらと遅くなって
おります(30secくらい?CPU100%)。
どなたか、回避策をご存知の方とかいらっしゃいませんでしょうか?
>>337 全く同じ事で悩んでいたけど、
windows7/64bit+Corei7+16GBRAMに買い換えたら起動が速くなったよ
>>338 おぉ、やはり他の環境でも再現することがあるのですね。
ぐぐっても何も出てこないので、困ってました。
時間ができたら、起動シーケンスを追っかけてみることにします。Thx!
>>337 >>338 MinGW版はXPではやたらと起動が遅くなるようです。
MSVC版だとそれほど遅くならないようです。
>>340 そうなんですか…情報感謝。
ただ、MSVC版は開発環境が揃ってないんで、自作octが
コンパイルできないのがネックです。
コンパイラだけでなく、dllとかもぼろぼろ抜けてるような…
>>341 >コンパイラだけでなく、dllとかもぼろぼろ抜けてるような…
それはこまったことですね。
337の件、追加でご報告。
どうも、時間が掛かってるのはoctaveのmain関数が呼ばれる前で、
main関数に入ってしまえばコンソールにアクセスできるまで
1秒もかかってません。
dllのロードが重いのかとrebase.exeとか使ってみましたが、効果なし。
私にはここから先のアプローチが思いつかないのですが、どなたか
ヒントお願いします…
345 :
名無しさん@お腹いっぱい。:2012/07/25(水) 12:26:52.32
octave-3.6.2 mingw版ですが、peaksなどなんでも良いのですがグラフを書いてもちゃんと描いてくれません。refreshすると描いてくれます。以前にもこんなことありましたが対処法はありますか。
346 :
名無しさん@お腹いっぱい。:2012/07/27(金) 09:14:20.16
345の件
graphics_toolkit("gnuplot")
putenv("GNUTERM","wxt")
でとりあえず希望どおりに動きました。
347 :
名無しさん@お腹いっぱい。:2012/07/30(月) 20:02:25.49
345の続き
putenv("GNUTERM","wxt")の状態でpeaksなどとしてグラフを描くと、グラフは
ちゃんと描いてくれますがwindowsのターミナルが大きくなってしまいます。
どなたか教えてくれませんか。
最近、書き込みが少なくて寂しいです。
答えてあげたいけど、Linux版を使ってるしグラフも余り書かないから答えてあげられない・・・
> 男性は聯合ニュースの取材に対し、
暴行を受けている間も警察は積極的に止めようとせず、
男らは韓国人を差別する暴言を吐いたという。
警察はチョンの見方ですから有り得ません。
日本人にどうしても有事を惹起せしめたい欧米軍産複合体の意図じゃん
Windows(MSYS)版を使ってますが、ファイル選択ダイアログを表示してパスを
取得できる関数、あるいはそういう機能が使えるようになるパッケージって
ないもんでしょうか?
おぉ、望みどおりのことができました。
GTKなのか見た目はショボいですが、機能的には十分です。
画像データを読み込んで行列にしたりそれを表示したりできますが、
この行列データに対して直線や円を描画する関数とかないですか?
>>354 それは表示した状態に書き込むのか,
それとも画像の実体(行列)に書き込むのか?
行列に対してです。
一応Bresenhamのアルゴリズムとか調べてみましたけど、既に実装
されているものがあればそっちを使いたいなぁと。
そういえばScilab-5.4.0がβ3まで来ましたが
xcosが不安定で使い物にならないですね
5.3.3は安定なんですけど、AFFICH_mがバグって使えない(実行中に数値を表示しない)
Scilabが5.4.0のβ3が不安定なのを認めてひっこめましたね
原因が特定できたらしいので
リリース時には急に落ちる事はなくなりそうです
MatlabのGUIを自宅でやりたいんだけどOctaveでできますか?
できません
361 :
名無しさん@お腹いっぱい。:2012/10/21(日) 18:48:24.67
>>360 ありがとうございます
では、他のフリーソフトで行うことはできませんか?
どうしても自宅でやりたいんですが・・・
Javaででも書けば?
>>361 SIMULINKをやりたいってことですかい?
imcropがoctaveにはないけどトリミングはどうすればいいの?
367 :
名無しさん@お腹いっぱい。:2012/12/08(土) 02:35:03.97
leasqrを使って、2変数関数のフィッティングをやりたいんですが、
どう書けばいいですか?
http://octave.sourceforge.net/optim/function/leasqr.html によると、
x = vector or matrix of independent variables.
と、独立変数がmatrixでもいいように書いてあるので、
2変数でも使えるんじゃないかと思っています。
試しに、xを2次元で取って、それぞれ-1〜1の整数を代入してやると、
推定対象の関数f(x,p)の中で、x=(-1,0,1,-1,0,1)として認識されています。
その先、関数内で2つの独立変数を式にどう表せばいいのかが分かりません。
前のスレから
256 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2006/06/27(火) 20:52:22
>>253 octave-forge から持ってきて、leasqrdemo.m をにらめっこしながら、
ようやく動かすことができました。
x=[1; 2; 3; 4; 5];
y=[1; 3; 6; 7; 8];
function ret=F(x,p)
ret = p(1)*x.*x + p(2)*x + p(3);
endfunction
pin=[1 1 1];
[f,p]=leasqr(x,y,pin,"F")
まず、xとyを列ベクトル標記に変え、さらにx*xの計算のところを
x.*xに変えました。これで、動かし方を理解できました。
どうもありがとうございます。
369 :
名無しさん@お腹いっぱい。:2012/12/08(土) 15:59:35.11
[f,p]=leasqr(x,y,pin,"F")と、「x*x→x.*x」ですね。
ありがとうございました。
試してみます(月曜にならないとためせないんですが)。
Octave-3.6.2-vs2010-setup
って、ライブラリもインストールできるのはいいんですが、
pkg rebuild -auto
ってやってもロード出来ない(再起動しても、autoLoadされていない)
のはしょうがないんですかね?
(pkg load all って打てば大丈夫だから、スタートアップに入れておけばいいんだけどさ)
371 :
名無しさん@お腹いっぱい。:2012/12/09(日) 01:54:34.33
>>368 >>369 ・・・って、思ったら「前のスレから256」は、独立変数xが1つの場合ですよね?
知りたいのは、例えば独立変数xが2種類(x1とx2とします)あって、
(x1,x2)の組に対して観測値yが1つあり、
ret = p(1)*x1 + p(2)*x2 + p(3)
みたいな場合に、x1とx2のそれぞれの取る値をmatrix xに入れた上で、
ret = F(x,p)
の式で、matrix xの中のx1に相当する値とx2に相当する値を
どう表現すればいいかってことなんですが・・・。
具体的には、画像座標(x,y)について、各整数画像座標位置に対して与えられる
とある値(例えば標高値)を関数でフィッティングしたいんです。
372 :
名無しさん@お腹いっぱい。:2012/12/14(金) 23:06:25.18
参考になりますかどうか。
あと、複素数で表すことも出来ます。
function z = f1(x,p)
x0=p(1); y0=p(2);
z = exp( -( (x(:,1)-x0).^2 + (x(:,2)-y0).^2 )/2 );
endfunction
% ns = xpoints*ypoints;
% z(ns,1), x(ns,1) = x of data, x(ns,2) = y of data
% p(1, parameters)
x0 = 0.1; y0 = 0.2;
xt = [-4:0.5:4]; yt = [-4:0.5:4];
[xm, ym] = meshgrid(xt, yt);
zm = exp(- ((xm-x0).^2+(ym-y0).^2)/2 );
plot3 (xm, ym, zm, "linestyle","none","marker","+");
input("type enter","s");
x = [xm(:),ym(:)]; z = zm(:);
pin = [0.3, 0.4];
[f,p,cvg,iter] = leasqr(x,z,pin,@f1);
p
ちょっと板違いかもしれませんが…
WindowsでC++からOctaveを呼ぶ場合、cygwinかMSYSのgccでしか使えないんでしょうか?
VC++で通常のWindowsアプリから使える方法はあるでしょうか?
ある。人並みの検索能力がある人間ならば。
378 :
名無しさん@お腹いっぱい。:2013/01/28(月) 19:37:43.92
octaveを使おうとインストールしたのですが、エラーが出てgnuplotが出ません。
error: feval: function `unimplemented' not found
と出ます。どうすればいいのでしょうか。
>>378 Octaveのバージョンとプラットフォーム(WIndows,Mac, Ubuntu)などを明示してください
>>379 バージョンは3.6.1で、windowsです。
>>380 MSVC版ですか? MinGW版ですか?
名前にスペースのあるフォルダ (C:\Program Files 等)にインストールして
いませんか?
>>381 申し訳ないのですが、自己解決しました。
ありがとうございました。
まず服を脱ぎました。
Windows VS2010版Octave 3.6.2のGUIで
実行するたびにコマンドラインが右にずれるのはなぜでしょうか
日本語ロケールがいけないのかな
ちなみにスタート直後にmoreがかかってるので
more off した方がいいです
>>385 試しに
system("chcp 437")
としてみてください。
>>386 カーソル位置はずれるけど、
shift-jis(932)
よりはましですね
英語版Windowsならまともに動くのかもね
>>387 >カーソル位置はずれるけど、
Fileメニューのsetteingでterminalタブでfontを
Lucida Consoleに選んて,chcp 437をかけると少しましになります。
>>388 本当だ、すげ!
使いものにならないと思ってたのが見違えた
391 :
名無しさん@お腹いっぱい。:2013/03/07(木) 04:56:26.85
ねえ 作った関数って保存できないの?
>>389 開発版だとGUIがデフォのようですね。
コマンドライン版Octave-cliになってます。
結構安定に動くのでこちらを使おうかな。
>>391 エディタで関数を書いてfoo.mのような名前で保存すればいい。
>>394 インストールしてみましたが,なかなかよいですね。
フォントをTerminalにすると日本語の表示も問題ないですね。
Windows用の3.6.2でグラフをprintで保存したいんだけど、msys版だとグラフの
描画がバグる場合があって、VS版だとprintしてもファイルができませんでした。
Windows版でjpgかpngでグラフを保存したい場合、どういう環境/設定を
使えばいいでしょうか?
>>397 msys版じゃなくてMinGW版でしょう。
それはさておき,graphics_toolkitをgnuplotにして試してもらえませんか?
>> graphics_toolkit gnuplot
>> fplot ("[cos(x), sin(x)]", [0, 2*pi])
>> print ('test.png', '-dpng')
gnuplotにしたらVS版で保存できるようになりました。ありがとうございました。
ところで、graphics_toolkitを一旦gnuplotにしたら再起動するまでqtには
戻せないんですかね?available_graphics_toolkitsにも出てこないですし。
>>399 >> graphics_toolkit qt
で戻せると思います。
>>400 >> close all
>> graphics_toolkit qt
ですね。失礼しました。
規制明け。
>>388 Thanks!!
>>389 JITコンパイラすげー!!!
Octave 3.6.2 (MSVC2010): 2.3 [sec]
Octave 3.7.2+ (MSVC2010): 0.016 [sec]
a = 1; b = 1;
for i=1:1000
for j=1:1000
a = a + b;
end
end
…と思ってたら、a,bが行列の場合は速度Upしないのね…残念。
>>193 大分前の話ですが,tf2ssなどはsignalパッケージに移ったようです。
Scilab 5.4.1がリリースされました
5.4.0はバグが多かったのでそのフィックスが主のようです
>>394 >>396 WOctaveとDomainMath IDEがバージョンアップしたようです。
>>404 Scilab 単独スレってないのかな??
Scilabは、Octaveよりかはメジャーだと思うのだけど。
大学とかCQ出版の本とかでも、よく画像処理や音声処理で用いられているし。
>>407 「Scilabを触ってみるスレ」とか「SCILABな」とかあったみたいだけど終わっているようですね
>>408 >
>>407 > 「Scilabを触ってみるスレ」とか「SCILABな」とかあったみたいだけど終わっているようですね
終わったというか、サーバーが落ちたときに全スレがなくなって、その後、誰も立ててないってっ感じ。
だれかScilabスレたてて。
プログラム板に「【scilab】サイラボ」ってのも有ったな・・・11レスで落ちたけど。
誰かたててくれるなら俺はうれしいけど、すぐdat落ちする予感。
OctaveなんてただのMatlabクーロンだからMatlabと統合でよい。
Scilabは独自に進化しているからMatlabやOctaveとは違うのだけどなあ。
octave3.6.2_gcc4.6.2をWindows7 64bit環境で使っているのですが
13500x13500程度のデカい行列を扱うとmemory exhausted errorで落ちてしまいます
octaveを64bitに対応させるにはどうすればよいのでしょうか?
>>412 64ビット化はDevelopment Branchで試みられている段階で現時点では利用できません
Scilabについてなのですが、ここで質問させてください。
(他に適切なスレがあれば誘導お願いします。)
組み込み関数abs(x)のように、渡した行列xのそれぞれの要素に対して
条件分岐をする関数を作りたいと思い、以下のようなコードを書いたのですが
期待通りの動作をしません。
これは for i = 1:length(x) do ... といったようなコードを書かなければならないので
しょうか?
function y = myabs(x)
if x < 0 then
y = - x;
else
y = x;
end
endfunction
x = linspace(-1,1);
plot(x,myabs(x),'-r');
plot(x,abs(x),'-b');
415 :
名無しさん@お腹いっぱい。:2013/12/13(金) 20:22:23.00
保守
>>414 x = linspace(-1, 1)
y = x.*(x>=0)-x.*(x<0)
これでいいじゃん。
見てないと思うけど。
子供の頃BASICで遊んでいたとき、IF文は遅いのでこういう論理式で処理してた。
>>416 行けました。
ありがとうございます!
function y = myabs(x)
y = x .* (x >= 0) - x .* (x < 0);
endfunction
x = linspace(-1,1);
plot(x,myabs(x));
>>417 すげえ! 4ヶ月越しの遅レスだったのに、書き込まれて5分で確認して返答かよ!!やるな、おぬし。
録音を継続しつつ、いままでに録音した分を参照するには
どうすればいいのでしょうか。
標準のコマンドでいけるのでしょうか。
matlab, scilab, freematならいける?
R言語, numpy, scipyにする
CやJavaで録音する関数を作成しcallする
R/Scilab (D)COM Server経由
録音ソフトからファイルで受け取る
等々面倒な手順が必要?
どういうアプローチをすればいいのか分からず困っています。
420 :
名無しさん@お腹いっぱい。:2014/01/02(木) 20:15:33.39
octave の windows 版って、 minGW と VC版がありますが、 どう違うの?
Windows8では、
http://wiki.octave.org/Octave_for_Microsoft_Windows によると、
Note for windows 8 users: As a workaround for a gnulib windows 8 compatibility bug, add command line switches
' -i --line-editing' to the octave.exe shortcut
(i.e. <octave-dir>\bin\octave.exe -i --line-editing)
だそうなので、ショートカットのアイコンの右クのプロパティに追加ですね。
>>420 MinGW版
gccでビルドされ,コンパイラなどの開発ツールも含まれる。
(OctファイルやMexファイルの作成が容易)
インストーラーがないので,手順を読んでマニュアルでインストールが必要。
VC版
MicrosoftのVC++等でビルドされている。
Microsoftランタイムライブラリが必要
インストーラーがあるのでインストールは容易。
開発環境は用意されていないので,oct,mexファイルを作成するためには
VC++2010が必要(フリーのExpressEditionでよい)
>>419 Octave または、Scilab,R,Matlab,Pythonなど,アプリ実装方法なんでも良いから、
音声をリアルタイムで入力しつつ、ある程度バッファにたまったら次々と処理したいということですね。
Octave、Scilabでは、簡単にはできないと思います。
元気があるなら、Processingとか、他のアプローチも探ってみるとよろし。
もし、音声エフェクトアプリとかに興味あるのなら、VSTエフェクトの自作とかも探ってみる。
VSTっぽいみたいなのを、簡単にやってみたいなら ↓ とか面白いかも。
http://jvaptools.sourceforge.net/scripteffect/screenshot.htm Javaの文法で音声エフェクトを簡単にリアルタイムコーディングできて面白い。
>>423 サンクスです。
やっぱインストーラある方が便利ですよね
>>426 試してみました。
バイナリ:octave-3.8.0-2-portable.zip
動作環境:WinXP on VMware Player
MSYS環境でコンパイルしてあるらしく、相変わらず起動が異常に遅い(CPU 100%)。
> a = 1; b = 1; tic; for i=1:1000; for j=1:1000; a = a + b; end; end; toc
Elapsed time is 1.5 seconds.
> jit_enable(1)
> a = 1; b = 1; tic; for i=1:1000; for j=1:1000; a = a + b; end; end; toc
無限ループ…
ヽ(`Д´#)ノ
>>425 最新のoctave-3.8.0-5なら,windows 7 では起動は早いです。
jit_enable(1)の問題はそのままです。
>>428 Thanks!
Windows7なら、MinGW版でも起動は早い、らしいですね…
3.2から3.4の時に急に遅くなったので、いつかは原因を究明してみたいものですが。
>>426 windows 8ではGUIは動かないようです。
>>427 放っておいてあった古いマシンにUbuntu 12.04 LTS を入れてoctave 3.8.0 をビルドしてみました。
octave:1> a = 1; b = 1; tic; for i=1:1000; for j=1:1000; a = a + b; end; end; toc
Elapsed time is 4.21553 seconds.
octave:2> jit_enable(1)
octave:3> a = 1; b = 1; tic; for i=1:1000; for j=1:1000; a = a + b; end; end; toc
Elapsed time is 0.891052 seconds.
Ubuntu 上ではjitは動作してますね。MinGWの特有の問題かもしれません。
>>438 いえいえ,ちょうど聞きたいところだったので。
# Max Bristerさん、燃え尽きちゃったりしないですよね…?
すごい勢いですよね。燃え尽きはこわいですね。
win7-x64 x86_64-w64-mingw32 gcc-4.9でビルドしてみた。
最初staticライブラリを使ってguiを有効にしてビルドしたんだけど、
1.QtとGraphicsMagickでtiffの関数がかぶる
2.最終リンクでvtable for file_editor_interfaceのエラーが出る
3.Qt有効時には、src/makefileに -loleaut32 -lwinmm -lcomdlg32 -limm32 -lwinspoolの追加が必要
4.ssl有効にしてた場合ssl関連のライブラリ追加が必要
2に関しては試してないけどGUNの掲示板でpatchが出てた。
3、4はmakefile修正で解決
1の問題解決が面倒というかQtかGraphicsMagickどっちかのtiffを無効にしてライブラリ再ビルドか、
もしくはsharedライブラリじゃないと無理?
で、disable-guiでmake。ライブラリはstatic。
今度はrpl_gethostnameが不明とか出たので、…gethostnameをコメントアウトしちゃった。
一応ビルドは通って
>>427の計算も速いんだけどうーん。
443 :
442:2014/03/30(日) 04:01:08.86
GUIもビルド出来た
1.tiffを無効にしたライブラリを使用
2.公式のパッチを当てる
3.LIBSに追加してconfigure
4.3同様
やはり、gethostname.cを処理して無いみたいなので定義をsokets.cに移植
これでビルドは完了するんだけど初回起動時設定ファイルを作成出来ずに
クラッシュしてた。なんとかして設定ファイルを作成し所定の場所に配置
どうにかしてGUIの起動を拝めたんだけど、どうもpngも処理されていない。
まあなんとか起動までは漕ぎ着けたので満足して終了
それと、win7-64bitではatlasのビルド時、atlasの測定ツールみたいなの
が異常終了する。色々ググってたらそういう人多いみたい。
しかし、めげずにmakeを繰り返していると通る。というか通す。
ちな10時間かかった…
atlasはpythonの拡張であるsicpyをビルドする時必須(少なくても自分の環
境では)のようで、openblasではtest中落ちる。sicpyに依存するmatplotlib
もatlasでビルドしたsicpyじゃないとビルド中落ちる。
matplotlibを実行してpythonが無反応になる場合は
font_manager.py中のif not local:の前に
local = None
を書き加える。
MinGWというかwindowsでやるもんじゃないね。VMware上のUbuntuで同じ事
やったら1時間かからなかったつД`)
>>443 おつかれさまでした。
Windowsだと、何かコンパイルしようと思うと異常にハードルが上がるのは、同感です…
でも自分の場合は、お仕事がWindowsメインだから仕方ない
ちなみに教えてほしいのですが、他のライブラリとかはすんなりビルドできました?
Benjaminさんのビルドスクリプトだと、あっちこっちパッチ当てて、涙なしには見れないのですが。。。
お仕事かあー、そりゃ大変なるべく力になるよ!
winでビルドはあまりにも情報少なくて何度も折れそうになったしね
パッチはwinだとOpen Source Waresってトコが頼りになる。
あと
ttps://build.opensuse.org/project/show/windows:mingw:win64 と
ttp://lfsbookja.sourceforge.jp/BLFS/svn.ja/index.html ここらで情報収集、だけどまず素でビルドしてみてどうしてもダメなら当てる
あとスクリプトビルドは極力避け地道にコツコツやるといいかも
atlasは前述した通り諦めずもうひたすらmakemakemakemake
scipyのビルド手順もどこぞに書いたのでもし興味あれば参考に
基本Open Source Waresさんの情報通りでいいんだけど、umfpackはCHOLMOD関連でエ
ラーになるのでmakeのコマンドは make CC="gcc -DCHOLMOD=0" library みたいな感
じでやるといいと思う。
guiならGraphicsMagick、qt4が必要、ちなみにimagemagickだとウチではエラー出た。
python@spyderまで視野に入れるならqt4はwebkitも有効にしなくちゃいけない。
qtはmsys上からではなくてcmdからビルド。msysのツールも使いたいので、msys上から
start cmdでコマンドプロンプトを呼び出しビルドする。
staticビルドにするなら、Open Source Waresさんのパッチは必須。winの関数の問題
であれこれライブラリ要求されるけどそれらは随時.proに追加。
それとは別にfreetypeと64bit固有の問題のパッチ当てなきゃダメだったけど、これ
は問題に遭遇した時ググればすぐ出てくる。
ちなみにOpen Source Waresさんのpython使うなら自分でビルドした方がいいと思う
何故なら、恐らくwinだと、readlineとcursesを組み合わせると挙動がおかしくなる
から。cursesはPDCでも通る(要リネーム)。組み込むならどっちかの2択だと思う。
GCCはトランクから引っ張ってビルドした4.9だけど、いやー去年に比べて随分安定し
てきたなー、以前はしょっちゅうセグメントエラー出て大変だったんだけど
こんなとこです
>>445 その苦労をみてるとUbuntu何かを古いマシンに入れてmxe-octaveで
クロスビルドしてwindowsバイナリを作成する方が簡単ですね。
時間はかかるけど,一か所パッチをあてるだけですんなりビルドが通る。
作成されるgnuplotがバギーなので,本家のもので置き換える必要があります。
やばい、ちょっと目を離してる間に、完全に時代に取り残されてるのを感じる…
>>445 丁寧にありがとう!
うん、めっちゃ泥臭い作業が必要だというのは判った。
遠くない未来にWin 64bitでコンパイルしなければならないのですが、それなりの覚悟をしときます。
Pythonは覚えてみたいと思いつつ放置してたけど、spyder+scipy+matplotlibでここまでできるのか!
疎行列の演算とかはそれほど充実してないみたいだけど、スカラーの数値計算ならMATLABレベルのことはできそう。
あとは、JITあり/なしのOctaveと比べて、どの程度の速度がでるかですが、今度試してみます。
>>446 LinuxでWindowsバイナリをクロスコンパイルできることは聞いたことだけありますけど、そんなにすんなり通るんでしょうか?
コンパイル時の問題として
@configure/makeを通すためのコマンドが足りないor動作がおかしい
Aコンパイラorソースコードのトラブルで、コンパイル時にエラーになる
の二種類があるとして、上ではAも大きいみたいですけど、Aの条件ってMinGWとあんまり変わらないんじゃないでしょうか…多分。
Windows上でコンパイルするより楽ならこちらの方法も検討してみたいので、ご意見いただけたらありがたいです。
>>447 441に書きましたが,一か所既出のパッチを当てるだけで通りましたよ。
ただ,使っているマシンが32ビットしか対応できないので64ビット
ビルドはやってないのですが。
ちなみに,内部ではBenjaminさんレベルに結構ソースにパッチをかけてやっている。
mxe-octaveは,原理的にはMsys+MinGW(+少しのツール)で動くはずなのですが
全然うまくいきませんでした。なぜ,うまくいかないかは時間がないので追及
してません。
453 :
名無しさん@お腹いっぱい。:2014/06/23(月) 14:31:53.85
しかし、本屋の統計コーナーはRばっかりだなあ
MATLAB系はScilabも含めてほとんど使われてない
Rのどこがいいんだかよくわからない
まあ統計の教科書のほとんどがS言語ってのが大きいのかな
>>453 > まあ統計の教科書のほとんどがS言語ってのが大きいのかな
その流れでRが流行っているね。
とりあえず現状は、R使っておけば安心。
だけど、今後は、Python択一になりそうな勢い。 OctaveでやれることもPythonでみたいな。