Simulinkで2​つのint16データ​を上位ビット下位ビッ​トとして結合して32​bitデータとして出​力する方法について

simulinkにて2つの符号付きint16データがあり一方を上位ビット、他方を下位ビットとして結合し32bitデータとして出力したいのですが、方法が分かりません。方法の分かる方、ご教示いただけますでしょうか?
今のところ上位ビットのint16に2^16を乗算してint32として下位ビットと足し合わせて32bitデータとして出力を試みていますが、上位ビットのデータが正しく格納されず困っております。
MATLAB/SimulinkのバージョンはR2021bになります。

回答 (1 件)

Toshinobu Shintai
Toshinobu Shintai 2023 年 9 月 15 日

1 投票

MATLAB Functionブロックを使うのが一番手っ取り早いかと思います。"typecast"コマンドを使って、以下のようにモデリングできます。
MATLAB Functionブロックの中身は以下の通りです。
function concatenated_num = fcn(upper, lower)
%%
upper_unsigned = typecast(upper, 'uint16');
lower_unsigned = typecast(lower, 'uint16');
%%
concatenated_num = uint32(lower_unsigned) + ...
bitshift(uint32(upper_unsigned), 16);
end

カテゴリ

製品

リリース

R2021b

質問済み:

2023 年 9 月 15 日

回答済み:

2023 年 9 月 15 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!