+ Reply to Thread
Results 1 to 5 of 5

how array functions work mmult,minverse etc

  1. #1
    ramki
    Guest

    how array functions work mmult,minverse etc

    can any one help me in writing my own code for this matrix functions?

    please


  2. #2
    vezerid
    Guest

    Re: how array functions work mmult,minverse etc

    An array function must be entered in a group of cells. Let us say you
    have a 2x3 matrix in A1:C2. Another 3x4 matrix in D1:G3. The result is
    a 2x4 matrix. Decide where you want this matrix entered, say in A9:D11.

    Select A9:D11
    Type in the formula bar: =MMULT(A1:C2, D1:G3)
    Press Shift+Ctrl+Enter

    Excel will place the resulting matrix in these cells. From this point
    on, A9:D11 is a formula array and you can not delete part of it, only
    the entire array (when in an formula array, Ctrl+/ will select the
    entire array).

    To edit, select the entire range, click in the formula bar, edit and
    Shift+Ctrl+Enter again.

    MINVERSE will work in a similar manner. Select the destination and
    enter =MINVERSE(range). In this case of course, range must be a square
    matrix as should the input.

    HTH
    Kostis Vezerides


  3. #3
    ramki
    Guest

    Re: how array functions work mmult,minverse etc

    hello thanks for the reply but what i want is something differrent i
    want to see the internal coding i mean how mmult access variables in
    the code and multiply in the code. can you help me in this regard?
    vezerid wrote:
    > An array function must be entered in a group of cells. Let us say you
    > have a 2x3 matrix in A1:C2. Another 3x4 matrix in D1:G3. The result is
    > a 2x4 matrix. Decide where you want this matrix entered, say in A9:D11.
    >
    > Select A9:D11
    > Type in the formula bar: =MMULT(A1:C2, D1:G3)
    > Press Shift+Ctrl+Enter
    >
    > Excel will place the resulting matrix in these cells. From this point
    > on, A9:D11 is a formula array and you can not delete part of it, only
    > the entire array (when in an formula array, Ctrl+/ will select the
    > entire array).
    >
    > To edit, select the entire range, click in the formula bar, edit and
    > Shift+Ctrl+Enter again.
    >
    > MINVERSE will work in a similar manner. Select the destination and
    > enter =MINVERSE(range). In this case of course, range must be a square
    > matrix as should the input.
    >
    > HTH
    > Kostis Vezerides



  4. #4
    ramki
    Guest

    Re: how array functions work mmult,minverse etc


    vezerid wrote:
    > An array function must be entered in a group of cells. Let us say you
    > have a 2x3 matrix in A1:C2. Another 3x4 matrix in D1:G3. The result is
    > a 2x4 matrix. Decide where you want this matrix entered, say in A9:D11.
    >
    > Select A9:D11
    > Type in the formula bar: =MMULT(A1:C2, D1:G3)
    > Press Shift+Ctrl+Enter
    >
    > Excel will place the resulting matrix in these cells. From this point
    > on, A9:D11 is a formula array and you can not delete part of it, only
    > the entire array (when in an formula array, Ctrl+/ will select the
    > entire array).
    >
    > To edit, select the entire range, click in the formula bar, edit and
    > Shift+Ctrl+Enter again.
    >
    > MINVERSE will work in a similar manner. Select the destination and
    > enter =MINVERSE(range). In this case of course, range must be a square
    > matrix as should the input.
    >
    > HTH
    > Kostis Vezerides



  5. #5
    vezerid
    Guest

    Re: how array functions work mmult,minverse etc

    Ramki

    The following code will emulate MMULT(). I have included some error
    checking so that you see the code for returning an Excel error value.
    The code below is not necessarily the best available but it illustrates
    to some degree how ranges and variables can communicate. Further work
    would require search in the .programming newsgroup. Also, for more
    explicit handling of array variables inside a VBA routine the online
    help on the Dim statement will be a good start.

    ==============>

    Option Base 1
    Function MatrixMult(m1 As Range, m2 As Range) As Variant
    Dim m 'This is the variable that will become an array and will be
    returned
    Dim a1, a2 'These are the variables into which we will read m1 and m2
    Dim c As Range 'To be used in various checks.
    ' Error checking
    ' Any blanks or text in the cells?
    For Each c In m1
    If Not IsNumeric(c.Value) Or IsEmpty(c) Then
    MatrixMult = CVErr(xlErrValue)
    Exit Function
    End If
    Next c
    For Each c In m2
    If Not IsNumeric(c.Value) Or IsEmpty(c) Then
    MatrixMult = CVErr(xlErrValue)
    Exit Function
    End If
    Next c
    ' Do the two arrays have compatible dimensions?
    If m1.Columns.Count <> m2.Rows.Count Then
    MatrixMult = CVErr(xlErrValue)
    End If

    ' Everything OK, now the operations
    ' First dimensionalize the output matrix
    ReDim m(m1.Rows.Count, m2.Columns.Count)
    ' Assign the ranges to the variables. No ReDim necessary here b/c of
    assignment
    a1 = m1
    a2 = m2
    ' Now the loop to calculate the output matrix
    For i = LBound(a1, 1) To UBound(a1, 1)
    For j = LBound(a2, 2) To UBound(a2, 2)
    tot = 0
    For k = LBound(a1, 2) To UBound(a1, 2)
    tot = tot + a1(i, k) * a2(k, j)
    Next k
    m(i, j) = tot
    Next j
    Next i
    ' Finally we assign the matrix to the function name
    MatrixMult = m
    End Function

    <=======================

    HTH
    Kostis Vezerides


+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1