データ解析ツールoctaveを語ろう Part 2
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2009/10/28(水) 22:13:01unixを科学研究で使っている香具師には非常に心強い味方のはずだ。
matlab互換を主張しながら、微妙にバージョンアップを続ける
octaveについて語ろう。
そのPart 2です
前スレ
データ解析ツールoctaveを語ろう
http://pc12.2ch.net/test/read.cgi/unix/1086016412/
0098octave for windows メモの筆者
2011/02/27(日) 16:18:39.27まあ,3.4になってfltkになればよくなると思いますが。Windowsでは,
まだしばらく3.4のリリースかかりそう。
0099名無しさん@お腹いっぱい。
2011/03/27(日) 03:29:38.85今のとこuigetfile、uiputfile、uigetdir、uimenuだけだけど、今まで手つかずだっただけに素晴らしい!
ところで、fltkって画像ファイルの出力ってできないんだろうか?
graphics_toolkit fltk;
plot(1:10);
print('test.eps','-deps');
とかやっても、空っぽのファイルしか出来ないんだけど…。
他の形式でも同様。
…うん、printはgnuplot backend使えって話はごもっともなんだけど、アニメーション作成用に
もうちょっと高速な出力手段を模索中。
誰か情報持ってない?
0100名無しさん@お腹いっぱい。
2011/04/15(金) 10:51:34.50Octaveのプログラミングについて質問させていただける板ってどこにありますか?
「Octave」「octave」で検索かけてもこの板しか見つかりませんでした.
エラーの返ってきちゃう関数をどうすれば使えるか調べたいんですけど(汗)
0101名無しさん@お腹いっぱい。
2011/04/18(月) 22:25:16.10MATLABのスレを探してみてください
OctaveはMATLABのクローンなので
あと、エラーの返ってくる関数を調べる方法は知りませんが
エラー処理はtry, catch でやります
例
A=[1,2]
B=[1;2]
try
C=A+B
catch
%lasterr
disp('error!!')
D=A+B'
end
AとBはベクトルの向きが違うので、足すとエラーが出るのですが
エラーの出そうな処理をtryの後に書き、エラーが出た後の処理をcatchの後に書きます
コメントアウトしているlasterrは直前のエラーが何かを表示します
0102名無しさん@お腹いっぱい。
2011/05/08(日) 12:20:29.280103名無しさん@お腹いっぱい。
2011/06/13(月) 00:08:14.52gset や __gnuplot_set とかが使えないんですが
set term tgif みたいな処理はoctave からはどのように
すれば良いんでしょうか?
0104octave for windows メモの筆者
2011/06/16(木) 03:40:35.38最近バージョンでは,gnuplotのコマンドを直接たたくことはできません。
plotしたあと
drawnow のdebug オプションを使って
>> drawnow ("tgif", "foo.tgif", false, "debug.gp")
で
>> system('gnuplot debug.gp');
でfoo.tgifを作成する。
ぐらいでしょうか
0105octave for windows メモの筆者
2011/06/16(木) 03:56:40.97すみません。やってみましたが,うまくいきませんでした。<m(__)m>
0106octave for windows メモの筆者
2011/06/16(木) 04:07:12.45うまくいかなかったのはWindows 版のgnuplot のbug のせいのようです。
windowsでは
system('gnuplot debug.gp');
system ('type debug.gp | gnuplot')でうまくいきそうです。
tgifをもっていないのでfoo.tgifをテキストエディタで確認しただけですが。
postscriptでうまくいったので,tgifでもおそらくいくと思います。
0107octave for windows メモの筆者
2011/06/16(木) 06:58:04.50plotしたあと
drawnow のdebug オプションを使って
>> drawnow ("tgif", "foo.obj", false, "debug.gp");
でgnuplotのスクリプトdebug.gpを出力し
それをsystemコマンドでgnuplotでgif出力(foo.obj)させます。
>> system('gnuplot debug.gp');
debug.gp のデータはバイナリであり,windows 上ではgnuplotバクにより
正しくプロットされません。
0108octave for windows メモの筆者
2011/06/16(木) 07:02:12.97windowsでは
>> system ('type debug.gp | gnuplot');
としてください。
0109octave for windows メモの筆者
2011/06/16(木) 07:33:34.95tgif はもっていないので,fig ファイルを生成するようにして
Cygwin 上Xfigで
でfoo.figを作成したところうまくいきました。
>> drawnow ("fig", "foo.fig", false, "debug.gp");
>> system ('type debug.gp | gnuplot');
できたfoo.fig をXfigでよみこんでプロットを確認しました。
tgifでもうまくいくと思います。
0110名無しさん@お腹いっぱい。
2011/06/18(土) 10:54:38.14>>103です。
いろいろお答えいただきましてありがとうございました。
tgif への出力はできるようになりました。
私がoctaveを使いこなしていないからかも
知れませんが 個人的には gnuplot の細かい設定が
octave上からできる方が便利なのですが。
0111octave for windows メモの筆者
2011/06/18(土) 17:08:46.76Octave は3.2(3.2では試験的,3.4から本格的)から
Open GL ベースのグラフィックスを扱うようになり,
整合性の観点から低レベルでgnuplotを直接触ることはやめになりました。
その代わり,octave-forgeにgnuplot パッケージがあり,
gnuplotを直接いじりたい方はそちらを使うという思想のようです。
0112octave for windows メモの筆者
2011/06/18(土) 17:15:21.41http://octave.sourceforge.net/gnuplot/overview.html
説明がわかりにくいのでつかったことはありません。
0113名無しさん@お腹いっぱい。
2011/06/18(土) 20:09:09.69意外と良いかも
0114名無しさん@お腹いっぱい。
2011/06/20(月) 11:49:46.70octave:1> x = [0.0, 0.2, 0.4]
x =
0.00000 0.20000 0.40000
octave:2> plot(x, sin(x))
error: Invalid call to strcat. Correct usage is:
-- Function File: strcat (S1, S2, ...)
error: called from:
error: /usr/share/octave/3.4.0/m/help/print_usage.m at line 87, column 5
error: /usr/share/octave/3.4.0/m/strings/strcat.m at line 92, column 5
error: /usr/share/octave/3.4.0/m/plot/__gnuplot_get_var__.m at line 113, column 11
error: /usr/share/octave/3.4.0/m/plot/__go_draw_axes__.m at line 40, column 18
error: /usr/share/octave/3.4.0/m/plot/__go_draw_figure__.m at line 167, column 19
error: /usr/share/octave/3.4.0/m/plot/__gnuplot_drawnow__.m at line 86, column 5
0115octave for windows メモの筆者
2011/06/21(火) 00:54:07.79どうもCygwin1.7.9-1とOctave+gnuplotの相性が悪いようで
Cygwin を1.7.8-1のダウングレードすると動きます。
0116名無しさん@お腹いっぱい。
2011/06/21(火) 15:01:05.47cygwinのバージョンを1.7.8-1に直したところグラフ表示できました.ありがとうございました!!
0117名無しさん@お腹いっぱい。
2011/06/21(火) 21:24:25.60octaveのサポート状況の良いディストリってどれ?
ubuntu のoctave はバージョン古い。
FreeBSDのportsのoctaveなんかは最新のおっかけは凄いけど
portsからのインストールは遅い。
0118octave for windows メモの筆者
2011/06/22(水) 03:04:37.49jweさんがDebianだからのぞいてみたけど,まだ3.2.4のままですね。
octaveの本家のMLをみるとLinuxの人は割りと自分でビルドしているようです。
0119octave for windows メモの筆者
2011/06/22(水) 06:18:06.49octave Download - Linux Packages Search (RPM, DEB, XZ, TXZ, TGZ)
http://pkgs.org/package/octave
3.4.0のようです。
0120名無しさん@お腹いっぱい。
2011/06/24(金) 03:56:24.07なんか凄い気合入って追っかけているような感じ。
0121octave for windows メモの筆者
2011/06/24(金) 04:04:41.54(日本人です。)
その方は多倍長BLASの作者でもあります。
最近連絡を取りました。
ところでoctave 3.4.1には,mkoctfileにバグが見つかり,
3.4.2の準備段階です。(現在RC2がでている)。
FreeBSDは,3.4.2がでたらすぐ対応するようです。
0122名無しさん@お腹いっぱい。
2011/06/24(金) 23:22:10.88Octave のためだけに。
0123名無しさん@お腹いっぱい。
2011/06/25(土) 00:23:16.920124名無しさん@お腹いっぱい。
2011/06/25(土) 01:55:02.93MysqlでもCUDAでも何でも新機能を導入しようとする場合に
John W. Eaton氏が、GPLかどうかを問いかけて潰れていってる気がする
Rなんか2009年の段階でGPU対応してるのに
http://brainarray.mbni.med.umich.edu/Brainarray/Rgpgpu/
Mysqlにまで対応している
http://www.okada.jp.org/RWiki/?RMySQL
じゃあScilabでもいいやと調べてみても
まともなものが無い
Scilabは他のtoolboxも貧弱だし
0125octave for windows メモの筆者
2011/06/25(土) 02:16:04.98http://octave.1599824.n4.nabble.com/GNU-Octave-3-4-2-Released-td3622778.html
0126octave for windows メモの筆者
2011/06/25(土) 02:33:11.93MySQLはoctave-forgeで対応している気がする。
自分では使わないから詳細はわかりませんが。
http://octave.sourceforge.net/database/overview.html
These are bindings that allow SQL queries and other database operations
on postgres, mysql, sqlite, and standard ODBC databases from within
Octave. A simplified interface that is uniform across all database types
is provided, as well as the entire C client API for each database
(libpq, libmysqlclient, etc).
0127octave for windows メモの筆者
2011/06/25(土) 02:42:05.19こんなページもあります。
http://octave-swig.sourceforge.net/octave-db.html
これを見る限りOctave-forgeのdatabase パッケージにてMySQLには
対応できるのではと思います。
0128octave for windows メモの筆者
2011/06/25(土) 06:29:16.81CUDAについては,OctaveはGPLですので,
jwe氏が言うことは仕方のないことなのでしょう。
OctaveがGPLから他のライセンスに変えるか,GPLが変わるか
CUDAがかわるかどちらかでないといけないのでしょうが,
まあ実現はしないのだと思います。
ところで,MySQLは,
http://www-jp.mysql.com/about/legal/licensing/faq.html
にあるように問題がないように思います。
だからOctave-forgeのdatabaseパッケージでMySQLはサポートされている
のだと思っています。
0129octave for windows メモの筆者
2011/06/25(土) 06:35:35.07ただし,再配布せず自分でやる分には問題がないと思います。
以前GotoBLASが,GPL非互換だったとき自分でソースからビルドして,
octaveのビルド時に組み込んで使用することはできました。
かなり,億劫なことになりますが,
http://scinesur.wordpress.com/2009/11/12/cuda-on-octave-3-x-in-linux-64-bits/
なこのページもあることですし,自力でやることはできるのかなと思います。
0130名無しさん@お腹いっぱい。
2011/06/25(土) 08:57:30.61mingw版もcygwin版も(どちらも3.2.4)
octave:5> pkg install database-1.0.4.tar.gz
で入れようとしても、内部のmakeでこけますね
tar.gzを直接開いて./configureしてみると
sqlite3でwarningが出るし
結果がこれで
octave-forge is configured with
octave: octave (version 3.2.4)
mkoctfile: mkoctfile for Octave 4
swig: pre-generated
postgres: postgresql/libpq-fe.h not found
mysql: mysql/mysql.h not found
sqlite3: yes
odbc: yes
postgresqlやmysqlはライブラリが必要みたいだし
makeもsqliteの段階でこけるので、unix系なら動くのかもしれませんが
Windowsでは無理っぽいですね
0131octave for windows メモの筆者
2011/06/25(土) 12:23:55.27そうですね。3.0.xのころdatabaseパッケージを四苦八苦していれましたが,
postgres と mysqlはあきらめてsqlite3とodbcだけでやったことがあります。
CygwinならたしかpostgresqlがOctaveを意識せずにあったような気がしますが,
それを使ってpkg installをしたことがないので,なんともいえません。
Cygwinの方がUnixに近いのでライブラリをかき集めれば何とかなるかも
知れません。
0132octave for windows メモの筆者
2011/06/29(水) 02:59:55.51http://www.tatsuromatsuoka.com/octave/Eng/Win/
あくまでも体験版で,
Octave-forgeがはいっていませんし,バグもあると思います。
インストーラーなる気の利いたものもなく,zipファイルを解凍して
適当なフォルダにおきます。
ビルドに必要なツールも一応いれたつもりなので,自分でビルドしてみたい
方はどうぞ。ただし,あまり丁寧な説明はしていません。
0133名無しさん@お腹いっぱい。
2011/07/04(月) 06:29:50.28Benjaminさんの
Octave-3.2.4_i686-pc-mingw32_gcc-4.4.0_setup.exe
で、コマンドラインからのpath指定が効かないんですが、なんとかなりませんでしょうか?
> octave.exe --path c:\
> octave.exe --path c:\\
> octave.exe --path c:/
> octave.exe --path c://
> octave.exe --path /c/
いずれもダメでした。
Linuxなら特に問題ないのですが…
0134octave for windows メモの筆者
2011/07/04(月) 15:21:59.890135octave for windows メモの筆者
2011/07/04(月) 15:28:18.58>octave --eval "cd c:\\" --persist
で代用できませんか?
0136octave for windows メモの筆者
2011/07/04(月) 15:38:46.46マニュアルによれば
--path path
-p path
Add path to the head of the search path for function files.
The value of path specified on the command line will override any
value of OCTAVE_PATH found in the environment, but not any commands in
the system or user startup files that set the internal load path
through one of the path functions.
となっていて,Cygwin版でもMinGW版でも OCTAVE_PATH には,なにも反映され
ない。Linuxでの期待通りの動きとはどんなものですか?
Linuxもってないのでわからないので。
0137名無しさん@お腹いっぱい。
2011/07/04(月) 23:18:23.00試して下さって、大変ありがとうございます!!
Linux版なら、
$ octave -q --path /home/user/work
octave:1> path
.
/home/user/work (←このフォルダが存在する場合のみ)
/usr/lib/octave/3.2.4/site/oct/i686-pc-linux-gnu
/usr/lib/octave/site/oct/api-v37/i686-pc-linux-gnu
...
となります(恐らくご想像通りでしょうが…)。
ちなみに、
$ OCTAVE_PATH=/home/user/work octave -q
でも同義です。
こちらでも迂回策を探してはいるのですが、環境変数も効きませんし、なかなか…
0138octave for windows メモの筆者
2011/07/05(火) 01:47:59.89octave --eval "addpath C:\\" --persist
ではいかがでしょうか。
0139octave for windows メモの筆者
2011/07/05(火) 01:56:50.28ようです。MinGWならではのバグのようです。
職場のパソコンで自分でビルドした3.4.2(MinGW)でも,動作しなければバグ
報告をします。
0140octave for windows メモの筆者
2011/07/05(火) 06:45:34.07octave --path c:\
***********
3.2.4
.
C:\Programs\Octave\3.2.4_gcc-4.4.0\share\octave\packages\zenity-0.5.7
(以下略)
**************
3.4.2
.
C:
C:\octave\3.4.2\lib\octave\3.4.2\site\oct\i686-pc-mingw32
:
(以下略)
となるのですが
octave --path C:\octave
Octave's search path contains the following directories:
.
C:\octave
C:\octave\3.4.2\lib\octave\3.4.2\site\oct\i686-pc-mingw32
:
(以下略)
**********************
0141名無しさん@お腹いっぱい。
2011/07/05(火) 07:58:49.52ありがとうございます、現在そちらの方向で検討中です。
>>140
え?なぜ3.4.2はそんな残念な動作に…
3.2.4(Benjamin版)ではC:\Octaveを指定しても駄目なようですね
こちらの職場PCにはBenjaminさんのメモにしたがってビルドした
3.2.4がありますので、そちらも試してみます。
0142octave for windows メモの筆者
2011/07/05(火) 08:11:41.89140 は長くて,2chにおこられたので,後から続きを書こうとしてわすれていました。
どーもドライブのルートディレクトリの場合は失敗して,C:\とならず,C:
となるのですが,C:\octaveのような場合は大丈夫です。
一応,development branch でも試すために,現在ビルド中です。
0143octave for windows メモの筆者
2011/07/05(火) 09:51:31.50octave --path c:\
のようなルートディレクトリの指定はバグってますね。
時間があるときにbug trackerに登録します。
(直るかどうかわかりませんが。)
0144octave for windows メモの筆者
2011/07/05(火) 10:18:47.77https://savannah.gnu.org/bugs/?33714
0145名無しさん@お腹いっぱい。
2011/07/05(火) 23:05:49.70大変感謝です…。
ちなみに、Benjaminさんメモに従ってビルドした3.2.4ですが、
MSYS環境ではpath指定が通りました。
コマンドプロンプトからはlibgcc_s….dllが足りないとか言われて
実行できなかったので、未検証です。
(MSYS環境以下を探しても見つからなかったので諦めてましたが、
よく考えたらMinGW環境以下にありそうですね…忘れてました)
0146octave for windows メモの筆者
2011/07/06(水) 01:46:53.64Msys 環境下で指定がうまくいくということは,パスのハンドリングが
octave --path でUnix likeになっているからかもしれません。
なお,libgcc_s….dllなどたらない,dllは,Benjaminさんのビルドのbin
ディレクトリからコピーして,自分でビルドしたoctave.exe,
octave-3.2.4.exeのあるディレクトリにペーストすればいいです。
または,バッチファイルなどでBenjaminさんのビルドのbinディレクトリに
パスを通すという手もあります。
0147名無しさん@お腹いっぱい。
2011/07/06(水) 18:47:15.59コマンドプロンプト環境下で試してみました。
dllはOctaveのビルドに使用したc:\mingwのbinにパスを通して
対処してます。
octave --path c:\msys -> OK
octave --path c:\ -> OK(ちゃんとc:\と表示される)
…あれ?
Benjaminさんメモに従うとコンパイルは自動で流れるので、
できるバイナリはインストーラで配布されているものと
同じはず、だと思うんですが…?
なお、本来の目的はOctave起動後にaddpathすることで達して
おりますので、これ以上追いかける意味は無くなってしまったのですが…。
ご報告まで。
0148octave for windows メモの筆者
2011/07/06(水) 21:34:11.72ご報告ありがとうございました。
回避法があるとはいえ,不思議ですね。
0149名無しさん@お腹いっぱい。
2011/08/03(水) 16:34:09.93画像をfft2して、その後、元の画像に戻るかiff2でチェックしたいのですが、どうもうまくいきません・・・
プログラムのどこが悪いのでしょうか?
Iin=imread('BOAT.bmp');% 画像の入力
figure,imagesc(Iin,[0 255]);% 画像表示
colormap(gray);
axis image;
%FFT変換
Iin_d=double(Iin);
O_fft=fft2(Iin_d);% FFT
O_fft=fftshift(O_fft);
O_fft=(abs(O_fft));
O_fft=10*log10(O_fft);% FFT結果のlog表示
figure,imagesc(O_fft,[0 MAX]);% 画像表示
colormap(gray);
axis image;
%逆FFT
O_fft2=(abs(O_fft2));
O_fft2=10*log10(O_fft2);
O_fft2=fftshift(O_fft);
O_fft2=real(ifft2(O_fft2));
figure,imagesc(O_fft2,[0 MAX]);% 画像表示
colormap(gray);
axis image;
どなたかお願いします
0150octave for windows メモの筆者
2011/08/08(月) 09:37:41.35画像処理は詳しくありませんが,演算が逆演算になっていないような気がします。
0151名無しさん@お腹いっぱい。
2011/08/08(月) 14:03:14.870152octave for windows メモの筆者
2011/08/08(月) 16:59:04.63自信なし:一応画像で確認した。
Iin_d=double(Iin);
O_fft=fft2(Iin_d);% FFT
O_fft2=real(ifft2(O_fft)); %ifft
figure,imagesc(Iin,[0 255]);
fftした結果を演算されていますが,もとのイメージのフーリエ空間での
画像に演算をされておられるので情報が変わってしまっています。
したがって,ifftで戻るはずは原理的にないような気がします
0153octave for windows メモの筆者
2011/08/08(月) 17:55:52.63訂正
Iin_d=double(Iin);
O_fft=fft2(Iin_d);% FFT
O_fft2=real(ifft2(O_fft)); %ifft
figure,imagesc(O_fft2,[0 255]); %ここを訂正
0154名無しさん@お腹いっぱい。
2011/08/09(火) 15:43:46.03sigma=40;
for XX=1:128,
for YY=1:128;
ZZ(XX,YY)=63*exp(-1*(XX-64)^2/(2*sigma^2))*exp(-1*(YY-64)^2/(2*sigma^2));
end;
end;
ZZ1=fft(ZZ);
ZZ2=ifft(ZZ1);
image(ZZ)
colorbar
pause(2);
image(abs(ZZ1))
colorbar
pause(2);
image(abs(ZZ2));
colorbar
pause(2);
要点は、imageで表示するとき以外はabsとかを使わない
0155octave for windows メモの筆者
2011/09/02(金) 10:37:46.27https://github.com/xianyi/OpenBLAS
なお,Cygwin 上にmingw64のクロスコンパイラが入りました。
mingw64は32 bitもサポートしていますので,windows 用には,
それを使います。
(setup.exeでインストールしてください。)
makeは以下のようにしてください。
make CC=i686-pc-mingw32-gcc FC=i686-pc-mingw32-gfortran OSNAME=WINNT TARGET=CORE2
TARGETは各自のCPUにあわせてください。
できた
libopenblas_(cpu id)-r0.1alpha2.2.dll
octaveのあるbinフォルダにコピペして,
octave-3.2.4 mingwなら blas.dllとリネームすればいいです。
(octave-3.4.2 ならlibblas.dllに )
0156octave for windows メモの筆者
2011/09/05(月) 10:46:31.60http://old.nabble.com/Octave-3.4.2-mingw-%2B-octaveforge-pkgs-to32394771.html
0157octave for windows メモの筆者
2011/09/07(水) 17:24:14.86http://old.nabble.com/Re%3A-Octave-3.4.2-mingw-%2B-octaveforge-pkgs-p32413743.html
0158octave for windows メモの筆者
2011/09/15(木) 08:01:26.94http://octave.1599824.n4.nabble.com/Updated-Octave3-4-2-Mingw-for-testing-was-Mingw-Octave-3-4-2-blank-gnuplot-printouts-td3814047.html
0159名無しさん@お腹いっぱい。
2011/09/22(木) 00:01:20.14改善されるといいなぁ。
0160名無しさん@お腹いっぱい。
2011/09/22(木) 09:47:51.5264bit版ならそのエラーが簡単には出ないって話ですけどね
ただし正式なバイナリーがリリースされてない
0161octave for windows メモの筆者
2011/09/22(木) 14:14:55.62ttp://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html
にしたがってビルドするしかないようですね。
Debian 上での例が載ってます。
0162octave for windows メモの筆者
2011/09/22(木) 17:00:01.71Scilab なら64bit版があるようです。
ttp://www.scilab.org/products/scilab/download
でも,文法かなり違うからなあ。
0163名無しさん@お腹いっぱい。
2011/09/26(月) 13:34:26.79Scilabの32bitも64bitもメモリー管理としては大差無いようです
Windows7 64bit に4GBのメモリーを積んだ条件で
Octave 3.2.4で
AA=ones(12000,10000);
とやると通りますが
AA=ones(13000,10000);
では error: memory exhausted と出ます。
Scilab 5.3.3 では32bitでも64bitでも
stacksize('max');
を実行した後に
AA=ones(13000,10000);
は通りますが
AA=ones(14000,10000);
はエラーが出ます。
倍精度が16bitだとして(複素数の実部と虚部にそれぞれ8bit倍精度)
2GBぐらいに壁があるようです。
0164octave for windows メモの筆者
2011/09/26(月) 17:59:23.61私もやってみました。
-->AA=ones(13600,10000);
!--error 17
stack size exceeded!
Use stacksize function to increase it.
Memory used for variables: 135007946
中間的なメモリが必要です: 136000002
Total memory available: 268435455
Scilabの場合,スタックサイズの上限に問題があるようですね。
0165名無しさん@お腹いっぱい。
2011/09/27(火) 09:00:38.67倍精度複素数16bitではなくて16Bytesの間違いでした
全部の変数で2GB未満しかアロケート出来ないっぽいです
2^32は42億9496万7296でしたか、つまり4Gですが
CPUは2の補数をとった2Gまでしかアクセスできないのでしょう
0166octave for windows メモの筆者
2011/09/27(火) 10:26:32.43ttp://www.gnu.org/software/octave/doc/interpreter/Compiling-Octave-with-64_002dbit-Indexing.html
をよく読むとArray Indexとなる整数のバイト数を64 bitの体系にあわせて,
ライブラリまで含めて構築しなおす必要があるようです。
(たとえばFortran のライブラリなら(たとえばLAPACK),
interger のデフォルトのバイトを8バイトにする。)
Scilab 64 bitは,そこまで考えてビルドされていなのではと推測します。
0167octave for windows メモの筆者
2011/09/30(金) 10:42:53.78ttp://octave.1599824.n4.nabble.com/Octave-3-4-3-rc0-release-candidate-available-for-ftp-td3857294.html
だそうです。
0168名無しさん@お腹いっぱい。
2011/10/01(土) 22:47:50.57データに番号がついていて連続していない状態で、他のデータから連続していないデータを参照しているので
内部で番号をつけ直しています。つけ直しの時に総ナメのような感じになってしまうので連想配列が使えたら
と思いまして質問しました。
0169名無しさん@お腹いっぱい。
2011/10/02(日) 01:13:05.09構造体で、それっぽいことはできたはず。
その用途でしたら、スパース行列でもよさげ。
どっちが速いかは未検討。
0170168
2011/10/02(日) 09:20:50.75a.idみたいな感じで丁度構造体を使っているので構造体を使った連想っぽい処理をもう少し具体的に知りたいです
どんな感じで使えば良いのですか?
0171名無しさん@お腹いっぱい。
2011/10/02(日) 14:17:52.86問題がややあいまいなので、もうちっと具体的にどうぞ。
情報の後出しは、無しということで。
0172168
2011/10/02(日) 18:24:07.84有限要素法のプログラムを勉強のために作っているのですが、データが節点、
要素等番号がついています。NASTRANのデータ形式をGRIDとかCHEXAとか
を使っています。(手を抜いて継続行を一行にしていたりしますが・・・)
これらの番号(ID)は連続した数字ではなく、プログラム内部で参照して番号を
関連付けるしかないのですが、現状総ナメで番号(ID)を内部の連続した配列番号
に関連付けています。変数はelem(:).id、node(:).idがデータの番号で関連付
けした変数はelem(:).no、node(:).noとかにしています。主にelemがnode
を参照するのでnode(:).idを連想配列風の処理で内部の配列番号に変換したいのです
読みにくいと思いますが、構造体を使った連想配列風の処理を教えていただけない
でしょうか?
0173名無しさん@お腹いっぱい。
2011/10/02(日) 23:48:46.22もっとスマートな方法もありそうですが…
期待外れだったら、すいません。
案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で信用なりませんが、
各種アルゴリズムの実装を知るには非常に有用です(個人的に、固有値解析のとこは感動しました)。
0174168
2011/10/04(火) 20:03:02.40お返事有り難う御座います。
処理速度を早くするためにはスパース行列が良さそうですね、
処理手順を多少弄らなければいけなさそうですが少し考えてみます。
案2の方も少し考えてみます。(使えそうな使えなさそうな・・・)
OpenFEMの情報有り難う御座います。少しググってみます。
0175octave for windows メモの筆者
2011/10/11(火) 10:17:19.15ttp://octave.1599824.n4.nabble.com/GNU-Octave-3-4-3-Released-td3890670.html
0176名無しさん@お腹いっぱい。
2011/10/11(火) 21:28:31.48毎度ありがとうございます。
目玉機能は何かあります?
(simulinkがついに出来たとか :-P )
0177octave for windows メモの筆者
2011/10/12(水) 16:12:10.66残念ながら喜ぶような機能の追加はなく,バグフィックスのようです。
3.4はこれでおしまいで,次は3.6になります。
GUIのインターフェースがつくかも知れませんが,はっきりとしません。
0178名無しさん@お腹いっぱい。
2011/10/12(水) 20:10:34.63あ、それは残念。
純正のOctave Workshopと、ネイティブEXCELリーダーが付けばいいなぁ。
0179octave for windows メモの筆者
2011/10/13(木) 11:33:00.99Octave-forgeのio packageである程度のことはできるようです。
私はつかったことがないのでよくわかりません。
ttp://octave.sourceforge.net/io/overview.html
>>純正のOctave Workshop
Qt BaseのGUIが検討されていてもしかしたら,3.6で実装
(たぶんExperimental)されるやもしれません。
Windows版については,最近活動がストップしているBenjaminさんに
変わる人が出てくればいいのですが。
私のスキル,体調,仕事上の都合でそこまでついていけないのが実情です。
0180名無しさん@お腹いっぱい。
2011/10/13(木) 13:02:18.29s=poly(0,"s")
sys=1/(1+s)
ってできますが
Octaveでは
sys=tf( [1] , [1 1] );
ですよね。
scilabみたいに記法する方法はないですかね?
0181octave for windows メモの筆者
2011/10/13(木) 17:08:44.70Octave 3.4に対応した
Octave-forgeのcontrol packageでは,
ttp://octave.sourceforge.net/control/function/tf.html
Exampleに
octave:1> s = tf ("s");
octave:2> G = 1/(s+1)
Transfer function "G" from input "u1" to output ...
1
y1: -----
s + 1
とあります。
Windowsの場合
ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#110906
こちらをご覧ください。
0182octave for windows メモの筆者
2011/10/13(木) 17:10:32.551
y1: -----
s + 1
が崩れて表示されていますね。すみませんm(__)m。
0183octave for windows メモの筆者
2011/10/13(木) 17:18:17.15何度もすみません。
****************************
Windowsの場合
ttp://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html#110906
こちらをご覧ください。
****************************
は
WindowsでOctave-3.4.2でcontrol packageなどのOctave-forgeを使いたい場合
ということです。舌足らずな説明ですみません。
0184名無しさん@お腹いっぱい。
2011/10/13(木) 23:33:20.68使ってみます。
ginputのバッティングなんかも解消できているといいのですが。
0185名無しさん@お腹いっぱい。
2011/10/14(金) 15:57:12.92OctaveのはMatlab互換なので馴れてしまえば後々で便利です
例えば化学の一次反応を
(d/dt)x=k(x0-x)
と置きましょう。xは反応量、x0は初期量、kは反応速度定数(毎秒)です。
式を展開すると
(1/k)(d/dt)x=x0-x
x0=(1/k)(d/dt)x+x
これをラプラス変換すると
X0=(s/k)X+X=(s/k+1)X
X0=((s+k)/k)X
伝達関数G(s)は(伝達関数はOutput/Input)
G(s)=X/X0=k/(s+k)
これを普通にラプラス逆変換すると
x/x0=k exp(-kt)
ですが、Octaveで計算すると、k=0.02 として
Octave:4> k=0.02; G=tf([k] [1,k],0);
Octave:5> [y,t]=step(G);plot(t,y);
であっさり描けてしまいます
時定数は1/k=1/0.02=50秒で、図でも50秒で1-exp(-1)=63%にまで上がってるはずです。
0186名無しさん@お腹いっぱい。
2011/10/15(土) 13:48:46.19>>180のヒトは
伝達関数G(s)は(伝達関数はOutput/Input)
G(s)=X/X0=k/(s+k)
で
Octave:4> k=0.02; G=tf([k] [1,k],0);
を
Octave:4> k=0.02; G=k/(s+k)
で書ければいいなぁ
って言っているんだと思います。
Octave3.4だと出来るのか。
0187名無しさん@お腹いっぱい。
2011/10/15(土) 14:33:56.65それはわかってるつもりなのですが
伝達関数は計算してから入れればいいという考え派なので
しかし制御の本がScilabばっかりなのは
伝達関数の計算なんかめんどい&scicos(5.2以降ならxcos)で制御を勉強したい
という人が多いのでしょうね
0188octave for windows メモの筆者
2011/10/17(月) 07:33:56.72>Octave3.4だと出来るのか。
正確にいうと最近のControl package でできるようになり,
それにはoctaveが3.4以上である必要があるということのようです。
ところで3.4.2 for winodws用のOctave-forge Packageが更新されました。
http://wiki.octave.org/wiki.pl?OctaveForWindows
を参考にしてください。Control package もバージョンが
あがっているようです。
0189名無しさん@お腹いっぱい。
2011/10/17(月) 20:24:04.79すいません。
http://octave.sourceforge.net/
のWindows installer (Octave and Octave-Forge)
の方は更新されないんですか?
0190octave for windows メモの筆者
2011/10/18(火) 08:54:52.33される見込みは,残念ながら今のところありません。
MaintainerのBenjamin Lindnerさんが5月ごろから,svnの作業ツリーやML
などから,姿を消しておられます。
私は,ビルドしかできないので3.4.2を自分のWebにのせたら,
Nitzan Araziさんが7zipによるアーカイブと octave-forge のパッケージを
(7 zip)作ってくださいました。
0191名無しさん@お腹いっぱい。
2011/10/19(水) 20:34:16.86変数xが負の値をとる場合にはゼロになるように条件を加えたいのですが
そういったことは出来るのでしょうか。
0192名無しさん@お腹いっぱい。
2011/10/20(木) 12:35:32.94数学的な工夫でできるかもしれませんが。すみませんがわかりません。
0193名無しさん@お腹いっぱい。
2011/10/21(金) 23:07:54.32Octave3.4.2_gcc4.5.2\share\octave\packages\control-2.1.54
の中身を見ているのですが、
tf2ss とか sysout とか、その変の関数がゴッソリと無くなっているのは
なんか理由があるんでしょうかね?
s=tf("s") で G=1/s , H = 1/(s^2+1) , GH=G*H
っていう記述が出来るようになったのは有りがたい反面、使い慣れた関数が
無くなっているのはちょっと寂しい。
(matlabにはあるのに)
0194名無しさん@お腹いっぱい。
2011/10/24(月) 20:16:09.57ないでしょう。たしかMaintainer が最近変わったようなので。
0195名無しさん@お腹いっぱい。
2011/10/24(月) 21:27:34.49tf2ssはssでイケルっぽい
0196octave for windows メモの筆者
2011/10/27(木) 07:58:32.39http://octave.1599824.n4.nabble.com/Mingw-Octave-3-4-3-binaries-for-testing-on-windows-Updated-td3942303.html
0197名無しさん@お腹いっぱい。
2011/10/29(土) 15:09:02.44communicationsを使いたいので、どなたか情報を持ってる方お願いします
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
■ このスレッドは過去ログ倉庫に格納されています