2016-11-29 5 views
0

の行列Aとベクトルy = [y1,y2,...,yn]を持っています。MATLABの行列とベクトルから3次元行列を作成する

サイズp x p x nの3次元マトリックスを作成することです。すなわち、のサイズののバンドが含まれています。各バンドの作成方法

?:

各バンドはyで一つの値を乗じた行列Aに等しいです。たとえば、最初のバンドはA * y1、2番目のバンドはA * y2です。一方、バンド番号iは、i = 1, ..., nA * yi

となります。これはforループを使って簡単に行うことができますが、これは計算が簡単で費用がかかります。 forループの使用を防ぐにはどうすればよいですか? 3-Dマトリックスを直接作成できる非常に高速な自動メソッドはありますか?

ご協力いただきますようお願い申し上げます。

答えて

2

bsxfunを使用して、p x pの行列にyの各値を掛けることができます。我々は、y1 x 1 x nになるように再構成しなければならないが、乗算によって第3の次元が生成される。あなたは(MATLABが暗黙の放送を導入しました)R2016b以降にしている場合、あなたは、単に.*

out = A .* reshape(y, 1, 1, []); 
+0

bsxfunを置き換えることができ

out = bsxfun(@times, A, reshape(y, 1, 1, [])); 

は):)親愛なるありがとうございました – Christina

関連する問題