2013-10-04 74 views
0

我需要乘以一個RowVector的Vector來得到一個Matrix作爲結果。但是F#庫對於*運算符沒有這樣的實現。我怎樣才能做到這一點?F#矢量rowvector乘法問題

//wj(t+1)=wj(t) - a * (yk-dk)* xjk 
let weightsDeltaRule (w : matrix, x : vector, y : vector, d : vector) (a : float) = 
    let delta = y - d 
    w - a * (Vector.transpose x) * delta 

UPD:

vector<'T> * rowvec<'T> -> matrix<'T> 
rowvec<'T> * vector<'T> -> 'T 
+0

兩者我不熟悉F#向量和矩陣,但分別使用矩陣乘法我會建議把兩個向量到矩陣與一列一列,然後。 –

+0

@Mark:我認爲矢量比單列矩陣更合適...... –

+0

根據約翰的回答,我不需要我的建議。 –

回答

2

爲什麼你覺得動力單元沒有實現Vector * RowVector = Matrix

matrix.fsi

/// Multiply a column vector and a row vector to produce a matrix 
static member (*) : Vector<'T> * RowVector<'T> -> Matrix<'T> 
+0

奇怪的問題...矢量* rowvec - >矩陣,但rowvec *矢量 - > T.你能解釋一下嗎? –

+0

@DmitryMartovoi - 矩陣/向量乘法不可交換 - 請參閱https://en.wikipedia.org/wiki/Matrix_multiplication –