Scilabはベクトルを簡単に扱う事ができます。行ベクトル、列ベクトル、行列と何でもござれですが、ここではもっぱら行ベクトルを扱います。
ベクトルを作る一番簡単な方法は、数を羅列することです。
-->a=[1 2 3 4 5]
a =
1. 2. 3. 4. 5.
また、差分が1の等差数列の場合は最初と最後の数を指定して作ることもできます。この場合、二つの数は:(コロン)で区切ります。
-->b=[9:13]
b =
9. 10. 11. 12. 13.
差分が1でない場合は、差分を二つの数の間に挟んでください。以下の例では13から9まで一つずつ値を減らす数列です。
-->c=[13:-1:9]
c =
13. 12. 11. 10. 9.
ベクトルの中の数を取り出すときには、ベクトル名の後に( )で包んでベクトル中のインデックスを与えます。なお、インデックスは1を基点とします。
-->c(1)
ans =
13.
また、特殊なインデックス、$(ダラー)は、ベクトルの最後の要素のインデックスを与えます。
-->c($)
ans =
9.
部分ベクトルを取り出すときには、その部分列のインデックスをベクトルとして与えます。たとえば、2番目から4番目までの値を部分ベクトルとして取り出したいときには、(2:4)を指定します。
-->c(2:4)
ans =
12. 11. 10.
-->c($:-1:1)
ans =
9. 10. 11. 12. 13.
上の最後の例は、ベクトルの要素を逆順に入れ替えます。
最後に、ベクトルの連結を行うには、単に二つのベクトルを並べたベクトルを作ります。
-->[a c]
ans =
1. 2. 3. 4. 5. 13. 12. 11. 10. 9.
これは、Scilabがベクトルをなるべくスカラーとして扱おうとしていることをよくあらわしています。
ベクトルとスカラーの演算は数式どおりです。
-->a
a =
1. 2. 3. 4. 5.
-->a+1
ans =
2. 3. 4. 5. 6.
-->a-1
ans =
0. 1. 2. 3. 4.
-->a*2
ans =
2. 4. 6. 8. 10.
-->a/2
ans =
0.5 1. 1.5 2. 2.5
ベクトル同士の演算は少し事情が違います。各々の要素の加減算は通常の+および-演算子を使って計算できます。
-->b
b =
9. 10. 11. 12. 13.
-->c
c =
13. 12. 11. 10. 9.
-->b+c // addition
ans =
22. 22. 22. 22. 22.
-->b-c // subtraction
ans =
- 4. - 2. 0. 2. 4.
しかし、要素同士の乗除算は、演算子 .* (ピリオドとアスタリスク)、 ./ (ピリオドとスラッシュ)を使って行います。
-->b.*c // multipling
ans =
117. 120. 121. 120. 117.
-->b./c // division
ans =
0.6923077 0.8333333 1. 1.2 1.4444444
ベクトルの内積は一挙動では計算できません。各要素の積とそれらの和を組み合わせて計算します。
-->a = [1:3]
a =
1. 2. 3.
-->b = [5:7]
b =
5. 6. 7.
-->sum(a.*b) // 内積
ans =
38.
convol関数を使うと、二つのベクトルから畳み込みを計算する事ができます。
-->h=[1:3]
h =
1. 2. 3.
-->x=[1:10]
x =
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
-->convol(h,x)
ans =
1. 4. 10. 16. 22. 28. 34. 40. 46. 52. 47. 30.