simulinkでの行列の足し算

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

Accepted Answer

Naoya
Naoya on 31 Jul 2020
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を使って演算します。
<参考>

More Answers (0)

Categories

Find more on コード生成 in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!