GNU Octave はプログラミング環境。 matlab 互換を目指している(?)ソフトウェア。
Ubuntu 9.04 では octave 3.0 が使える。
octave 3.0.0 / 3.0.1 で wavread が wav ファイルを読み込めない(ことがある)。
http://www-old.cae.wisc.edu/pipermail/bug-octave/2009-February/008042.html
Ver 3.2.2 が 22 July 2009 にリリースされている。
3.2.2 を build するのは面倒そうなので、 octave-3.2.2.tar.gz から scripts/audio/wavread.m を取り出して Ubuntu 9.04 の octave 3.0.1 から 呼び出したら一応動いている。
wavread と同じ機能の auload が octave-audio パッケージにある。
http://octave.sourceforge.net/audio/overview.html
インストールは sudo aptitude install octave-audio すればよい。
matlab の signal processing ツールボックスぽいものが octave-signal パッケージにある。
http://octave.sourceforge.net/signal/overview.html
インストールは sudo aptitude install octave-signal すればよい。
octave-signal を入れると specgram が使える。
[data, fs] = wavread('A01.wav'); specgram(data);
パッケージをインストールする際に octave3.0 と octave3.2 を選ぶことができる。
getwavlen.m に function があるとすると
octave -q --eval 'printf("%f", getwavlen("filename.wav"));'
のような感じで呼び出せる。
octave プロセスを起動するオーバヘッドが大きいので、 複数のファイルを処理したいときはバッチ処理の m ファイルを作る方がよさそうだ。
#!/bin/bash rm -f _do_make_wavlen.m for i in $( ls out/*.wav ); do n=`basename $i .wav` echo 'printf("'$n' %f\n", getwavlen("'$i'"));' >> _do_make_wavlen.m done octave -q _do_make_wavlen.m > _wavlen.txt
情報源 http://www40.atwiki.jp/gnuoctavejp/pages/16.html
インストール:
http://octave.sourceforge.net/
から
Octave-3.2.3-2_i686-pc-mingw32_gcc-4.4.0_setup.exe
をダウンロードして実行。octaveforge のオプションは全部を選択してみた。 (octave-audioやoctave-signalも入った)
コマンドプロンプトで動くアプリケーション。
edit hoge.oct を実行すると notepad++ が開く。
doc spegram などとやると info が動く。
a = -1:0.01:1; plot(a); などとやると gnuplot が動く。
since 2012-03-27
macports で
sudo port install octave octave-audio octave-signal
$ octave GNU Octave, version 3.2.4 Copyright (C) 2009 John W. Eaton and others. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type `warranty'. Octave was configured for "i386-apple-darwin10.8.0".
playaudio とか record とか試してみたが /dev/dsp を叩けないというエラー。
/usr/bin/afplay を呼び出すしかなさそう。 http://www.sonasphere.com/blog/?p=40
... 行継続 () 配列要素のインデックス付け、関数の呼び出し % コメント # コメント(matlabでは利用できない?) '' 文字列 "" 文字列
> A=magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 > A(4,2) ans = 14 > A(1:4,4) ans = 13 8 12 1 > sum(A(1:4,4)) ans = 34
線形インデックスで非連続要素に代入
> B=A B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 > B(1:3:16)=-10 B = -10 2 3 -10 5 11 -10 8 9 -10 6 12 -10 14 15 -10
キーワード end を使う
> B(1:3:end)=-20 B = -20 2 3 -20 5 11 -20 8 9 -20 6 12 -20 14 15 -20
行または列のすべての要素を指定する
> A=magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 > A(:,2) ans = 2 11 7 14 > A(:) ans = 16 5 9 4 2 11 7 14 3 10 6 15 13 8 12 1
ポイント
> A=[1 2 3;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9 > B=logical([0 1 0;1 0 1;0 0 1]) B = 0 1 0 1 0 1 0 0 1 > A(B) ans = 4 2 6 9
ちなみに logical() を使わないと?
> C=[0 1 0;1 0 1;0 0 1] C = 0 1 0 1 0 1 0 0 1 > A(C) error: subscript indices must be either positive integers or logicals.
論理インデックスの例
> A=rand(5,1) A = 0.24645 0.36111 0.79097 0.68693 0.58270 > B = A > 0.5 B = 0 0 1 1 1 > A(B)=10 A = 0.24645 0.36111 10.00000 10.00000 10.00000
これを省略するとこんな記法になる
> A=rand(5,1) A = 0.45720 0.42199 0.87452 0.92106 0.75541 > A(A>0.5)=10 A = 0.45720 0.42199 10.00000 10.00000 10.00000
論理インデックスの別の例
> A=magic(3) A = 8 1 6 3 5 7 4 9 2 > B=isprime(A) B = 0 0 0 1 1 1 0 0 1 > A(~B)=0 A = 0 0 0 3 5 7 0 0 2 > find(B) ans = 2 5 8 9
ちなみに find() は非ゼロの値を探して、そのインデックスを行列にして返す。
ところで最初の例で代入しないで A(B) だと??
> A=rand(5,1) A = 0.934888 0.094090 0.864036 0.473364 0.015756 > B=A>0.5 B = 1 0 1 0 0 > A(B) ans = 0.93489 0.86404
http://www.inaba-lab.org/modules/bwiki/index.php?Octave%C6%FE%CC%E7
http://en.wikibooks.org/wiki/MATLAB_Programming/Plot
> h = figure; > x = [0:0.001:10]; > y=sin(x); > title('sine wave') > plot(x,y) > print(h,"test.eps","-deps2") % 下記でもよい > print -deps2 test2.eps
help print すると説明が出てくる。
print() の最初の引数 h を省略すると current figure になる。
matlab だとfigureのハンドルを saveas すればよい。
ラベルのフォントの大きさを変える:
> xlabel('xlabel','fontsize',20);
軸のフォントの大きさを変える:
> h = figure; > a = axes(); > set(a,'fontsize', 30);
横軸を sec. にして音声波形を plot する。
[Y,FS] = wavread("filename.wav"); X=(1:length(Y))/FS; plot(X,Y);
> subplot(2,1,1); plot(Speech) > subplot(2,1,2); plot(Noisy_Speech)
Ubuntu 9.04 の emacs-snapshot にて ~/.emacs.el に下記を追加。
参考 http://blog.livedoor.jp/rakkyoo/archives/1883260.html
;; octave mode (autoload 'octave-mode "octave-mod" nil t) (setq auto-mode-alist (cons '("\\.m$" . octave-mode) auto-mode-alist)) (add-hook 'octave-mode-hook (lambda () (abbrev-mode 1) (auto-fill-mode 1) (if (eq window-system 'x) (font-lock-mode 1))))
ファイルに書かれたコマンドをバッチで実行するには
source "myscript.m"
あるいは
myscript
で実行できる。
ちなみに load はデータを変数に読み込むコマンド。
require とか include とか import とかいうコマンドはない。
カレントディレクトリの概念がある。
> pwd > dir > cd
wavread("sample.wav") などはカレントディレクトリでファイルを探す。
<html>
<hr>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/095461206X/r4wh-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41ai44OhCDL._SL160_.jpg" alt="GNU Octave Manual Version 3" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/095461206X/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">GNU Octave Manual Version 3</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/095461206X/r4wh-22/ref=nosim/" title="GNU Octave Manual Version 3" target="_blank">amazlet</a> at 10.12.23</div></div><div class="amazlet-detail">John W. Eaton David Bateman Soren Hauberg <br />Network Theory Ltd <br />売り上げランキング: 10978<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/095461206X/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<hr>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4563067369/r4wh-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/418GWA7BSRL._SL160_.jpg" alt="MATLABマルチメディア信号処理〈下〉音声・画像・通信" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4563067369/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">MATLABマルチメディア信号処理〈下〉音声・画像・通信</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4563067369/r4wh-22/ref=nosim/" title="MATLABマルチメディア信号処理〈下〉音声・画像・通信" target="_blank">amazlet</a> at 10.12.23</div></div><div class="amazlet-detail">池原 雅章 真田 幸俊 島村 徹也 <br />培風館 <br />売り上げランキング: 386059<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4563067369/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
<hr>
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4563067350/r4wh-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://images-jp.amazon.com/images/G/09/icons/books/comingsoon_books.gif" alt="MATLABマルチメディア信号処理〈上〉ディジタル信号処理の基礎" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4563067350/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">MATLABマルチメディア信号処理〈上〉ディジタル信号処理の基礎</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4563067350/r4wh-22/ref=nosim/" title="MATLABマルチメディア信号処理〈上〉ディジタル信号処理の基礎" target="_blank">amazlet</a> at 10.12.23</div></div><div class="amazlet-detail">池原 雅章 島村 徹也 <br />培風館 <br />売り上げランキング: 578136<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4563067350/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div>
</html>