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

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

回答(1 个)

Toshinobu Shintai
Toshinobu Shintai 2023-9-15
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

类别

Help CenterFile Exchange 中查找有关 Simulink Function 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!