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