データ解析ツールoctaveを語ろう Part 2
■ このスレッドは過去ログ倉庫に格納されています
知る人ぞ知る強力なデータ解析ツール octave ... unixを科学研究で使っている香具師には非常に心強い味方のはずだ。 matlab互換を主張しながら、微妙にバージョンアップを続ける octaveについて語ろう。 そのPart 2です 前スレ データ解析ツールoctaveを語ろう http://pc12.2ch.net/test/read.cgi/unix/1086016412/ >>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があるからいらないけどな。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる