前提
Couseraの「Machine Learning」を受講していた。
講義の課題に Octave という言語を用いるが、文法がよくわからない。
そこで、書き方などをメモ代わりに残そうとしたものである。
文法
行列にones(m×1ベクトル)を加えたいとき
X = [ones(m,1), X];
答えのデータを0,1に直したいとき
(例 手書きの文字の判別したい、
y(答えデータ)は2,4,1…など一桁の数で5000×1ベクトル、Y(欲しい行列)は0,1で表された5000×10行列)
Y = zeros(m,num_labels); % 5000 x 10
for i = 1:m
Y(i,y(i)) = 1;
end
① 最初に入れ物をつくる(欲しい行列の全要素が0であるもの)
② Yの1行ごとにyと対応する列に1を当てはめる
③ ②を5000行まで繰り返す
ベクトルに要素を追加したいとき
a = []; # 入れ物を作成
a = [a ; 2] # a = [2]
a = [a ; 3] # a = [2;3] 2×1ベクトル行列において、各列(行)を足し合わせてベクトルにしたいとき
例)3×2行列(a)を3×1にしたい
sum(a,2)
行を1つにしたい(縦に縮めたい)ときは sum(a,1)
列を1つにしたい(横に縮めたい)ときは sum(a,2)ベクトルの中で最小の値と番号を求める
[value, idx] = min(vecotr)
find関数の使い方
find(v == 3)
ベクトルvの中で、3の値の番号を探す