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

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

Réponses (1)

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

Catégories

En savoir plus sur Simulink Function dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!