Octave - Matlab Tutorials
Courseraオンライン講座の機械学習コースを
直感的な理解を優先して、ゆるーく まとめてます。
正確には公式サイトを参照して下さい。
[MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2)
# Octave - Matlab Tutorials
## Basic Operations
Octaveの基本的な操作をまとめます。
コメントを書くときは % で始めます。
- 1 ~= 2: % !=のことで、等しくないことをチェック
- a = pi % πを代入
- disp( sprintf( '2 decimals: %0.2f', a)) % テキストのフォーマット出力
- format long % 以降、結果を長く表示
- format short % 以降、結果を短く表示。
* A = [ 1 2; 3 4; 5 6] % 配列を定義
- v = 1: 0.1: 2 % 1 から 2まで 0.1ステップで加算
* ones( 2, 3) % 2行3列 のすべてが 1の配列を作成
* 2*ones( 2, 3) % 上記行列を倍に
* w = zeros( 1,3) % 1行3列の、すべて0の行列を作成
* w = rand( 1, 3) % 乱数配列
* w = randn( 1, 3) % Gaussian乱数配列
- w = -6 + sqrt( 10)*(randn(1,10000)); % 10000個
- hist(w) % ヒストグラム表示
- hist(w,60) % ヒストグラム表示(詳細)
+ eye(4) % 単位行列
- help eye % ヘルプ表示
## Moving Data Around
使用頻度の高い処理をまとめます。
- A = [ 1 2; 3 4; 5 6]
- size(A) % 行列の大きさ
- size(A,1) % 最初の次元の大きさ
- length(v) % 最長の長さ
+ pwd % 作業ディレクトリ
+ cd % ディレクトリの変更
+ load [file] % ファイルの読み込み
+ who % 現在定義されている変数表示
- A( 3, 2) % Index 3行目 2列の値
- A( 2, :) % 2行目すべて
- A( :, 2) % 2列目すべて
- A( [1 3], :) % 1行目と3行目すべて
- A(:,2) = [10; 11; 12] % 2列目を入れ替える
- A = [A, [100; 101; 102]]; % A に列を追加
- A(:) % すべての項をひとつのベクターにする
+ B = [11 12; 13 14; 15 16]
+ [ A B ] % 結合
## Computing on Data
Octaveでの計算方法をまとめます。
- A = [ 1 2; 3 4; 5 6]
- B = [ 11 12; 13 14; 15 16]
- C = [ 1 1; 2 2]
+ A * C % 行列の積
+ A .* B % '.'ピリオド が付くと、対応するBの項目同士の積
- v = [1;2;3]
- log(v) % 項目ごとのlog
- exp(v) % 項目ごとのexp
- abs(v) % 項目ごとのabs
- V + oncs(length(v),1)
+ A' % 転置 transpose
+ max(A) % 最大値
+ [val,ind] = max( A) % 最大値とそのインデックスを保存
- A < 3 % 項目ごとの比較
+ A = magic(3) % 任意の配列作成
+ [r,c] = find(A >= 3) % 条件に会う行と、列を保存
- a = [1 15 2 0.5]
- sum(a) % 各列の加算
- prod(a) % products 積の計算
- floor(a) % 切り下げ
- ceil(a) % 切り上げ
- rand(3) % random 3x3
+ max( A, [], 1) % 列での最大値
+ max( A, [], 2) % 行での最大値
+ max(max(A)) %列、行最大値の統合
- A(:) % ベクトル化する
+ A = magic(9)
+ sum(A,1) % 各列の加算
+ sum(A,2) % 各行の加算
- A .* eye(9)
- A .* flipud(eye(9)) % 上下入れ替え
+ A = magic(3)
+ pinv(A) % 逆行列
+ pinv(A) * A
## Plotting data
Octaveでのデータのプロットをまとめます。
- t = [0: 0.01: 0.98];
- y1 = sin(2*pi*4*t);
- y2 = cos(2*pi*4*t);
+ plot(t,y1); % データのプロット
+ hold on; % プロットを保持
+ plot(t,y2,'r'); % データの上書きプロット
- close; % プロット画面を閉じる
+ figure(1); plot(t,y1); % Figure1プロット
+ figure(2); plot(t,y2); % Figure2プロット
- subplot(1,2,1); % 1行 2列画面の、1番目にアクセス
- plot(t,y1); % 上記設定位置にプロット
- subplot(1,2,2); % 1行 2列画面の、2番目にアクセス
- plot(t,y2); % 上記設定位置にプロット
+ axis([0.5 1 -1 1]) % データ表示範囲指定 x1 x2 y1 y2
- clf; % プロット内容消去
- A = magic(5);
- imagesc(A) % カラーモザイク表示
- imagesc(A), colorbar, colormap gray; % グレイスケール・モザイク表示
- a=1, b=2, c=3
## Control Statements for, while, if statement
for i=1:10,
v(i) = 2^i;
end;
indices=1:10;
for i=indices,
disp(i);
end;
i=1;
while true,
v(i) = 999;
i = i + 1;
if i == 6,
break;
end;
end;
### defining functions
独自関数を定義することが出来ます
## Vectorization
forループの代わりにベクトルで計算する方法
Comments
Post a Comment