前回で「ブロック多過ぎ」行列パレットを切り上げ先に進めました。進めた先は「整数パレット」です。地味、とっても地味。しかしまあ、無いと困る場合もあるのでこの辺で練習しておきます。ただね、Scilab/Xcosの基本は実数型です。複素数型も結構簡単に扱えるけれども、地味な整数の方は扱いがメンドクセーです。
※「ブロックを積みながら」投稿順 index はこちら
※動作確認にはWindows 11のパソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。
Scilab 2024.0.0
整数(Integer)パレット
Integerパレットの全貌が以下に。「整数」を対象に処理を行うことができるブロックどもが集められてます。その半分くらいは電子工学(デジタル)向け?なブロックだったりもしますが。
今回は、上記のパレットから以下のブロックについて練習してみます。
-
- CONVERT — Data Type Conversion
- BITCLEAR — Clear a Bit
- BITSET — Set a Bit
- EXTRACTBITS — Bits Extraction
- INTMUL — Integer matrix multiplication
練習に使用したフローは以下です。
左上の正弦波ブロックがテストデータの発生源です。振幅300、位相0、周波数1Hzの正弦波(勿論double型)を発生してくれます。設定はこんな感じ。
CONVERT
最初にやってみるのは、実数正弦波を整数に、そして整数を再び実数に戻して表示してみることです。まずは実数から整数(符号無8ビット)への変換が以下に。
整数といって一種類である筈もなく、符号付、符号無の両方で32ビット、16ビット、8ビット幅の3種類が使えるみたいです。また変換先の型から溢れる事態がままある筈なので、その時の処理の指定も必須。上記ではサチュレーション(飽和)を指定してます。
こうして実数正弦波を符号無8ビット整数にし、再び実数波形に戻したものが以下に。
符号無に押し込めたので、マイナス側はバッサリ0に飽和してます。そしてプラス側のピークも255のところで飽和。
BITCLEAR
符号無8ビット整数の最上位ビット7を無条件にゼロクリアしています。その結果が以下に。
サチュレーションのようなスムースなものにはならず、128のところでばっさりやってつぎはぎした波形が得られました。当たり前か。
BITSET
実験したBITSETの設定は以下です。
こんどは符号無8ビット整数の最上位ビット7を無条件に1に立ててます。その結果が以下に。
当然得られたのはBITCLEARの時の波形に「128ゲタを履かせた」波形です。
EXTRACTBITS
入力される符号無8ビット整数の下4ビットを取り出してます。結果が以下に。値が良く読めんな。。。
INTMUL
最後は符号無8ビット整数同士の掛け算です。掛けるのは固定値「4」です。設定が以下に。
当然だけれども、もとの波形で64以上の値のところから上はサチってます。結果、ほぼほぼ矩形波みたいな見た目に。ショウガナイ。