0

私は次のマトリックスを持っています:

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ループなしで実行できますか?

4

2 に答える 2

6

おそらくこのようなもの?

B = A.*sum(X)
于 2012-08-22T12:00:55.490 に答える
1

編集@HighPerformanceMarkが指摘しているように、単純にの合計を掛けることができます。Xこれは明らかに好ましいことです。以下は、あなたがやりたかったステップを正確に実行するソリューションです。これにより、問題の非線形バリアントに対して私のソリューションが役立つ可能性があります。

1 x X1 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
于 2012-08-22T12:01:34.280 に答える