请高手帮忙看一下这个程序。Private Sub Command1_Click()
Dim a() As Double
Dim i As Integer
Dim j As Integer
Dim b(1 To 2, 1 To 2) As Double
b(1, 1) = 1: b(1, 2) = 3
b(2, 1) = 2: b(2, 2) = 4
a = guiyihua(b)
For i = 1 To 2
  For j = 1 To 2
    Print a(i, j)
  nextj
NextEnd Sub
'归一化
Public Function guiyihua(X() As Double) As Double
  Dim i As Integer
  Dim j As Integer
  Dim s1 As Integer
  Dim s2 As Integer
  s1 = UBound(X, 1)
  s2 = UBound(X, 2)
  ReDim z(1 To s1, 1 To s2)
  For i = 1 To s1
    For j = 1 To s2
    X(i, j) = X(i, j) / X(i, s2)
    Next j
  Next i  guiyihua = X
End Function

解决方案 »

  1.   

    在VB中数组只能一个一个元素的赋值,不能整体赋值,在Matlab中也不能这样用啊
    因此a = guiyihua(b)是错的Private Sub Command1_Click()
    Dim a() As Double
    Dim i As Integer
    Dim j As Integer
    Dim b(1 To 2, 1 To 2) As Double
    b(1, 1) = 1: b(1, 2) = 3
    b(2, 1) = 2: b(2, 2) = 4
    ReDim a(1 To 2, 1 To 2)
    'a = guiyihua(b)
    For i = 1 To 2
      For j = 1 To 2
        a(i, j) = b(i, j)
        Print a(i, j)
      Next j
    NextEnd Sub
      

  2.   

    VB6.0中不能给数组赋值,但可赋给一个变体:
    Private Sub Command1_Click()
    Dim a As Variant
    Dim i As Integer
    Dim j As Integer
    Dim b(1 To 2, 1 To 2) As Double
    b(1, 1) = 1: b(1, 2) = 3
    b(2, 1) = 2: b(2, 2) = 4
    a = guiyihua(b)
    For i = 1 To 2
      For j = 1 To 2
        Print a(i, j)
      Next j
    NextEnd Sub
    '归一化
    Public Function guiyihua(X() As Double) As Variant
      Dim i As Integer
      Dim j As Integer
      Dim s1 As Integer
      Dim s2 As Integer
      s1 = UBound(X, 1)
      s2 = UBound(X, 2)
      ReDim z(1 To s1, 1 To s2)
      For i = 1 To s1
        For j = 1 To s2
        X(i, j) = X(i, j) / X(i, s2)
        Next j
      Next i  guiyihua = X
    End Function
      

  3.   

    上面的程序看错了,重新给你弄一下错在函数的定义上:因为返回的是数组,因此定义的时候最后需要加上(),这样就不会出错了Public Function guiyihua(X() As Double) As Double()
          Dim i As Integer
          Dim j As Integer
          Dim s1 As Integer
          Dim s2 As Integer
          s1 = UBound(X, 1)
          s2 = UBound(X, 2)
          ReDim z(1 To s1, 1 To s2)
          For i = 1 To s1
            For j = 1 To s2
            X(i, j) = X(i, j) / X(i, s2)
            Next j
          Next i
        
          guiyihua = X
    End Function
      

  4.   

    dim a() as Double,只定义了其类型,要引用时应该,redim a(i,j) as double 确定好其长度
    函数guiyihua返回的是double ,你又把它赋给数组.
    具体的原理等高手来解.