Simulink上で、10進数の信号を2進数のビット列として変換するにはどうすればよいですか?
24 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2013 年 10 月 25 日
回答済み: MathWorks Support Team
2013 年 10 月 25 日
Simulink上で、10進数の信号を2進数のビット列として変換するにはどうすればよいですか?
採用された回答
MathWorks Support Team
2013 年 10 月 26 日
Communications Blocksetのブロックを使用する方法と、Simulinkの基本ブロックを使用する方法と2通り紹介します。
1. Communications Blocksetのブロックを使用する場合
Integer to Bit Converterブロック(Communications BlocksetのUtility Blocksライブラリにあります)を用いると、10進数を2進数のデータ列へ変換できます。Integer to Bit Converterブロックを用いたモデル(4ビット入力)の様子を以下に示します。
2. Simulinkの基本ブロックを使用する場合
一例として、For Iteration Subsystemブロックを使用してモデリングする方法があります。ページ下部のサンプルモデルをダウンロードすることができます。
(サンプルプログラム:int2bit.mdl )
(注意)ファイルのダウンロードはダウンロード対象のリンクを右クリックし「対象をファイルに保存」を選択してダウンロードを行ってください。
下図に示すサンプルモデル内の水色のサブシステム(Interger2Bit Convertorブロック)が、10進数から2進数へ変換するブロックです。ブロックをダブルクリックすると、ビット数を指定するウィンドウが起動します。
ここでサブシステムはマスク化されており、内部は次のようにモデリングされています。
上のモデル例では次のフローで10進数から2進数列に変換しています。
「13」 と 「2^3」 を比較 13 ≧ 2^3 を満たすので 「1」 を出力
mod(13,2^3) を計算 ⇒ 剰余 5
「5」 と 「2^2」 を比較 5 ≧ 2^2 を満たすので 「1」 を出力
mod(5,2^2) を計算 ⇒ 剰余 1
「1」 と 「2^1」 を比較 1 ≧ 2^1 を満たさないので 「0」 を出力
mod(1,2^1) を計算 ⇒ 剰余 1
「1」 と 「2^0」 を比較 1 ≧ 2^0 を満たすので 「1」 を出力
なお、本サンプルモデルは、フレームベース信号には対応しておりませんので、ご注意ください。
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!