【发布时间】:2020-04-19 13:33:58
【问题描述】:
enter image description here我的乘法结果矩阵是 3x1。我想将我的 VBA 定义函数应用于结果矩阵 h,并创建一个新矩阵 h1。有什么建议可以改进此代码吗?在这种情况下,a for each 会更好吗?
感谢弗伦斯
Function sigmoid(X As Double) As Double
sigmoid = 1 / (1 + Exp(-X))
End Function
Sub arraymult()
Dim i(0 To 2, 0 To 0) As Double
Dim w(0 To 1, 0 To 2) As Double
i(0, 0) = 1
i(1, 0) = 2
i(2, 0) = 6
w(0, 0) = 2
w(0, 1) = 1
w(0, 2) = 1
w(1, 0) = 1
w(1, 1) = 1
w(1, 2) = 1
h = Application.WorksheetFunction.MMult(w, i)
For j = 0 To 2
h1(0, j) = sigmoid(h(0, j)) 'problem here
Next j
End Sub
【问题讨论】:
-
"乘法的结果矩阵是 3x1。" - 真的吗?
-
i(3x1)* w(2x3)=h(3x1)
-
不应该是=h(3x3)吗?
-
2x1,我的错
-
将
For j = 0 To 2改为For j = Lbound(h,1) to Ubound(h,1)和h1(0, j) = sigmoid(h(j, 1))你还需要声明h1:Dim h1() as variant和Redim h1(0 to 0, lbound(h,1) to Ubound(h ,1))`
标签: vba foreach matrix-multiplication