私は次のマトリックスを持っています:
X=1 2 3
A=1 2 3
4 5 6
7 8 9
私はやってみたいです
for each (i,j) in A
B(i,j) = sum(A(i,j)*x)
つまり、Aの各要素にベクトルXを掛けて、そのベクトルの3つの要素すべてを合計します。
forループなしで実行できますか?
私は次のマトリックスを持っています:
X=1 2 3
A=1 2 3
4 5 6
7 8 9
私はやってみたいです
for each (i,j) in A
B(i,j) = sum(A(i,j)*x)
つまり、Aの各要素にベクトルXを掛けて、そのベクトルの3つの要素すべてを合計します。
forループなしで実行できますか?
おそらくこのようなもの?
B = A.*sum(X)
編集@HighPerformanceMarkが指摘しているように、単純にの合計を掛けることができます。X
これは明らかに好ましいことです。以下は、あなたがやりたかったステップを正確に実行するソリューションです。これにより、問題の非線形バリアントに対して私のソリューションが役立つ可能性があります。
1 x X
1 x 3の配列に変換し、それをAで乗算して、3 x 3 x 3の配列を取得し、3次元に沿って合計することができます。
X = permute(X,[1,3,2]); %# make X 1*1*3
B = sum( bsxfun(@times, A, X), 3); %# multiply and sum