Octaveで行列から小行列を作る

英語で小行列はminorというらしい。
行列a(m,n)があって、1≦m≦M、1≦n≦Nのうち、1≦m≦M1、1≦n≦N1を取り出すことを考えます。但し、M1≦M、N1≦N。で、その小行列をbとすると、

> b = a (1:M1, 1:N1);

詳しくは「続きを読む」で。
例えば、


  A=\left(\array{11 & 12 & 13 & 14 & 15 \\ 21 & 22 & 23 & 24 & 25 \\ 31 & 32 & 33 & 34 &35 \\ 41 & 42 & 43 & 44 & 45 \\ 51 & 52 & 53 & 54 & 55}\right),

という行列のうち1から4までの正方行列を小行列を取ってきたいときは、

octave:58> a = [11, 12, 13, 14, 15; 21, 22, 23, 24, 25; 31, 32, 33, 34, 35; 41, 42, 43, 44, 45; 51, 52, 53, 54, 55]
a =

  11  12  13  14  15
  21  22  23  24  25
  31  32  33  34  35
  41  42  43  44  45
  51  52  53  54  55

octave:59> b = a (1:4, 1:4)
b =

  11  12  13  14
  21  22  23  24
  31  32  33  34
  41  42  43  44

なんていうふうにします。
ここで、:(コロン)は再帰的に数を増やす的な意味で、

> 1:4
  1  2  3  4

とかなります。
ということで、1:4で、1から4まで1つずつ増やすということになります。:だけだと最初っから最後までということになるんだろうと思ってみます。その他、色々とこういうのを組み合わせると行列の操作が流麗にできると思う。多分for分とかif文とか、要らない。C言語的にやりたければそれでもいいんだけど、それだとOctaveの楽さが生きてこないし、多分、遅い。