simulinkでの行列の足し算

5 ビュー (過去 30 日間)
yuta maruyama
yuta maruyama 2020 年 7 月 28 日
回答済み: Naoya 2020 年 7 月 31 日
simulink上でM行1列の行列(列ベクトル)信号と、M行N列の行列信号の足し算をしたいです。 例えば、 [1; 2]+[1 2 3; 4 5 6]=[2 3 4; 6 7 8] のような結果を得たいのですが、Sumブロックではうまくいきませんでした。 代替の手段はありませんか?
ただし、別で用意した行列を使って無理矢理次元を合わせるような手段は取りたくないです。 また、Matlab Functionのような処理に比較的時間のかかるブロックも使いたくないです。

採用された回答

Naoya
Naoya 2020 年 7 月 31 日
Simulinkでは、 MATLABプログラミングでサポートされる暗黙的拡張機能 (片方がベクトルでもう片方が行列の2変数に対して演算を行う場合に、ベクトル側を行列に暗黙的に拡張してから行列演算する機能) をサポートしておりません。
ご面倒ですが以下2方法についてご検討いただけますでしょうか?
(1の方がシンプルだと思います)
1. 列ベクトル と ones(1,n) を行列積して事前に明示的に行列へ拡張する
[1;2] * [1,1,1] で [1 1 1;2 2 2] に拡張できますので、その後 [1 2 3;4 5 6] と要素ごとの足し算をします。
2. MATLAB Function を使う。
但し、MATLAB Function を使っても 暗黙的拡張をサポートしていないので、 bsxfunを使って演算します。
<参考>

その他の回答 (0 件)

タグ

Community Treasure Hunt

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

Start Hunting!