今回のものはかなりネタ的なものです。あまりマジでツっこまれても困ります。
最近、10進数から2進数への変換(逆も)が必要になりました。
Communications Toolboxにそのものズバりなブロック(Integer to Bit Converter)があるのですが、この一つのブロックのためだけにToolboxを使うのもなーなんて考えて作ってみたものです。
Simulink上で2進数はベクトルで表現します。上位ビットのindexが1とちょっとこんがらがりますが、見た目的には分かりやすいかも。
考え方は以下の通りです:
まず、もとの数を2で割った剰余が最下位ビットになります。商の2の剰余が次のビットになります。これを繰り返すだけです。
今回欲しかったのは最大8ビットだったので、まあループを使うまでもなくベタ書きしました。かなりダサいです。 ループを使う場合はメモリーブロックなどで一回前のループでの値を覚えておく必要があります。
参考: Simulink上で、10進数の信号を2進数のビット列として変換するにはどうすればよいですか?
逆もダサく書きました。
各ビットと2のn乗とのかけ算を足すだけです。