Multiplicar 2 matrices 3x2 y 2x4

Solo consultas sobre macros y código VBA Excel.
Reglas del Foro 1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!

Multiplicar 2 matrices 3x2 y 2x4

Notapor kurtero » 03 Abr 2011 01:09

Hola.. necesito que me ayuden con un ejercicio.. que es multiplicar 2 matrices 3x2 y 2x4 en vba macro.. o algún documento o manual en donde pueda guiarme.
saludos.
kurtero
Miembro Nuevo
Miembro Nuevo
 
Mensajes: 2
Registrado: 03 Abr 2011 00:42

Re: Multiplicar 2 matrices 3x2 y 2x4

Notapor SolucionesOffice » 03 Abr 2011 16:34

Hola kurtero

Para multiplicar matrices yo uso esta función (no es mia, la conseguí en Internet...)
Código: Seleccionar todo
Function M_Mult(ParamArray IPM() As Variant) As Variant
    Dim i As Long, j As Long, k As Long, L As Long, temp As Double
    Dim M As Variant, Matrix As Variant, hold As Variant
    '***********************************************
    '* Function multiplies n matrices.             *
    '* Matrices must be conformable:               *
    '* Matrix M(i) is mxn and matrix M(i+1) is nxm *
    '***********************************************
    'Cycle through the parameter array multiplying each matrix
    M = IPM(0)
    For L = LBound(IPM) To UBound(IPM) - 1
        'Check that matrices are conformable
        If UBound(M, 2) <> UBound(IPM(L + 1), 1) Then Exit Function
        'Redimension the product matrix
        ReDim Matrix(1 To UBound(M, 1), 1 To UBound(IPM(L + 1), 2))
        'Multiplication routine
        For i = 1 To UBound(M, 1)
            For j = 1 To UBound(IPM(L + 1), 2)
                For k = 1 To UBound(IPM(L + 1), 1)
                    temp = temp + M(i, k) * IPM(L + 1)(k, j)
                Next k
                Matrix(i, j) = temp
                temp = 0
            Next j
        Next i
        M = Matrix
    Next L
    M_Mult = Matrix
End Function


y el modo de usarla es el siguiente:
Código: Seleccionar todo
Sub EjemploMultiplicarMatrices()

    Dim MatrizA(3, 2)
    Dim MatrizB(2, 4)
    Dim MatrizResultado
   
    MatrizA(1, 1) = 1
    MatrizA(1, 2) = 3
    '...
    MatrizB(1, 1) = 2
    MatrizB(1, 2) = 4
    '... le das los valores que quieras a las matrices A y B

   
    'Se multiplican las matrices
    MatrizResultado = M_Mult(MatrizA, MatrizB)
   
    'MatrizResultado será una matriz 3x4
   
End Sub


Espero haberte ayudado,
Carlos
SolucionesOffice
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 19
Registrado: 07 Oct 2010 16:42
Ubicación: Madrid. España

Re: Multiplicar 2 matrices 3x2 y 2x4

Notapor mj19bg63 » 30 Oct 2012 07:33

Es mucho más fácil usando la función MMULT de Excel. Ahí va un ejemplo:

Range("A6", "B7") = Application.Evaluate("MMULT(A1:C2,E1:F3)")
mj19bg63
Miembro Nuevo
Miembro Nuevo
 
Mensajes: 1
Registrado: 30 Oct 2012 07:21


Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot], Google [Bot] y 6 invitados