適当にざっくり練習メモ
3x2 matrix をつくる
> A = [1 2; 3 4; 5 6] A = 1 2 3 4 5 6
matrix のサイズを確認
> size(A) ans = 3 2
サイズ自体もマトリクスで表現されているので、サイズのサイズを確認すると、1x2 のマトリクスであることがわかる
> size(size(A)) ans = 1 2
つぎのようにすると、行数と列数のそれぞれの大きさを取得できる
> size(A,1) ans = 3 > size(A,2) ans = 2
Vector の長さは次のようなかんじで取得できる
> v = [1 2 3 4] v = 1 2 3 4 > length(v) ans = 4
Octave の中でも、つぎのようなUNIXコマンドが使える
pwd cd ls
データのロードの方法。
たとえば、つぎのようなテキストファイルを用意する。
octave_practice_sample_data01.txt
1 2 3 4 5 6 7 8 9 10
これをロードするには、ファイルがあるディレクトリまでいって、次のコマンドを実行する
load ファイル名
> load octave_practice_sample_data01.txt
who コマンドを実行すると、今どのようなデータがメモリ上にあるかがわかる。
octave_practice_sample_data01 があることを確認。
> who
Variables in the current scope:
A t y
ans v z
octave_practice_sample_data01 x
whos でより詳細な情報を取得できる。
> whos Variables in the current scope: Attr Name Size Bytes Class ==== ==== ==== ===== ===== A 3x2 48 double ans 1x1 8 double octave_practice_sample_data01 10x1 80 double t 1x1 8 double v 1x4 32 double x 1x1 8 double y 1x1 8 double z 1x1 8 double Total is 25 elements using 200 bytes
実際に octave_practice_sample_data01 の中身を見てみる
> octave_practice_sample_data01 octave_practice_sample_data01 = 1 2 3 4 5 6 7 8 9 10
clear のあとに変数名でデータを消すことができる。
clear 変数名
> clear t v x y z > who Variables in the current scope: A ans octave_practice_sample_data01
つぎのようにすることで、1から3個までのデータを取得することができる
> v = octave_practice_sample_data01(1:3) v = 1 2 3
データは次のようにして保存できる。
save ファイル名 保存したい変数名;
save hello.mat v
保存したデータは次のようにしてロードすることができる。
load ファイル名
> clear % データを全部消す > who % 何もデータがないことを確認 > load hello.mat % データをロード > whos Variables in the current scope: Attr Name Size Bytes Class ==== ==== ==== ===== ===== v 3x1 24 double Total is 3 elements using 24 bytes
ちなみに、データはデフォルトではバイナリ形式で保存されるため、読むことのできる形で保存する場合は、-ascii オプションをつける。
(と授業で習ったんだけど、ぼくの環境では、デフォルトでもバイナリで保存されているわけではなさそう)
save hello2.mat v -ascii
ここからマトリクスの計算をざっくり駆け足で。
特定の行、列の値を取得。
A(3,2) でマトリクスAの3行, 2列 めの値を取得できる
> A = [1 2; 3 4; 5 6] A = 1 2 3 4 5 6 > A(3,2) ans = 6
n行目の値すべてを取得したい場合は、A(n,:) といったように書く。
> A A = 1 2 3 4 5 6 > A(2,:) ans = 3 4
n列目の値すべてを取得したい場合は、A(:,n) といったように書く。
> A A = 1 2 3 4 5 6 > A(:,2) ans = 2 4 6
n行目とm行目の値すべてを取得したい場合は、A([n m],:) といったように書く。
> A A = 1 2 3 4 5 6 > A([1 3], :) ans = 1 2 5 6
データを代入することももちろんできる
マトリクスAの2列目の値を入れ替えたい場合は、つぎのようにかける
> A A = 1 2 3 4 5 6 > A(:,2) = [10; 11; 12] A = 1 10 3 11 5 12
また、つぎのようにすると、列を追加できる
> A A = 1 10 3 11 5 12 > A = [A, [100; 101; 102]] A = 1 10 100 3 11 101 5 12 102
つぎのようにすると、行を追加できる
> A = [A; [7 13 103]] A = 1 10 100 3 11 101 5 12 102 7 13 103
A(:) とすると、Aをひとつのベクターとして返す
> A A = 1 10 100 3 11 101 5 12 102 7 13 103 > A(:) ans = 1 3 5 7 10 11 12 13 100 101 102 103
まとめると、マトリクスへの行または列の追加はつぎのようなかんじ
> A = [1 2; 3 4; 5 6] A = 1 2 3 4 5 6 > B = [11 12; 13 14; 15 16]; > [A B] ans = 1 2 11 12 3 4 13 14 5 6 15 16 > [A;B] ans = 1 2 3 4 5 6 11 12 13 14 15 16