simulinkでの行列の足し算

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

Réponse acceptée

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

Plus de réponses (0)

Catégories

En savoir plus sur Simulink dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!