前回は数値計算パレットの中のブロックを練習してみました。いずれもスカラー値に対する操作でした。しかし、Xcosは「細い線一本」で接続していても、その中にベクトルとか行列とかを載せて「流通」させることができるみたい。今回は配線の上に載っているベクトルを処理するモノどもを使ってみん、と(ここには割り算あるけど使ってない。)
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11のパソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。
Scilab 2024.0.0
ベクトルの初期化
Scilab環境であれば、下のようにすればベクトルを定義することは簡単。
a=[1 2 3]
XcosにはScilabの変数を「輸入」できたりするのでベクトル値の導入もできるハズ。しかしXcos内だけでスカラー値を集めてベクトルにできないの?できます、ということでやってみました。こんな感じ。
まだ練習していない「ルーティング」のパレットの中のMUXを使ってみたのですが、上のようにMUXの入力にスカラー値を並べていれればMUXの出力はその要素数のベクトルとなるみたい。上記は変化するパルス信号源が含まれてますが、定数ブロックにすれば完全固定のベクトルにもできます。
今回のフロー
今回のフローが以下に。上記で述べたようにMUXの出力は線一本ですが、3要素のベクトルが載っています。MUXの下流にあるモノドモはそのベクトルに対して作用します。ベクトルを処理する中のΣ記号はSummationブロックです。一方、一番下にあるΣ記号のブロックはBIGSOM_fブロックです。見た目は同じΣですが、ちょっとSummationとは「味付け」を変えてます。
-
- MINブロック
一番上のMINブロックは到来したベクトルの中の最小値をとりだすブロックです。MINあればMAXあり、ということでありますが、疲れるので省略。
-
- SUMMATIONブロック
上の方のΣ記号はSUMMATIONブロックです。その設定が以下に。
上記では入力ポートを1個としているので、ポートに到着するのはベクトルを想定。その総和を求めて下流に出力します。複数ポートを持たせれば、ベクトルだけでなくスカラにしたり、符号反転(引き算)もできるみたい。
-
- PRODUCTブロック
上記のΣが総和であれば、こちらのΠは総積です。入力ベクトルの要素を全て掛け合わせるもの。こちらもフローでは入力ポートを1個としていますが、複数ポートを持たせれば2つめのポートを「÷」入力とすることもできるみたい(やってないけど。)
-
- BIGSOM_fブロック
上記では、3つの入力ポートを作って、それぞれにスカラー値を受け入れているのですが、それぞれの入力にウエイト1.5、2.5、3.5などという値を乗じてから総和を求めてます。便利?
シミュレーション結果
上記フローのシミュレーション結果が以下に。なお下のパルスブロックの設定はデフォルト(デューティ30%、振幅1)ですが、上のパルスブロックの設定はデューティ50%、振幅2.5になってます。
前回同様ペコペコしているけど、今回のはベクトルを処理した結果だから。それがどうした。