データ解析ツールoctaveを語ろう Part 2
知る人ぞ知る強力なデータ解析ツール octave ...
unixを科学研究で使っている香具師には非常に心強い味方のはずだ。
matlab互換を主張しながら、微妙にバージョンアップを続ける
octaveについて語ろう。
そのPart 2です
前スレ
データ解析ツールoctaveを語ろう
http://pc12.2ch.net/test/read.cgi/unix/1086016412/ 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への乗り換えをお勧めします >>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をお使いください。 >>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では,解決してますので,そちらをお使いください。 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 ウインドウズで申し訳ないのですが、
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 で動きます。 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 関数を呼び出すようにしているもの
一応、動作確認しています。バグ残っているかも知れません.
(すぐには対応できないと思います).ご参考になるかと思いお伝えしました. 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 octave 3.2.4のRelease Candidateがでてます。
もうすぐ,octave 3.2.4がでると思います。
おそらく,3.2シリーズは3.2.4で終わりで,次はoctave 3.4がでると思います。
ビルドシステムの大幅な変更があります (libtoolを使ったものになります。)。
一般の方にはあまり関係がないと思いますが,自分でビルドされる方は
maintainersのMLをご覧になって情報を収集されることをお勧めします。
思いますが, octave 3.2.4のソースがでました。(unofficialだそうです。)
ttp://old.nabble.com/3.2.4-release-to27272214.html
をごらんください。 Octave公式Webにはまだのっていないようですが,octave-3.2.4 のソースがアップロードされています。
ttp://old.nabble.com/Octave-Version-3.2.4-Released-to27353121.html#a27353121
おそらく,3.2シリーズでは最後のリリースとなると思います。
3.2.3で問題となったバグがかなりフィックスされているようです。
各種バイナリもそのうち整備されると思います。 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
をご覧ください。 計算のたびに以下のように
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 >>33
ttp://old.nabble.com/Re:-Really-Long-Command-Prompt-p27222063.html Windows 版Octave-3.2.4がでました
ttp://sourceforge.net/projects/octave/files/
からどうぞ。 >>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
対処はできそうです。 たびたびすみません。<m(__)m>
>>36 のについては
ttp://old.nabble.com/flicking-problem-again-Octave-3.2.4-mingw32-td28038688.html
なんか何もしなくても,うまくいきだしました。^^;
mingwの3.2.4を入れてみたけど
wxtターミナルで、plotしたあとに
xlabel('hoge');
drawnow;
とやっても反映されないのね
plotコマンドを再実行すると反映されるので
xlabel, ylabelで定義してから
plotする流儀に変わったのかな 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近くの性能が出るかもしれません。 >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 )
とかもっともシンプルに打っても動きがヘン >>38,>>40
たぶん,oct2matというoctave-forgeのパッケージがぶつかっているせいだと
思います。
その他,Octave 本家のMLで話題になったことの対処法を拙ページに書いて
おりますのでよろしければ参考にしてください。
ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#100403 >>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のサポートがかなり増えていますので,相当なご尽力を
なさっていますのであまり多くを望むのは難しいでしょう。
>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");
のようにすれば消すことができます。
>>50
了解です
それとは関係ありませんが
前スレは、ここで安定して見れるっぽいです
ttp://ranran2.net/app/2ch/unix/1086016412 >>51
おお! ありがとうございます<m(__)m> 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を数桁大きくすると正しく計算できるようです。
お手数ですが、この問題の回避策があれば教えていただけないでしょうか? すみません、書き忘れました。
Win版 3.2.4です。 >>51
現在 前スレ見れるところ
ttp://logsoku.com/thread/pc8.2ch.net/unix/1086016412/ OctaveやFreeMATではMATLABのstemにあたるマッチ棒のようなプロットはどうやるんですか? 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");
もっと詳しくはマニュアルを 前スレでも,>>63 にもあるように,ちょくちょく話題になるGotoBLAS2 に
ついてライセンスが変わったとoctave ML 情報が入っています。
http://octave.1599824.n4.nabble.com/GotoBLAS2-license-td3055645.html
参考までに >>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
>後藤和茂さんがヘッドハントされてからバージョンアップが止まってますが、
>これも改善するかもしれません。
そうですね。
天才ハッカー(いい意味でのハッカーです。)後藤さんのあとを
続くような方が現れてプロジェクトとして
立ち上がってくれればいいのですが。 >>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の精義」がでました。 ttp://www.amazon.co.jp/dp/4877832319/ 開発版も様々なプラットフォームでのビルドがかなり安定してきています。
私は,MinGWのビルドしていますが状況はかなり改善しています。
3.4リリースが確実に近づいています。
新しい fltk Backend は,すばらしいものです。
できるだけ早く皆様が見る日がくればいいなと思います。
Debianなどでは,自力でビルドできる方がいらっしゃると思います。
ビルドできる環境におられるかたは
是非自力で開発版をビルドされて,
その実力をみていただきたいと思います。 Octave 3.4のリリースの準備としてOctave 3.3.90がリリース(ソースのみ)
されました。
http://alpha.gnu.org/gnu/octave/
多くの方にビルドいただき,3.4のリリースにご協力いただきたいと思います。
Octave 3.3.90のMinGWでのビルドを行ってバイナリパッケージを作成してみました。 http://www.tatsuromatsuoka.com/octave/Eng/Win/ Octave 3.3.91のMinGWでのビルドを行ってバイナリパッケージを作成してみました。
http://www.tatsuromatsuoka.com/octave/Eng/Win/
いくつかのバグがフィックスされています。 >>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使えって話はごもっともなんだけど、アニメーション作成用に
もうちょっと高速な出力手段を模索中。
誰か情報持ってない? すみません,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 からはどのように
すれば良いんでしょうか? >>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を直接いじりたい方はそちらを使うという思想のようです。 >>111 gnuplotとパッケージのReferenceはこちらから,
http://octave.sourceforge.net/gnuplot/overview.html
説明がわかりにくいのでつかったことはありません。
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のダウングレードすると動きます。 114です.
cygwinのバージョンを1.7.8-1に直したところグラフ表示できました.ありがとうございました!! 最近octaveを始めたんだけど
octaveのサポート状況の良いディストリってどれ?
ubuntu のoctave はバージョン古い。
FreeBSDのportsのoctaveなんかは最新のおっかけは凄いけど
portsからのインストールは遅い。 >>117
jweさんがDebianだからのぞいてみたけど,まだ3.2.4のままですね。
octaveの本家のMLをみるとLinuxの人は割りと自分でビルドしているようです。 >>117 >>118 Unix はよくわかりませんがぐぐったら以下がでてきました。
octave Download - Linux Packages Search (RPM, DEB, XZ, TXZ, TGZ)
http://pkgs.org/package/octave
3.4.0のようです。 FreeBSDでは、現在 3.4.1 です。
なんか凄い気合入って追っかけているような感じ。 >>120 FreeBSDのOctaveのメンテナーの方を知っています。
(日本人です。)
その方は多倍長BLASの作者でもあります。
最近連絡を取りました。
ところでoctave 3.4.1には,mkoctfileにバグが見つかり,
3.4.2の準備段階です。(現在RC2がでている)。
FreeBSDは,3.4.2がでたらすぐ対応するようです。
しばらくはFreeBSDだな。
Octave のためだけに。 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も貧弱だし >>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). >>124 >>126
こんなページもあります。
http://octave-swig.sourceforge.net/octave-db.html
これを見る限りOctave-forgeのdatabase パッケージにてMySQLには
対応できるのではと思います。 >>124
CUDAについては,OctaveはGPLですので,
jwe氏が言うことは仕方のないことなのでしょう。
OctaveがGPLから他のライセンスに変えるか,GPLが変わるか
CUDAがかわるかどちらかでないといけないのでしょうが,
まあ実現はしないのだと思います。
ところで,MySQLは,
http://www-jp.mysql.com/about/legal/licensing/faq.html
にあるように問題がないように思います。
だからOctave-forgeのdatabaseパッケージでMySQLはサポートされている
のだと思っています。
>>128
ただし,再配布せず自分でやる分には問題がないと思います。
以前GotoBLASが,GPL非互換だったとき自分でソースからビルドして,
octaveのビルド時に組み込んで使用することはできました。
かなり,億劫なことになりますが,
http://scinesur.wordpress.com/2009/11/12/cuda-on-octave-3-x-in-linux-64-bits/
なこのページもあることですし,自力でやることはできるのかなと思います。 >>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版ならそのエラーが簡単には出ないって話ですけどね
ただし正式なバイナリーがリリースされてない >>159 >>160
ttp://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html
にしたがってビルドするしかないようですね。
Debian 上での例が載ってます。 >>159 >>160
Scilab なら64bit版があるようです。
ttp://www.scilab.org/products/scilab/download
でも,文法かなり違うからなあ。 >>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までしかアクセスできないのでしょう >>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は,そこまで考えてビルドされていなのではと推測します。
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
だそうです。
Octaveの連想配列はどう書けば良いのですか?
データに番号がついていて連続していない状態で、他のデータから連続していないデータを参照しているので
内部で番号をつけ直しています。つけ直しの時に総ナメのような感じになってしまうので連想配列が使えたら
と思いまして質問しました。 >>168
構造体で、それっぽいことはできたはず。
その用途でしたら、スパース行列でもよさげ。
どっちが速いかは未検討。 >>169
a.idみたいな感じで丁度構造体を使っているので構造体を使った連想っぽい処理をもう少し具体的に知りたいです
どんな感じで使えば良いのですか? >>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じゃなくて) はとても起動が速いのに。
>>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++ が
(少なくとも私の環境では)起動するようになった。
>>270
できました!
すごい。9の時点で動いたので、これからはnotepadにコードを作って
そのたびに5から8の動作をして確かめたいと思います。
本当にありがとうございました:D New dependency libraries and toolkits for MinGW build are uploaded.
ttp://octave.1599824.n4.nabble.com/New-dependency-libraries-and-toolkits-for-MinGW-build-are-uploaded-td4267845.html matlab風に使いたいのでoctave workshopのinstaller付のwin版を
ダウンロードしたのですが、インストールはできたのに起動しません。
原因をご存知の方がいればお教えください。
>>278
Octave Workshopのoctaveあまりにも古く,使用するのはあきらめてください。
GUI Octaveの方が現実的だと思います。
ttps://sites.google.com/site/guioctave/
GUI OctaveではOctave-3.2.4ですが,頑張ればOctave-3.4.3も使用できます。
ttp://guioctave79.freeforums.org/guioctave-stuck-with-gnu-octave-3-4-2-t108.html
(OpenGLのgraphicsが使用できませんが。) 278です。
GUI Octaveをインストールしたのですが
Error message: Redirect console error: 3
と表示されてしまいます。
たびたび申し訳ありませんが、原因をご存知の片がいればお教えください。 >>281 私は,GUI に興味がないので使用したことがないので,お役に立てません。
ここで回答がつかなければ,GUI Octaveは生きているプロジェクトのようです
ので敷居は高いですが,GUI Octaveの英語のフォーラムで尋ねられるとよいか
と思います。
>>280
Octave-3.2.4をインストールしていない
に1票
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
を入れてください。
一応正常そうに動きました。 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 上のコードは自分で作成しました。
もし、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の外に出すと正しく動くようです。
以上
Octave team で開発中のOctave-GUIの現在のスナップショット
http://www.geocities.co.jp/tmoctwin/files/OctaveGUI0.8.5.html
Windows上のスナップショットですが,Ubuntuでもほぼ同じイメージでした。 >>213
bode線図でこけるのは,control packageのせいではではなく,
fltk graphic_toolkit が対数軸でのマウスオペレーションがこける
ためのようです。
https://savannah.gnu.org/bugs/?35292
>>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、一瞬期待したのに…! >>303
Release 3.6.0 still not "official"
http://octave.1599824.n4.nabble.com/Release-3-6-0-still-not-quot-official-quot-td4345497.html
で3.6.1がでるようです。qhullのルーチンがごく最近改定されたのでちょうど
いいかもです。Windows版のビルドもATLASのバージョンを変えてテストが
終わりつつあるのでこれもいいかもです。
parforですか。たしかにあるといいと思いますが今の開発陣のマンパワー
だとどうかなという気がします。そこらへんに強い人が開発陣に参戦される
ことを期待したいのですが。 octaveってデフォルトで上三角の連立方程式 U x = y を高速に解けないの?
ちょっと使ってみようと思ってググったら2003年の記事出てきたんだけど、
http://www.math.meiji.ac.jp/~mk/labo/text/a-remark-lu.pdf
これ未だにfixされてない? >>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の復活に意欲
を見せておられます。さて,どうなるでしょうか。 いきなりの質問ですみません。
2つほど質問があります。
1.2段のワードの形式で論文を書いているのですが、
どうしても、ワードの大きさに縮小してしまうと、メモリどころか
線すらはっきり映りません。これをどう解決すればよいのでしょうか?
2.グラフを描くときに、色ではなく破線や点線はどのようなコードを
打てばよいのでしょうか?
なにとぞよろしくお願いします。特に1番目の質問が深刻です。
>>326
?? プロットした図が縮小すると見えなくなるということでしょうか。
ワードだからWindowsですよね。octave-3.2.4でしょうか。
gnuplotの画面をコピーしてワードに貼り付けているということでしょうか。
私はoctave の図をそのまま使わないので良くわかりませんが,
print コマンドでemfか何かでセーブした図を使ったほうがいいかもしれません。 octave-3.6.0で
1.1
ans = 1.10000000000000
single(1.1)
ans = 1.10000002384186
となります。これってどうなんですか?
どなたか教えて下さい。 >>329
補足するとsingle(単精度)の有効桁は10進に治すと約6-7桁なので
それ以上の桁数の数値についての保証はなく
>>330
の方がおっしゃるように,単精度の範囲では問題ないことになります。 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では
対応していないと思うので。 最近はJuliaというのが出てるらしいです
http://julialang.org/ >> 335
へー…。
そういえば、OctaveにもJIT Compilerを実装するプロジェクトが、
今年のGSoCに登録されてました。
これは、期待してもいいんでしょうか…
http://jit-octave.blogspot.jp/ 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とか使ってみましたが、効果なし。
私にはここから先のアプローチが思いつかないのですが、どなたか
ヒントお願いします… octave-3.6.2 mingw版ですが、peaksなどなんでも良いのですがグラフを書いてもちゃんと描いてくれません。refreshすると描いてくれます。以前にもこんなことありましたが対処法はありますか。 345の件
graphics_toolkit("gnuplot")
putenv("GNUTERM","wxt")
でとりあえず希望どおりに動きました。 345の続き
putenv("GNUTERM","wxt")の状態でpeaksなどとしてグラフを描くと、グラフは
ちゃんと描いてくれますがwindowsのターミナルが大きくなってしまいます。
どなたか教えてくれませんか。
最近、書き込みが少なくて寂しいです。 答えてあげたいけど、Linux版を使ってるしグラフも余り書かないから答えてあげられない・・・ > 男性は聯合ニュースの取材に対し、
暴行を受けている間も警察は積極的に止めようとせず、
男らは韓国人を差別する暴言を吐いたという。
警察はチョンの見方ですから有り得ません。
日本人にどうしても有事を惹起せしめたい欧米軍産複合体の意図じゃん
Congratulations, Max Brister!
ttp://jit-octave.blogspot.jp/
Octave用のJIT Compilerに、とりあえず一通りの機能が揃ったらしい!
速度も期待を裏切らず、例えば下のコードが、34sec->0.1secになるとか。
result = 0;
for ii = 0:1e-7:1
result += inc * (1/3 * ii * ii);
end
Octave本家にマージもされたらしく、次回のリリースにexperimentalとして含まれるという話。
ソースはこちら。
ttp://inversethought.com/hg/octave-max
誰か試してみません? Windows(MSYS)版を使ってますが、ファイル選択ダイアログを表示してパスを
取得できる関数、あるいはそういう機能が使えるようになるパッケージって
ないもんでしょうか? >>351
使ったことないのでよくはわからないが,uigetfile なるものがあるらしい。
ttp://www.gnu.org/software/octave/doc/interpreter/I_002fO-Dialogs.html#I_002fO-Dialogs おぉ、望みどおりのことができました。
GTKなのか見た目はショボいですが、機能的には十分です。 画像データを読み込んで行列にしたりそれを表示したりできますが、
この行列データに対して直線や円を描画する関数とかないですか? >>354
それは表示した状態に書き込むのか,
それとも画像の実体(行列)に書き込むのか? 行列に対してです。
一応Bresenhamのアルゴリズムとか調べてみましたけど、既に実装
されているものがあればそっちを使いたいなぁと。 そういえばScilab-5.4.0がβ3まで来ましたが
xcosが不安定で使い物にならないですね
5.3.3は安定なんですけど、AFFICH_mがバグって使えない(実行中に数値を表示しない) Scilabが5.4.0のβ3が不安定なのを認めてひっこめましたね
原因が特定できたらしいので
リリース時には急に落ちる事はなくなりそうです MatlabのGUIを自宅でやりたいんだけどOctaveでできますか? >>360
ありがとうございます
では、他のフリーソフトで行うことはできませんか?
どうしても自宅でやりたいんですが・・・ >>361
SIMULINKをやりたいってことですかい? imcropがoctaveにはないけどトリミングはどうすればいいの? 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に変えました。これで、動かし方を理解できました。
どうもありがとうございます。 [f,p]=leasqr(x,y,pin,"F")と、「x*x→x.*x」ですね。
ありがとうございました。
試してみます(月曜にならないとためせないんですが)。 Octave-3.6.2-vs2010-setup
って、ライブラリもインストールできるのはいいんですが、
pkg rebuild -auto
ってやってもロード出来ない(再起動しても、autoLoadされていない)
のはしょうがないんですかね?
(pkg load all って打てば大丈夫だから、スタートアップに入れておけばいいんだけどさ) >>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)について、各整数画像座標位置に対して与えられる
とある値(例えば標高値)を関数でフィッティングしたいんです。 参考になりますかどうか。
あと、複素数で表すことも出来ます。
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アプリから使える方法はあるでしょうか? 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をかけると少しましになります。 Octave-3.7.2+/Windows [VS2010] available
ttp://octave.1599824.n4.nabble.com/Octave-3-7-2-Windows-VS2010-available-td4650194.html >>388
本当だ、すげ!
使いものにならないと思ってたのが見違えた >>389
開発版だとGUIがデフォのようですね。
コマンドライン版Octave-cliになってます。
結構安定に動くのでこちらを使おうかな。 >>391
エディタで関数を書いてfoo.mのような名前で保存すればいい。 OctaveのGUI環境にはWOctaveというのもあります
http://sourceforge.net/projects/woctave/?source=directory
使い方はインストーラーでインストールした後に
メニューバーのEdit>Preferenceで、OctavePathを入力するだけ
OctavePathはOctaveをインストールしたbinディレクトリです >>394 インストールしてみましたが,なかなかよいですね。
フォントをTerminalにすると日本語の表示も問題ないですね。 >>394 DomainMath IDEというのもありますね。
https://sites.google.com/site/domainmathide/home
Java(JRE>1.7)が必要ですがWindows以外でも動くようです。 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がバージョンアップしたようです。 Octave 3.6.4 for Microsoft Visual Studio released
ttp://sourceforge.net/projects/octave/files/Octave%20Windows%20binaries/Octave%203.6.4%20for%20Windows%20Microsoft%20Visual%20Studio/ >>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'); >>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経由
録音ソフトからファイルで受け取る
等々面倒な手順が必要?
どういうアプローチをすればいいのか分からず困っています。 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は動かないようです。 >>396 >>430
GUI スキンとしてDomainMath IDE 0.16はWindows 8でも動くようです。
しばらくはこれを使おう。
https://sites.google.com/site/domainmathide/home http://mxeoctave.osuv.de/
に新しくおかれた
w8-octave-gui.bat
を使えば windows 8 でもExperimental 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の特有の問題かもしれません。 >>436
おぉ、そこまでしていただけるとは…。
そうですね、実用段階までまったり待っていることにします。
# Max Bristerさん、燃え尽きちゃったりしないですよね…?
# ttp://hg.savannah.gnu.org/hgweb/octave/search/?rev=Max%20Brister&revcount=200 >>438
いえいえ,ちょうど聞きたいところだったので。
# Max Bristerさん、燃え尽きちゃったりしないですよね…?
すごい勢いですよね。燃え尽きはこわいですね。 Ubuntu 12.04 LTS でmxe-octaveを使って,octave-3.8.1 をビルドしました。
参考 http://wiki.octave.org/Windows_Installer
native-gccでビルドがこけたのでoctave MLで質問してパッチを得ました。
パッチが載ってるスレッドのURLは,ここ。
http://octave.1599824.n4.nabble.com/mxe-octave-cross-build-errors-when-building-native-gcc-tt4662612.html
MinGW上でのビルドはうまくいきません。
クロスビルドするしかないのかなあ。 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の計算も速いんだけどうーん。 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(+少しのツール)で動くはずなのですが
全然うまくいきませんでした。なぜ,うまくいかないかは時間がないので追及
してません。 >>441 >>448
http://wiki.octave.org/Windows_Installer
には,Ubuntuの例がなかったのでDebainので
aptitude installをsudo apt-get installに変える必要があります。
ちなみに,mxeというのはいろいろなOSのパッケージをクロスビルドで
作成するためのシステムのようです。
http://mxe.cc/
mxe-octaveはmxeをもとに,jwe氏が作りはじめて,そのほかのOctave-MLに
登場するメンバーなどがかかわってメイテイテナンスされています。
いいところはOctaveの開発メンバーが直接かかわっている点です。 返信感謝です。
mxe-octave、さっそく確認してみました。
てっきりOctave本体だけの話かと思ってましたが、関連ライブラリも含めてコンパイルしてくれるんですね。
また、仰るとおり、パッチを山ほど当ててるみたいです。
http://hg.octave.org/mxe-octave/file/44eb8941c35f/src
なるほど、使いこなせれば、かなり便利そうですね。
ありがとうございます! 廃棄予定のXPマシンをいただいて、Ubuntu(12.04 LTS 64bit)をいれました。
AthlonX2 (64bit)のマシンだったのでメモリを4Gに増設してして使っています。
何とかjit付きでoctave-3.8.1のビルドに成功しました。
ttp://octave.1599824.n4.nabble.com/Is-configure-check-TargetData-h-in-llvm-obsolate-Octave-3-8-1-td4663673.html
その結果、
octave:1> a = 1; b = 1; tic; for i=1:1000; for j=1:1000; a = a + b; end; end; toc
Elapsed time is 2.99728 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.0284832 seconds.
>>434
よりだいぶ性能がいい。マシンのせいなのか。Octaveが3.8.0から3.8.1になったのが
いいのか分かりませんがなかなかいい感じです。 http://mxeoctave.osuv.de/
に置かれたoctave-3.8.1(MinGW32)がrelease-2になってます。 しかし、本屋の統計コーナーはRばっかりだなあ
MATLAB系はScilabも含めてほとんど使われてない
Rのどこがいいんだかよくわからない
まあ統計の教科書のほとんどがS言語ってのが大きいのかな >>453
> まあ統計の教科書のほとんどがS言語ってのが大きいのかな
その流れでRが流行っているね。
とりあえず現状は、R使っておけば安心。
だけど、今後は、Python択一になりそうな勢い。 OctaveでやれることもPythonでみたいな。 oct ファイルおよび Octave の C++の内部インターフェースについて調べています。
NDArray と Matrix という、一見よく似たクラスがあるのですが、
これらはどう使い分けるのでしょうか? パソコンを新しくしたのでWindows8.1になったのも含めて
OctaveやらScilanbやらインストールしてたのだけど
Core i5-5200U 2.2GHzのマシンで
Octave Windows VS2010 ver 3.6.4
で
n=4096;A=rand(n,n);B=rand(n,n);tic;C=A*B;t=toc,GFLOPS=2*n^3/t*1e-9
をやると
t = 9.2240
GFLOPS = 14.900
だったのに、Scilab-5.5.2 64bitで
stacksize('max')
としてから
n=4096;A=rand(n,n);B=rand(n,n);tic();C=A*B;t=toc,GFLOPS=2*n^3/t*1e-9
をやると、
t = 4.021
GFLOPS = 34.180292
になった。
実はScilabには Intel MKLが入っていて、Octaveに入っているOpenBLASではSSE3までしか対応していないのに対して
MKLではAVX2に対応してるので、1クロックの倍精度実数の演算回数がSSE3の2回から4回に増えるためだと思う。
理論演算速度は2.2GHzの場合、SSE2で17.6GFLOPS、AVX2で35.2GFLOPSで、理論値通りの性能がでているようだ。 Octave 4.0出たようですが、plotでグラフを描くとフリーズします
Windows7 64bit
WIndows8.1 32bit
の両方で確認しております
それと、MATLABがMATLAB Homeとして、個人用の場合
1万5000円ぐらいで買えるようになりました
Simulinkを含めたtoolbooxも各4500円で買えます
Octaveもいいですが、ちょっとお金がある人はMATLAB Home買った方が幸せかも
上のレスにもある通りMATLABならMKLが入っているので
SSE2, AVX, AVX2というSIMD命令とマルチコア演算による
高速な行列演算が可能になります Matlab Home Edition は
あくまで個人用途みたいだから
ライセンス気を付けないとね
でも個人用途でMatlab使う人なんて
そんなにいるの? >>458
自宅で作業する場合とかにあると便利でしょうね
Matlab homeの制限はここに載ってます(以下機械翻訳)
http://jp.mathworks.com/products/matlab-home/includes/faq.html
よくある質問
MATLAB Homeライセンスを購入して使用することができますQ.?
A. MATLAB Homeライセンスは、あなたの個人的な使用のためです。
これは、政府、学術、研究、商業、またはその他の組織使用することはできません。
Q. MATLABホームとMATLABのプロ版の違いは何ですか?
A. MATLABホームは、MATLABのプロフェッショナル版と同じパワーと機能を提供します。
違いは、MATLABホームは、個人使用のためにのみ利用可能であり、
政府、学術、研究、商業またはその他の組織の目的に使用することができないことです。
個人で買って家庭のPCにインストールして、家庭で作業をするのはOK
そのアウトプットを組織のアウトプットとして使う場合は、
組織でライセンス取ってねという話だと思われます
MathWorksがやりたいのは、Matlabの裾野を広げたいということで
個人でOctaveやScilabをやってる連中は、仕事で使う場合は喜んで
Matlabの企業ライセンスを買うと思うので、そこはどうでもよくて
一方の、Python系のScipy+Numpy+Matplotが無料で高性能であることから
急速にひろがっておりますが、そちらに行った連中にMatlab体験させるために
格安のMatlabを用意したのでしょう
しかし個人利用限定とはいえOptimization Toolboxまで4500円ってのは破格
https://jp.mathworks.com/store/link/products/home/new?u=HOME&m=newLicense なるほど
python系への対抗なのか
回答ありがとう! >>463
よく言われるんですが、簡単にはスレ立てできないので、許してください。m(__)m
誰かがソフトウェア板にスレ立てしていただけるといいのですが。 なんでUNIX板なんだろうな
GNU Octaveだから? >>465
このスレの最初にスレ立ての理由がかかれていますが、現状ほとんどUnix関係ない。誰かがソフトウェア板にスレ立てしてくれることを希望。m(__)m でもソフトウェア板だとmatlabと被るから
更に過疎りそうだぬ ソフトウェア板?
matlabスレもないけど
プログラム板にはmatlabスレやmathematicaスレがあるようだけど プログラム板と間違えたw
プログラミング技術はプログラム板で
ソフトウェアの設定や使い方はソフトウェア板か >>467
そうですね。
今のスレがおわる(いつだ?)までこのままでいいのかな。 過疎ってるゆうても、話題があればなんだかんだみんな来るやんw Unix板なのにWindowsの話ですいません。でも、このビルドツールはunix類似環境で動くので言い訳しておきます。
Build instructions using MSYS2/Mingw-w64
https://sourceforge.net/p/gnuplot/support-requests/199/
このインストラクションにそって開発版のgnuplotのビルドが出来ました。
いい時代になったものだ。 >>472 >>473
msys2には本当にいろんなライブラリがある。これを使って、windows nativeな環境でoctaveがビルドできるかもしれない。
#でも、素直にLinux使ってmxe-octaveでビルドする方がはるかに楽だろうが。 octave-4.0.1がリリースされました。octaveのwebページにリリースの詳細とリンクがあります。 4.0.1のリリースにあわせて,拙Wikiのインストール方法を更新しました。
http://www40.atwiki.jp/gnuoctavejp/
ご意見を頂ければ幸いです。
また,Unix関係は,Ubuntuしか事情が分からないので他のディストリビューションの方が
加筆していただけると幸いです。 公式ページにはアナウンスされていませんが,octave-4.0.2がでています。
ftp%3A//ftp.gnu.org/gnu/octave (ソース)
ftp%3A//ftp.gnu.org/gnu/octave/windows (windowsバイナリ)。
詳しいことは,Octave MLのNabbleアーカイブで
http://octave.1599824.n4.nabble.com/octave-4-0-2-td4676595.html >>477 >>478 >>479 >>480
操作ミスすみませんでした。
ftp%3A//ftp.gnu.org/gnu/octave (ソース)
ftp%3A//ftp.gnu.org/gnu/octave/windows (windowsバイナリ)。
詳しいことは,Octave MLのNabbleアーカイブで
http://octave.1599824.n4.nabble.com/octave-4-0-2-td4676595.html コロンがASCIIコード 3Aになってる
文字化けとは言わない
コピペでそうなっても1文字分くらい手打ちでコロンに変えればよかったのに なにい?
ftp%3A//ftp.gnu.org/gnu/octave こうしろと
tp://ftp.gnu.org/gnu/octave >>487
ありがとうございます。次回からそうします。m(__)m
# しかし、全くoctaveと関係ないネタので盛り上がってますなあ。 4.0.2のリリースにあわせて,拙Wikiのインストール方法を更新しました。
http://www40.atwiki.jp/gnuoctavejp/
ご意見を頂ければ幸いです。
また,Unix関係は,Ubuntuしか事情が分からないので他のディストリビューションの方が
加筆していただけると幸いです。
また、Macは全然わからないのでよろしくお願いしたいと思っています。 >>490
octaveは、データ解析だけのツールではないし、数学だけのソフトでもない。総合的な数値計算ツールの1つだ。(最近はsimpyベースのsymbolic packageがよくなってきて、数学ツールとしての側面もでてきたが。)
でも、細かいことをいっても仕方ないので上手く向こうに乗れればいいなあと、思うようになっています。Unix板よりは、いいのかなと。
しばらくは、両方に顔をだします。ここには、長い間お世話になっているので。 現在,MacOSX用のバイナリは https://sourceforge.net/projects/octave/files/ -> Octave MacOSX Binary -> 2016-06-06-binary-octave-4.0.2 でダウンロードできます。 おっ、4.0.2リリースされたのか
upgradeしとこ octave 4.0.3がでたようです。 ftp%3A//ftp.gnu.org/gnu/octave (ソース),ftp%3A//ftp.gnu.org/gnu/octave/windows(windowsバイナリ) 現在,MacOSX用のバイナリは https://sourceforge.net/projects/octave/files/ -> Octave MacOSX Binary -> 2016-07-11-binary-octave-4.0.3 でダウンロードできます。 octave-4.2.0-rc1がでました。
ftp%3A//alpha.gnu.org/gnu/octave
です。 Octave 4.0.3 のWindowsバイナリ(i686-w64-mingw32)で
GUIのコマンドウィンドウでたまにキーボードの入力を取りこぼすんですが
うちの環境がまずい?あるいはバグ? >>500
レス遅くてすいません。症状ですが、何ともいえません。私は経験ありませんがタイピングが単に遅いせいかもしれませんし。
また、メーリングリストを見ているとGUI上の不具合は結構環境依存の面があるようです。
4.2.0-rc1 はwindowsバイナリもありますし、こちらを試してみたらいかがでしょう。正式版リリースまでには少しかかるとは思いますが、そう遠くない時期にリリースされると思います。 >501
レスありがとうございます。
自宅/職場のいずれでも発生するので環境ではなさそうな気が。
4.2.0試してみます。 octave 4.2 も引き続きGUIの翻訳をしています。まだ、未翻訳の部分もあります。
ここおかしいとかあれば、教えて下さい。まだ、rc1なので修正ができるので。 octave-4.2.0-rc2 がでました。
windowsバイナリもあります。
tp://alpha.gnu.org/gnu/octave >504
rc2のウィンドウズバイナリ試してみました。
今のところ問題の症状は発生していないようです。
情報有難うございました。
編集→やり直し(Ctrl+Z) の訳は「元に戻す」のほうが一般的かな?という気がします。 >>505
確かに翻訳おかしいですね。
修正を送って適用されたようなので、4.2.0の本リリースでは修正されると思います。
ありがとうございました。 Mac版Octave-gui4.0.3のコマンドウインドウで長い行列をdisp()した時、-- less -- (f)orward, (b)ack, (q)uit
となりますけど、qとかquitとか入力しても改行されるだけで抜け出せません
これはバグでしょうか? >>507
windowsや linuxでその手の不具合に遭遇していないのでmac版固有の問題かもしれません。
more off
でしのぐしかないのかもしれません。
octave-4.2.0も間もなく出そうなので、それがでたら直るかもしれません。 >>508
more off なんてコマンドあったんですね!!
当面はこれで問題なくいけそうです、有難うございます。 公式で4.2来てんね
64bit版も公式で来てたんで試してみたけど
32bitだと四次元配列作るとデータサイズオーバーするんで
しょうがなく回りくどい方法で半日かかってた処理が
10分で終わるようになったw
ありがてえwありがてえw macに入れたのですが、octave guiの画面のプロンプトに
quitといれてreturnを押すと、虹マークがでて回転して止まりません。
apple menuのforce quitを選んで強制終了させても、octave guiの画面は
消えません。
どうすればquitできるのでしょうか? http://savannah.gnu.org/bugs/?50025
にレポートがあるけど、どうしようもないとおもう
そこでguiなしで起動する。ターミナルで
octave ―no-gui
と打つか
emacsの設定ファイルに自分で調べて設定を書いて
emacsを動かして、
M-x run-octave
で起動させるしかない。emacsで起動させるとコードに色がつくからいいよ >>513
https://savannah.gnu.org/bugs/?49053#comment13
に書かれているように、quitの前にclose allを入れてみるとか。
当方macは使ってないので確認できず。 助けてください
windows8でOctave4系統(4.0.0と4.2.1)を入れたのですが、起動した後すぐに落ちてしまいます
3.6.4だと動いきました。JREは入っています 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
O91V1J5T75 過疎ってるな。私もpythonに移行しつつある。さようなら。ありがとうございました。 ☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆ mac で4.2の octave 使ってるんだけど。
グラフのラベルに tex 文字表示できないバグありますね。
\theta や \tau としても heta やら au と表示されます。どうやら \t が無視されてしまう模様
皆さんはどおですか The source code for Octave 4.2.2 is available for download at:
http://ftp.gnu.org/gnu/octave
-rw-r--r-- 1 3003 3002 25624087 Mar 14 11:11 octave-4.2.2.tar.gz
-rw-r--r-- 1 3003 3002 15483127 Mar 14 11:11 octave-4.2.2.tar.lz
-rw-r--r-- 1 3003 3002 18531988 Mar 14 11:11 octave-4.2.2.tar.xz
md5sum:
89e1824a238417649d4897cfc474fcba octave-4.2.2.tar.gz
e654dbdbab8ff3b753bac66a2445630b octave-4.2.2.tar.lz
5b48de1b81f1bf5b39ac0ad778752f4a octave-4.2.2.tar.xz
Please see http://www.gnu.org/order/ftp.html for mirror sites around
the world. Or you may use http://ftpmirror.gnu.org/octave, which will
redirect automatically to a nearby mirror.
Binaries for Windows systems are available at
http://ftp.gnu.org/gnu/octave/windows >>525
もしかして、ダブルクォートで文字列を囲ってない?ダブルクォートなら\\にしないと。
”\\tau”
か
’\tau’
で表示できたよ。 >>527
ありがとうございます!
まさにそれが問題でした!解決しました! >>530
>>531 >>532 すみません m(__)m。
今回もGUIの翻訳をやっているので,おかしな点があったら,ここでどうぞ。 mac のbrewで最新版のoctave入れる方法わからん。
どないしたらええのん? >>534 ここで聞くよりOctaveのMLで(英語ですが),ML見ているか限り親切に教えてくれます。 GNU Octave 4.4.0 Released http://www.tatsuromatsuoka.com/octave/Eng/Win/
にunofficialのLarge Arrays対応版のWindows バイナリ(4.4.0)をビルドして,置きました。 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
JSEDY 4.4.1からwindowsバイナリには,2GBを超える配列の線形代数計算ができる
バイナリも配布されている。
名前に w64-64 が含まれています。 debian stable で最新版使いたいんやけどどないしたらええのん?
やはりソースからのみ? ubuntu では flatpack というのを使って最新版がinstallできる。 >>545
ごめん,Jane style になれていないから,切れ切れで
ubuntu では Flatpack というのを使って最新版がinstallできる。
http://ubuntuhandbook.org/index.php/2018/07/install-latest-gnu-octave-4-4-ubuntu-18-04/
Debian でも Flatpack があるようだから,試してみて。 何度もすみません。m(__)m。 Flatpack => Flatpak >>551
ありがとうございます😊
試してみます! Juliaを始めてみたが、Matlab系とは全然違って大変
表面上は似ているが、配列や行列の代入方法にくせがあり、どう見ても初見殺し
しかも型を意識する必要がある
Juliaに比べれば、Scilabも天国である
いくらJuliaが速いからと言ってあそこまでハードル高くせいとはみな思ってないだろう
Scilabも使いにくいので、Octaveや金があったらMATLAB使ってるのが正解
Octaveがjulia並に速くならんかのお octave でスペクトグラム描きたいのですが、何かいい関数ありますか?
また、ハイパスフィルタをかけたグラフをかくための関数についても知りたいです。
マトラボのページばかり出てきて困っております。 >>554
Juliaは、はじめからjitを意識して設計されているからなあ。
octaveでも、jitの試みはあるけど全然進んでいない。 >>555
ちゃんと、英語でぐぐった?
octave spectgram
octave high pass filter
でわかる。
ただし、octave-forge の signal packageが必要。 >>555
http://www.pwv.co.jp/~take/TakeWiki/index.php?octave%2F%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%EF%BC%88%E3%82%A8%E3%82%B3%E3%83%BC%E3%83%8E%E3%82%A4%E3%82%BA%E3%81%AE%E9%99%A4%E5%8E%BB%EF%BC%89 macOS 用のoctaveは
A native Mac app distribution of GNU Octave
https://octave-app.org/
で準備されている。まだ,Betaリリースのようだが,
そこそこ使えるようだ。
なにせmacユーザーでないのでよくはわからないので,macユーザーの方が
使ってレビューしてくれるとありがたい。 >>560
ダウンロードしてみたけど割と普通に使えそうだよ
いつもはCLIで使ってるけど specgram 使うと横軸がデフォだとおかしな値なのですが、どうしたら HH: MM に変えれますか?
ちなみに縦軸をログスケールで撮りたいのですが。。。 >>562
help spcegram から拾ってきた。
融通を聞かせたいなら,sepcgram自体で書かせるのでなく,
変数の返り値を操作してimagesecで描く。
軸の操作などは set(gca, .....) で行う。
[x, Fs] = auload(file_in_loadpath("sample.wav")); # audio file
step = fix(5*Fs/1000); # one spectral slice every 5 ms
window = fix(40*Fs/1000); # 40 ms data window
fftn = 2^nextpow2(window); # next highest power of 2
[S, f, t] = specgram(x, fftn, Fs, window, window-step);
S = abs(S(2:fftn*4000/Fs,:)); # magnitude in range 0<f<=4000 Hz.
S = S/max(S(:)); # normalize magnitude so that max is 0 dB.
S = max(S, 10^(-40/10)); # clip below -40 dB.
S = min(S, 10^(-3/10)); # clip above -3 dB.
imagesc (t, f, log(S)); # display in log scale
set (gca, "ydir", "normal"); # put the 'y' direction in the correct direction >>564
変数の返り値を操作してimagesecで描く。
もとい
関数の返り値を操作してimagescで描く。 >>562
あとspecgramのhelpを読んで見ることを強くお勧めする。
help 記載の
imagesc (t, f, log(S)); # display in log scale
は
imagesc (t, f, log10(S)); # display in log scale
だと思う。 octave でバイパスフィルターかけたいんやけど、関数自体ないのね。
自作するしかない?
fft → 適当な周波数成分以下をゼロにする → ifft でいいのかしら? >>567
同じやつか?そんなのできないからoctaveでは >>567 control とsignal package をインストールすればできるのでは? >> 567 windows バイナリならプレビルドでcontrol とsignal package がはいっている。 octave の MLに "Octave 5.0 Progress"http://octave.1599824.n4.nabble.com/Octave-5-0-Progress-td4690844.html??が投稿されました。5.0の release candidate が来週リリースされそうです。?? Octave Online
https://octave-online.net/
>> ver
----------------------------------------------------------------------
GNU Octave Version: 4.2.1
GNU Octave License: GNU General Public License
Operating System: Linux 3.10.0-693.11.6.el7.x86_64 #1 SMP Thu Jan 4 01:06:37 UTC 2018 x86_64
---------------------------------------------------------------------- ----------------------------------------------------------------------
Package Name | Version | Installation directory
---------------------+---------+-----------------------
communications | 1.2.1.1 | .../octave/packages/communications-1.2.1.1
control *| 3.0.0 | /usr/local/share/octave/packages/control-3.0.0
data-smoothing *| 1.3.0 | .../share/octave/packages/data-smoothing-1.3.0
divand | 1.1.2 | /usr/local/share/octave/packages/divand-1.1.2
financial *| 0.5.0 | .../local/share/octave/packages/financial-0.5.0
fuzzy-logic-toolkit *| 0.4.5 | .../octave/packages/fuzzy-logic-toolkit-0.4.5
general *| 2.0.0 | /usr/local/share/octave/packages/general-2.0.0
geometry *| 3.0.0 | /usr/local/share/octave/packages/geometry-3.0.0
image *| 2.6.2 | /usr/local/share/octave/packages/image-2.6.2
interval *| 3.1.0 | /usr/local/share/octave/packages/interval-3.1.0
io *| 2.4.8 | /usr/local/share/octave/packages/io-2.4.8
linear-algebra | 2.2.2 | .../share/octave/packages/linear-algebra-2.2.2
ltfat | 2.2.0 | /usr/local/share/octave/packages/ltfat-2.2.0
mapping | 1.2.1 | /usr/local/share/octave/packages/mapping-1.2.1 mechanics | 1.3.1 | .../local/share/octave/packages/mechanics-1.3.1
miscellaneous | 1.2.1 | .../share/octave/packages/miscellaneous-1.2.1
nan | 3.1.4 | /usr/local/share/octave/packages/nan-3.1.4
odepkg *| 0.9.1 | /usr/local/share/octave/packages/odepkg-0.9.1
optim *| 1.5.2 | /usr/local/share/octave/packages/optim-1.5.2
signal *| 1.3.2 | /usr/local/share/octave/packages/signal-1.3.2
statistics | 1.3.0 | .../share/octave/packages/statistics-1.3.0
stk | 2.5.0 | /usr/local/share/octave/packages/stk-2.5.0
struct *| 1.0.14 | /usr/local/share/octave/packages/struct-1.0.14
symbolic *| 2.6.0 | /usr/local/share/octave/packages/symbolic-2.6.0
tsa | 4.4.5 | /usr/local/share/octave/packages/tsa-4.4.5
Did you know you can use Octave Online in your class?
Open a support ticket to inquire about how we can set you up as an instructor.
dismiss
》
ブラウザさえあれば使えるので環境に依存せず使えるのがいい。 >>577
どゆこと?
octave-cli しか使ってない俺からしたら謎の新機能に聞こえるんだが >>579
組み込まれているoctave-forge パッケージのリストだけど ネットでのサービスがあるとして大切なデータをそこに出しちゃうってありえるの >>580 やった。m(_ _)m
>>581 確かにその点はおっしゃるとおり。
差し障りのない範囲で、手軽に使えるのは大きいよ。 octaveのメジャーうぷまだかな?
debian はしゃーないとして、brew したい ソースだけですが、5.0のRC1(5.0.90)がでました。
なぜか、次のメジャーリリースは5.1.0
のようです。
http://octave.1599824.n4.nabble.com/RC1-Candidate-td4691064.html
Ubuntu上で無事ビルドできました。 >>586
windowsバイナリもアップされたようです。 >>586
ホンマ?ホムペみても4.4のままなんやが >>587
直接URLを書かなかったのですまない。RCは正式版じゃないから違うところに
アップされる。
https://alpha.gnu.org/gnu/octave/
にある。
このwindows バイナリはリンクフラグのミスで
vc 2010 redistributable x64
https://www.microsoft.com/ja-jp/download/details.aspx?id=14632
が必要。 次のバージョンナンパーが5.1。バージョンナンバーのつけ方、変わったのかな? 公式にはアナウンスされていないようですが,RC2である5.0.91のソースが
https://alpha.gnu.org/gnu/octave/
にアップされています。
これからビルドしてみます。
Windowsバイナリのそのうちアップされるでしょう。 >>591
windows バイナリもアップされました。 >>593
5.0,91のwindowsバイナリはVC 2010のランタイムライブラリの誤リンクが解消されてぃます。 octaveはpkg installなどでUnixシェル環境が必要なので,これまではmsysが使われて きたのですが,msys2に代わりました。フォルダの構造がだいぶ変わっています。 >>594, 595
すいませんwindows版の話です。 octaveをwslのubunutu18.04にいれたら,qt グラフィックスがうまく描画できない問題は
xseverを-nowglで立ち上げたら問題がなくなった。 wslをだいぶ使い込んだ。Octaveはやはりlinuxで使った方がいいので,
windowsでもwslを使ってlinux版を使い始めた。
ただし,distroにバンドルされているのは大抵バージョン落ち。
いままでは自力ビルドしかなかったが
flatpakという仕組みができた。
いかんせんこれを使ったoctaveのインストールがwsl上のUbuntuでは実現していない。
私個人はoctaveのlinux上でのビルドはずっとやっているから問題がないが,
linuxユーザーでも最近はビルドしない人も多くなっているので悩ましいなあ。 >>598
4.4.1 上手くmake通る? FreeBSDだけれど、結局GUI関係諦めて
./configure \
'--prefix=/usr/home/**********'\
'--with-blas=-L/usr/local/lib -lcblas -lf77blas -lptcblas -lptf77blas'\
'--with-lapack=-lalapack -lptcblas'\
--enable-shared\
--disable-java\
--disable-jit\
--disable-openmp\
--without-qt\
--without-osmesa\
--enable-docs\
--x-libraries=/usr/local/lib\
--x-includes=/usr/local/include\
--localstatedir=/var\
--mandir=/usr/local/man\
--disable-silent-rules\
--infodir=/usr/local/share/info/\
--build=amd64-portbld-freebsd11.2
までオプション落としてようやくmake checkが通る程度の有様(cli でないと
coredumpする。デバッガで起動したらlibcxxrt.soの参照アドレス不整合が
原因らしい)だけれど。
(Qt5-KDE5関連が今丁度端境期っていうのもあるかもしれないし、未だmake
時に使う環境変数指定が不足しているのかもしれないけれど)
ちなみにうちは他への影響が大きく出来合いのpkgは使いたくない為、一々source
からmakeするようにしている。 ubuntu 18.04だけど問題ない。最近の5.0.91でもビルドできる。 >>600
回答有難う。Linuxは一寸苦手だけれど試してみます。 >>601
Linuxではflatpakを使えばdistro関係なく最新版をインストールできる。
https://flathub.org/apps/details/org.octave.Octave
開発者ビルドしたいときかな自分でビルドするときは >うちは他への影響が大きく出来合いのpkgは使いたくない為、一々source
からmakeするようにしている。
を見落としとった。m(__)m。
https://www40.atwiki.jp/gnuoctavejp/pages/13.html
Linuxでのインストール
でubuntu状のビルド情報を書いた。
ご参考まで >>602
(誤)開発者ビルドしたいときかな自分でビルドするときは
(正)開発版ビルドしたいときかな自分でビルドするときは
さらに,wsl ubuntuではflatpakが私の力量では使えない。
Ubuntu上のビルドはさほど苦にならないので問題ないが。 octave 4.4.0 使ってるんだけど,ssh とかでリモートで octave-cli で絵を描かせると設定したfontsizeや fonttype, ラインスタイルが反映されないないんだけどこれは仕方ない? >>605
使っている graphics_toolkit は?
(プロンプトで graphics_toolkit と打てば出てくる。)
print コマンドと使ったいると思うが 出力デバイスは (ファイル形式)?
qtとかfltkは,gl2ps とライブラリを使ってファイルを psotsrcipt に変換してから, さらに,ghostscriptやpstoeditで他のファイル形式に変換する。
この時にフォント指定とかが消えることが多い。
graphics_toolkit を gnuplot にすれば余計な変換がない。
gnuplot はインストールしてあるよね? >>606
graphics_toolkit と打つと
gnuplot と返された。
ちなみにgnuplotのバージョンは 5.0です。
ちなみにリモート先のOSは debian 4.9 です >>606
最後まで答えてなかった、ごめん。
>print コマンドと使ったいると思うが 出力デバイスは (ファイル形式)?
>
print コマンドではなく、saveas コマンドを使ってます。ファイル形式は pdf です saveas は使ってことないなあ。
とりあえず、print コマンド 使ってみて。
あとファイル形式はなに?
gnuplotでも、ファイル形式によっては単純にpngしてしまうとpostscriptベースになる。
gnuplot だったら
Cairoベースを使うのがよい。
pngcairoとかpdfcairoとか。
これは、多分printコマンドつかないと指定できない。 ごめんpdfだね。pdfcairoを強制するにはprintコマンド使って。
ヘルプかマニュアル読んでね。 個人的に決めのグラフ作成にoctaveを使ったことがない。gnuplot のgraphics tookit使うならoctaveにデータはきださせてgnuplotでかいたほうがよっぽどいい。
octaveからバッチ的につかいたいならデータ泣き出せて,systemコマンドでgnuplotをバッチモードでグラフを作ったほうが質の高いグラフが作成できる。
まあ、私最近
pythonにのりかえたので、あまりアドバイスできんが。 unix使ってるなら、1つのソフトでなんとかしようとするより、ツールを組み合わせて使うもんだと思っている。
gnuplotの機能をoctaveからではフルにつかかえない。正直octaveはグラフをきれいにつくるためのソフトではないと私は認識してる。 >>611
ググってみますありがとうございます。
ちなみに今気がついたのですが、debian母艦で graphics_toolkit すると fltk で、リモート先からgraphics_toolkit すると gnuplot でした。
謎です sshで接続しているのなら、x11 forwarding してクライアント側で x server たちあげて DISPLAY 環境変数を適切に設定しなければそうなります。
そういう設定をなさっていますか? >>615
>sshで接続しているのなら、x11 forwarding してクライアント側で x server たちあげて DISPLAY 環境変数を適切に設定しなければそうなります。
>そういう設定をなさっていますか?
いえ、私は ssh でログインした後,コマンドラインで図を作成したものを保存する,という作業を想定してます.
できた図はDropboxで同期させて確認している,と言った感じです。
全てコマンドラインで作業してます。
なのでX のフォーワーディング等は設定してません >>616
了解です。fltkやqtはグラフィックスがないとつかえません。その場合は自動的にgnuplotになります。osmsaでなんとかなるかもしれないので環境がある場所でテストしてみます。 >>617
できないね。gnuplotでお使いください。 >>614
ssh接続でやってみた
x=0:10;
plot (x, x.^2);
set(gca, "linewidth", 4, "fontsize", 24)
print -dpdfcairo tmp.pdf
fontsizeやlinewidthも反映しました。 GUIのUIの日本語の翻訳をやっています。
今,pythonに移行中なので,正直やっつけ仕事です。
翻訳のおかしい点があれば,ここで書いてください。
暇があれば,パッチを提出します。 改善点qtやfltkのgraphics toolkitでのプロットの改善。print書き出しの改善。
MATLAB互換の改善。
でしょうか。
5にあげる必要あるのかといわれればそうなのですが,バーナンバーポリシーを
変更したらしいのでよくわかりません。 >>622
GUIにvariable Browser が搭載されました。 >>623
「変数ブラウザ」と翻訳していますが,正しいでしょうか? >>626
windowsが一番早かったが、linuxもflatpakが対応して自分でビルドしなくても最新版が早く使える。結果、macが一番バージョンアップが遅くなった。 octave 4.4 系を使用してます。
x軸を上下2つを使って xtick の値をある倍数だけ片方の軸のみ変えることってできますか?
例えば
# 下のx軸
ax1 = [1, 2, 3, 4];
# 上のx軸は上の値の2倍に変換
ax2 = [2, 4, 6, 8]; >>629
> On gnuplot, one can make a plot which has two different ranges (upper and lower) by
> x2range ...
>
> How can I do on octave?
You can create a second axes object and set its limits however you want.
For example
x = 0:99;
y = rand (1, 100);
hax = [axes, axes];
plot (hax(2), x, y);
set (hax(1), "xaxislocation", "top", "xlim", [0, 5]);
--
mike >>628 >>630
で,これと xtick プロパティをセットすればいいんじゃないかな。
set (hax(1), "xaxislocation", "top", "xlim", [0, 5], "xtick", [0:0.5:5]); octave で データ点が多い(100000点)ようなものを plot させようとすると
GL2PS info: OpenGL feedback buffer overflow
というエラー出るんだけどなんとかならんものか。 >>634
そういうことは、本家で聞くことをおすずめする。 >>634
5.1.0 w64-64 windows:
>> x=linspace(0,1,100000);
>> plot(x);
>> print -dpng test.png
普通にできるが? >>636
もしかしてGPU性能が低いからかな。
これGPU関係するよね >>637
5.1.0 を使っている?OpenGL周りの内部ルーチンは4.4系とかなりそうだ。
私のGPUはそれ程でもない,Sandy Brigde世代のCore i5 の
Intel Graphicsだからな。
graphics_toolkit をgnuplotにしてみたら,描画は遅くなるがOpenGL使わないので
問題はなくなるだろう。
>> graphics_toolkit gnuplot
>> x=linspace(0,1,100000);
>> plot(x);
>> print -dpngcairo test.png
また,OpenGL のgraphics_toolkitは描画は速いが(特に3D),単精度実数だから
大きなオフセットがあるときの微小変化のグラフには不向きなので
その場合はgnuplotを使わざるを得ないしね。
OpenGL graphicsとgnuplot graphicsは一長一短があるので
上手く使い分けて。 >>638
失敬
OpenGL周りの内部ルーチンは4.4系とかなりそうだ。
ー>
OpenGL周りの内部ルーチンは4.4系からかなり改善されたかそうだ。 >>638-639
レスありがとうございます。
ictave は 4.0.3 を lnux で使用中です.
ソースから 4.4 に上げたら描画の挙動(?)が4.0.3と変わってしまって、また4.0.3 に出戻りさせた。
例えば
plot(x, - -k), で破線書かせてみると、破線の間隔が妙に幅を持って出力されたりとか色々と変な感じになったので.
こうなったら 5.1 系に上げてしまおうか >>640
linux なら今は flatpak を使うと,ビルドしないでも新バージョンが使える。
https://www40.atwiki.jp/gnuoctavejp/pages/13.html
で,Linux でのインストールで Ubuntu でのインストールを載せてる。
他のディストロでも使えるだろう。 >>595
そのせいでWindowsのユーザーディレクトリから下にいけない >>641
ほんと?
cd 'c:¥'
で問題ないが? いじってみたが、どこでもいけるんだが。windows版5.1.0だが。 >>641
亀レスで申し訳ありません。
無事に 5.1 に上げれました。
気になるのはやはり、図の見た目が変わってしまうことです。仕方ないと諦めるしかないですかねぇ >>647
私の場合、少し前までは仕上げはgnuplotで作っていたので、気にしてなかった。
最近はpython屋になりつつあるので、さらに気にしていない。pythonのmatplotlibは素晴らしいから。 中括弧のセルの連結方法について質問させて下さい。
数が少ない場合だと下記のようにセルを結合するのは簡単ですが,
[a{i,1};a{i,2}]
100 個や 200個セルがある場合, 手書きで結合するには少々しんどいのですが
なにかいい方法ありますでしょうか? 手で書かなきゃいいじゃん。好きなツールで自動生成すればいい。 懐かしいな、octave。
MATLAB買う金なかったからよく使ってたな。
今じゃPythonがあるからいらないけどな。 >>657
Rも使ってるぞ。
スクレイピングからデータの処理はPython。
機械学習はRでやってる。 私もpythonに移行した。言語仕様がいいのとmatplotlibが質の高いグラフを提供してくれるので。
ただし、行列計算機としてはoctaveを使う。こっちのほうが手間少ないから。 >>659
octave ゲキ重じゃない?
まぁPythonはPythonで遅いわけだが Octave version 5.2.0がもうすぐらしいです
https://octave.1599824.n4.nabble.com/uploading-and-tagging-version-5-2-0-td4695448.html
Friday (2020-01-31) is coming for which the 5.2.0 release is scheduled. Ubuntuの次期LTSまでに6.1を間に合わせて入れたいという話もある みなさんご存知だとは思いますが
5.1.0の
C:\Octave\Octave-5.1.0.0
にある
cmdshell.bat
をダブルクリックするとshellが立ち上がり
g++やgfortranでコンパイルができます
mkoctfileも作れます
ほとんどのcygwin or linuxのコマンドが使えます
また cmdshell.bat の中の
Rem set HOME to 8.3 format
for %%I in ("%HOME%") do set HOME=%%~sI
の後ろに
set HOME=home/hoge
と入れれば
C:\Octave\Octave-5.1.0.0\home\hoge
がホームディレクトリになります octaveでスペクトル解析してみたいんです。
サンプリングレート100ヘルツのデータ a があります
こいつを
Y = fft(a)
して周波数行列 f をつかって
Plot(f, Y) すると両端 (0 hz 100hz )に強いピークを持つんですが、どう処理したらいいでしょうか?
ナイキスト周波数は50ヘルツなのでそれ以上はダミーなのですよね? http://霈␣甕␣朧http://なねおゆそとろぬうわたせをみう http://ほんくめあいけむしいいはゐねも http://めのにほわねめもいめつむきしひ http://おれのまはそはんひえあそきほ
http://きやふふあわふひよのやはゐをえ https://のようのえれてこらといやきあと https://あはけからねおふまきくあへまや https://よあれほここえんえやめへはねに https://ひらもるしさをぬこせうぬもえに https://ねれやなさきつれうほめおかに
http://もヱるみさおさのほゐるにぬにり https://ぬれみほすつつわかねあくゐひん http://めこんむてひえるうんよせむへぬ http://んおみきしみヱいとゐにはをうせ https://もむたさゆめおえせりてくさるも http://ういけくそれうそねろもんとさ
https://むせそせつのきひむににもんちほ https://おいはほぬめゐんみけよりへそわ https://せりけつたつもはへひさにゐうの https://うぬしほねささふかはむそささん https://みへへねよてぬはむかてわゐんゆ https://るゆぬなくほにむてりゆゆくね
https://ちゆゐりむけわねくされりそわえ http://てほゆぬにのてはなあみきほめみ https://ぬむをえれえみしくうにとゐめさ https://きなふたくんつひいすれよせおへ https://ふいもぬちつけためてまよのへに http://えろつしうらわつしさへむくな
http://くけるりれきてねえんしまくらね http://くれりむたおこちおもりきヱはら https://へまむめねへはのめなえけをへい http://せえはなあろしはるへんあらすね https://へはせよくゆきよせろのゐらちに http://ててヱしやむこよやいもいふそ
https://のふほるたきほわへねもやすみつ http://まおるかちにんそほらうんあぬせ http://ろをるふれこんうせすよひまそお https://かぬゆくわにひとぬてらけるとけ http://ひにみまそよくそくらみうみさす https://めててけうひりままれおのたこ
http://やありむんみやりはよめみかかま https://くのをなねあらあわんふそのせら http://ひちくとたこほえよねせこほてあ http://へはせひむなこそあろえつヱんの https://ひたひきりなんらゆれたつまんす https://すろええはそささよのしせるか 懐かしいスレだな
まだあったんかw
Ryzen9 3900X、3950X持ってるけど
>>456
の
n=4096;A=rand(n,n);B=rand(n,n);tic;C=A*B;t=toc,GFLOPS=2*n^3/t*1e-9
試すと、余裕で
500GFLOPS
叩きだすからなあ
確かに当時一週間以上掛かってた計算を最近やったら10時間で終わったんで
本当にそれくらいあるんだと実感する octave 6.2releaseされたけど、Macのbrew でインスコすると不具合でません?
gccの参照がうまくいかなくなって、リンク貼り直しの刑になったんだが マスゴミや政治家がいくらAI、AIと連呼しても関連スレは過疎ってるよな。 だって使える人少ないじゃん
一般人で使えてもパッケージインストールしてちょっと使うくらいでしょ octaveで地図を描画する機能ある?
日本地図とか WindowsのOctaveだと4コア制限掛かってるみたいで
LinuxのOctaveと同じスクリプト走らせても明らかに遅いんだけど
コア数指定するにはどうすりゃいいの?
システム環境変数に
OMP_NUM_THREADS
設定しても意味ないっぽいし
Octaveで有効になってるコア数確認するコマンドとかある? ではマジレスすると、>>686 のようなタイプはさっさとPython乗り換えオススメ
ドキュメントも豊富にあるしロクに調べもしないでも答えてくれる人もたくさんいるよ
最近のPythonは技術計算周りも充実している
マルチコアとかGPU使うにしても苦労してoctaveのやり方調べるよりはるかに楽だろう 一応質問に質問で返すと
まず、Windows版て色々とあるけどどれ?エスパーすると自前ビルドでなくて、どこかのバイナリーと思われるが、ビルド条件で色々変わる
自前ビルドだとすると並列計算するオプションが必要らしいが…
> WindowsのOctaveだと4コア制限掛かってるみたい
> 設定しても意味ないっぽいし
は一体どうやって確認したの? getenv("OMP_NUM_THREADS") すら実行してなさそうな文章 > Octaveで有効になってるコア数確認するコマンドとかある?
どうやって調べて見つからなかったの?
実は質問に答えようかと10数年ぶりにWindowsにoctaveインストールした
で、コア制限なんてかかってないように見えた
普通にOMP_NUM_THREADSで設定した通りにnprocで表示される
ただし、オレのオンボロPCは2コア4スレッドなので5コア以上動くか確認出来ない
しかし、OMP_NUM_THREADSに6を指定したらその通りに表示されたので使えそう
ここまで確認出来た上で、なお、4コアまでしか動かないなら、バグじゃないの?
作ってる人に報告しなきゃ改善されないだろう
オレはちょっとググっただけだ
標準添付のヘルプでも出てくる内容
アホくさくて一度は答える気が無くなったのだった
まあ、結局コア数も足りなくて検証も出来ないし >>689
8コアCPUで計算するとCPU使用率50%
12コアCPUで計算するとCPU使用率34%
くらいで頭打ちになるんだよ
因みに同じコードをLinuxで走らせると100%で張り付くので明らかに挙動が違う
Octaveはビルド済の64bit版使ってて最新にしても変わらん
>>690
2コア4スレッドじゃ確認できないわなw
全然参考にならん
Windowsだから制限がかかるのか
Octaveで制限掛かってるのか
どっちかはっきりしたい >12コアCPUで計算するとCPU使用率34%
34%なわけないw
20数%で頭打ちになる
2コアで粋ってる奴の意見はどうでもいい
8コア以上でやってる奴の意見希望 理由は明白な気がするがおれ1コアだから黙っておくよ。
粋がるなって怒られるからね。 コンピュータの基本が分かってない人は2コアなら1/2、4コアなら1/4、
8コアなら1/8の時間で終わると思ってるからね。私は2コアだから彼にはアドバイスしませんけどね^^ ソースもハードも自分が持ってて自分で原因を調べようとせず、
まぁスキルがないからだとは思うが、なぜ上から目線の態度で他人の意見を聞こうとするのか。 雑魚どもがピーチクパーチク囀っとるなw
Linuxだと100%張り付くと書いてるのに何訳の分からねえ事ほざいてんだよ
8コア未満の役立たずどもは
おい、脳無しども有益な情報の一つでも出してみろよw
高パフォーマンスにしてプロセス優先度高くしても50%行けばいい方か
Windowsだめだなw 全く自分でデバッグもできないとか低レベルすぎてツッコミどころ満載^^
まぁそんなの技術者には当たり前だろというよくある話だが態度が悪いんで何も教えてあげない^^ UNIX板は大学デビューが多いからITスキルは低いものだ。大半がアセンブラ分からない、禄にコード書けない読めない。
しかもCからがメインだから機械語を全く理解してないからCのコード見てもどこがボトルネックか分からない。
逆にWindows板はCP/M、DOS、Windowsの流れの人が多いから下から上まで把握してる。
>高パフォーマンスにしてプロセス優先度高くして
というかWindowsド素人やん。なぜWindowsのほうがサクサク動くのか全然分かってないね。 教えてあげないんじゃなくて
自分でも分からねえんだろ?ん?w
有益な情報すら持ってない雑魚は黙ってりゃいいのに
恥晒すために何でしつこく書き込んでくるかなあw あと、御託は良いからさ
態度で示してくんない?
そんだけ偉そうに語れるんだから
8コアでも16コアでも良いけどWindowsで
octaveスクリプト実行してタスクマネージャーで
80〜100パーで張り付いてるスクショでも
出して見せろや?
簡単に出来んだろ?ん? 教えるのは吝かではないがおまえの態度が気に食わない。 問題の出るスクリプトも出さすスクショ出せとかかなり頭が弱くないか。
ここはタコにもやさしい犬板じゃないからな。
ググレカス 偉そうな事言っておいて
スクショの一枚も出せない雑魚しかいねえのかよw
お前らには失望した
お前らなんだかんだ結局言って出来ないんだろ?ん? コア分けたら100%使わないというFAQ並の話にブチ切れしてないで少しはググったらどうだ。
Windowsがなぜ世界市場トップなのか。世界最強デバッガが用意されてるからだよ?
使わない手はないのになぜ使わない? きみのそのシワのない脳味噌に少しでもシワを増やし給え。
そのスクリプトや環境を公開しない時点で自分で原因を探るしかないだろう。ほんとキミは馬鹿だな。 差分法、B-spline法、スペクトル法で
数値微分と数値積分ゴリゴリやってる
五千行くらいのスプリクトだけど
お前理解できんの?
出来るんだったら上げてやってもいいけど
そういうのもあるから一般論で出来るか出来ねーのか
聞いてんだよ
分かったか、間抜けw >>706
学部四年生程度のイキり腐ったガキだな。
しかもoctaveで数値計算してるから関数は知ってても、その中身についてはよくわかってない可能性もある。
数値計算するならFortran使えクソガキ 理解できないからって決めつけて罵倒とか本当に
しょうがねえ使えねえ奴だな
別に学生じゃなくても実装くらいできんだろw
B-splineとかde Boorがresearchgateで自ら掲載してる
から読んでみろよ?ん?
顔真っ赤にしてる暇があったら
早くスクショの一つでも上げて見せろや無能w 休みのネタに期待したのに結局問題となるスクリプトコードとどの実行処理系かは言わないのかよ。
今年のクリスマスは盛り下がりまくりだな!!! このスレは数学屋はくるがコンピュータ科学には疎い。しかしこの板はUNIX板でコンピュータ科学には強い。
この初学者君が悩んでるのは数学ではなくコンピュータ科学だ。キミがいかに頓珍漢なマウンティングをしてるか分かってほしい。
IT音痴君にありがちな分散処理したら速くなるとかコンピュータが一発でデジタル計算できる魔法の機械だとでも思ってるのだろう。
だが違う。コンピュータ屋はCPUとてアナログ回路として見る。そんなのIntelの論文見れば明らかだ。アナログの話ばっかりだ。
コアを分ければ距離が出き、配線が伸び、抵抗が増え、信号が遅れる。コンピュータ屋にとっては光の速度は既に激遅なのだ。
待ち時間が増えるのだ。コアが待機して動かない? だからそんなの当たり前だ。ここまで分かればじゃあどう最適化すれば答えは見えてくるだろう。
まずキミは自分が井の中の蛙だと知り、態度を改めたまえ。 珍しくスレ伸びてると思ったらヤレヤレ
皆さん良いお年(落とし)を 物理学と数学は両輪で互いに進んで科学は発展していくみたいな話があるが、
現代は、物理屋は数学を道具として利用するが、数学屋は物理を道具として見てないというお話でしたとさ。 馬鹿専用のiOSでは馬鹿が勘違いして文句言わないように
CPU使用率やメモリ使用率を見せないようにした。 過疎ってるね。ほれ。
GNU Octave 7.1.0 Released ? Apr 6, 2022 >>688
python使ってみたけどさあ
行列演算の実装が全然直観的じゃねえじゃん
行列計算メインで使ってるなら乗り換える意味ないよw
あと、秋田から答え出るまで放置してたけどアホが吠えてただけとか、どんだけだよw GNU Octave 7.2.0 Released ? Jul 28, 2022 >>715 pythonのリストの実装に線形代数計算ライブラリを突っ込んだという感じで行列計算が
線形代数の記法とあってないのは事実。matplotlibを使いたいがら我慢して使っているところがある。 NvidiaあたりがOctaveにWindows用にNvblasかCublasを提供しないかな Octave は GNU Octave というように GPL V3 だからどうなんでしょう。 Python, RはGPUに対応していて
Pythonは知らんがRはGNUプロジェクト
S言語をGPUプロジェクトでフリー化したのがR
Rみたいな頭のおかしい言語の参考書が
本屋であふれかえっているのは
経済や生物や医学などの無駄に統計を取っている統計の使い方だけ知っている集団が
「P値と有意水準が簡単に計算できないとね!」
とSを使っていたから。
RでGPU使って機械学習というのもPython並に普通
MATLABはGPUに対応しているが
OctaveやScilabは全然対応してない
MATLABやOctaveユーザーから見るとPythonというかnumpyはクソなので
OctaveをGPU対応にしてほしい。Octaveのユーザーコミュニティだけでは難しい NVIDIAがGPUのLinux向けカーネルモジュールをオープンソース化、すでにダウンロード可能に
https://gigazine.net/news/20220513-nvidia-open-source-gpu-kernel-modules/
ってのがありました。
GPL2です。
Linux向けなら何とかなるかも。 >>720
ScilabはGPGPU用の関数整備してなかったっけ? >ScilabはGPGPU用の関数整備してなかったっけ?
調べました。してるようです。
Octaveの方ですがoclというoctave-forge package がありそれでGPUを使えるようです。
Windowsバイナリにはocl packageは実装されていません。
おそらくlinuxじゃないと動かないのでしょう。おそらくですが。
ちなみに最後の更新は2021-12-07です。
GPU Linear algebra extensions for GNU/Octave
って論文もあります。
https://iopscience.iop.org/article/10.1088/1742-6596/368/1/012062/pdf モジュールをどうやって入れるかでいつも迷う
ディストリビューションが用意するモジュールで入れるとなんかいまいち依存問題出たり GNU Octave 7.3.0 Released ? Nov 2, 2022