ブロックを積みながら(157) Scilab/Xcos、行列(Matrix)パレットその2

Joseph Halfmoon

前回は行列の変形、抽出、転置といった操作を練習しました。今回は行列の「連結」に加えて「計算」に入りたいと思います。まずは掛け算と足し算から。ただね、数学で習う行列の積とか和とか「ピュアな演算」もできるのだけれども、「実務上必要そう」なクセのある計算もあり。別パレットのブロックも持ってこないといけないこともあり。

※「ブロックを積みながら」投稿順 index はこちら

※動作確認にはWindows 11のパソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。

Scilab 2024.0.0

行列の連結

行列の連結は、2つ以上の行列を入力にとって、水平方向または垂直方向に連結し1個の行列にして返すもの。当然ですが水平に連結するときは行数がそろっている必要があり、垂直なときは列数がそろってないとなりまへん。以下は1行2列の行列2つをとって、水平と垂直に連結したものHorizVertCat

これで連結も自由自在だ、と。ホントか?

行列積

数学で言う行列の積は、m行n列の行列をn行l列の行列に左から掛けるもの。以下の例では2x2行列を2x1行列(列ベクトル)に乗じております。結果は再び2x1行列(列ベクトルね。)matmul

黄色のマーカで示しましたが、上記設定は1番の「普通の」行列積です。2番には要素毎の積があり、3番にはスカラー倍もあります。この1個のブロックで3通りに使えるわけです。この3個の「ルール」により出力される行列のサイズは変化するっと。

なお今回左から掛けている2x2の行列は平面上でベクトルを90°左回転させる一次変換です。

行列の和(加算)

加算に関しては行列パレットに以下の2個のブロックが存在しますが、いずれも入力は一つだけです。

    • CUMSUM — Cumulative Sum
    • MATSUM — Sum of Matrix’s Elements

上記の2つとも「行列1つの内部での加算」です。

まずはCUMSUMから。cumsum

CUMSUMの場合、入力された行列のサイズと出力されるサイズは変化しないです。ただ「指定の方向」にSUMをとってその結果を末尾に置くという操作になるようです。上記は行方向にSUMをとってね、の場合。

一方、MATSUMの場合、SUMとった方向に行列は「潰れて」サイズが変化します。以下は列方向にSUMとってね、と指定したので、列が潰れて1列になってます。matsum

するってえと何かい、一番フツーな要素毎に和をとる計算が無いじゃないの。というと、行列パレットでなく、既に練習済のパレットにありました。Σ印でお馴染みのSUMMATIONブロックです。summation

SUMMATIONブロックは、スカラーだけでなく、ベクトル、行列なんでも受け入れてくれるのでこれに行列を突っ込めば要素毎の和をとることができました。

掛け算と足し算はできた。まだ先は長いな。

ブロックを積みながら(156) Scilab/Xcos、行列(Matrix)パレットその1 へ戻る

ブロックを積みながら(158) Scilab/Xcos、行列(Matrix)パレットその3 へ進む