Edited at

Octaveの書式

Stanford大CourseraのMachine Learningを受講することにしました。コース全11週中、第2週目以降、行列による機械学習の計算式を、Octaveという言語で実際に計算して行くことになります。Octaveはアルゴリズムの試作を迅速に行うのに適しており、結果的に開発時間の短縮につながるといわれています。Octaveの書式について、メモしておきます。


行列を扱う

r = [1 2 3 4] または [1, 2, 3, 4]

#行ベクトル

c = [1; 2; 3; 4]
#列ベクトル

m = {1 2; 3 4]
#2*2行列

A * B
#通常の行列の積。

A .* B
#通常の行列の積ではなく、各行列における同位置の数値の積を返す。

A .^2
= A .* A

A'
#行列変換

max(A)
#行列Aの最大値を含む行

magic(3)
#1-9の要素からなる3*3の行列

sum(a)
#1行行列aのgroup合計

prod(a)
#最大値

floor(a)
#小数切り捨て

ceil(a)
#小数切り上げ

rand(3)
#0.0-1.0の一様乱数からなる3*3の行列

randn(3)
#正規分布に従った乱数からなる3*3の行列

max(A, [], 1)
#各列の最大値からなる1行行列 =max(A)

max(A, [], 2)
#各行の最大値からなる1列行列

A(:)
#各列を縦に並べた1列行列

sum(A,1)
#各列の合計からなる1行行列

sum(A,2)
#各行の合計からなる1列行列

eye(9)
#9*9の単位行列(左上から右下に向け斜めに1が並ぶ)

flipud(A)
#列を右から並べ替える

pinv(A)
#行列Aの要素を正規化


プロットする

plot(t,y);

#t,yの関係をplotする

plot(t,y1);
hold on;
plot(t,y2,'r')
#y1のグラフにy2のグラフを赤色で重ねる

xlabel('time')
#x軸のラベルをtimeにする

legend('sin','cos')
#グラフ凡例

title('my plot')
#グラフのタイトル

print -dpng 'myPlot.png'
#cdにグラフ画像をファイルにする

figure(1);plot(t,y1);
#y1のグラフをfig1とする

subplot(1,2,1);
plot(t,y1);
subplot(1,2,2);
plot(t,y2)
#グラフを横に並べて表示、それぞれのグラフを指定

axis([0.5 1 -1 1])
#x, yの範囲を指定

imagesc(A)
#行列の値を色で表現する

A(1,2)
#行列Aの(1,2)の値

v=zeros(10,1)
#10行1列、要素は全てゼロ


for文、while文、if文、ほか

for i=1:10,

v(i)=2^i;
end;
v
#10行1列の各要素を2^iで定義

for i=1:10,
disp(i);
end;
#各iについてそのままiを表示する、1-10が縦に並ぶ

indices=1:10;
indices
#1-10が10行1列の行列として表示される

i=1;
while i<=5,
v(i)=100;
i=i+1;
end;
#iが1-5の間v(i)=100

pwd
#current directory表示

cd
#cdを指定、実行ファイル(.m)のある場所

addpath('c:----')
#pathを加える、current directoryの位置に関わらず実行可能になる