Skip to content

MatrixMultiplication

Overview

Matrix multiplication of two input pins

Discussion

The matrix multiplication module implements simple two dimensional multiplication of two matrices. Both real and complex data types are supported. Complex input matrices produces complex output matrix.

Matrix representation of the each input pin and the output pin is as follows:

  • blockSize - represents the matrix rows

  • numChannels - represents the matrix columns

Transposing the first, second, or both matrices is also supported through the constructor argument MATRIX_MULT_OP. This allows users to avoid explicit traspose of the input matrices if the matrix dimension not valid for multiplication. Possible options of the argument MATRIX_MULT_OP:

  • A*B - input matrices multiplied as it is.

  • (A^T)*B - first matrix is transposed before the multiplication. i.e. dimension of the first matrix is transposed.

  • A*(B^T) - second matrix is transposed before the multiplication. i.e. dimension of the second matrix is transposed.

  • (A^T)*(B^T) - both the matrices are transposed before the multiplication. i.e. dimension of both matrices are transposed.

Module bypass behavior is same as active. i.e. module process function is called when the module status is bypassed.

Module Pack

Advanced

ClassID

classID = 1433

Type Definition

typedef struct _ModuleMatrixMultiplication
{
ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
INT32 matrixMultOp;                           // Matrix multiplication operation. Supported are A*B, (A^T)*B, A*(B^T) and (A^T)*(B^T)
void * hardware_specific_struct_pointer;      // This may point to a struct that varies based on the target platform
} ModuleMatrixMultiplicationClass;

Variables

Properties

Name Type Usage isHidden Default Value Range Units
matrixMultOp int const 1 2 Unrestricted
hardware_specific_struct_pointer void * state 1 Unrestricted

Pins

Input Pins

Name in1(A)
Description Input matrix A
Data type float
Channel range Unrestricted
Block size range Unrestricted
Sample rate range Unrestricted
Complex support Real and Complex
Name in2(B)
Description Input matrix B
Data type float
Channel range Unrestricted
Block size range Unrestricted
Sample rate range Unrestricted
Complex support Real and Complex

Output Pins

Name out
Description Output matrix
Data Type float

Scratch Pins

Channel Count 1
Block size 34
Sample rate 48000

Matlab Usage

File Name: matrix_multiplication_module.m 
 M=matrix_multiplication_module(NAME, MATRIX_MULT_OP) 
 Creates a matrix multiplication module for use in the Audio Weaver environment.  
 The module has two input pins and one output pin. Each input pin is a  
 two dimensional matrix. The number of input rows and columns  
 per input pin is determined by the upstream audio module. Output pin   
 matrix dimension is determined by the multiplication operation selection 
 from the argument MATRIX_MULT_OP. 

 Arguments: 
   NAME - name of the module. 
   MATRIX_MULT_OP - matrix multiplication type. Available options are 
                    A * B 
                   (A^T) * B 
                    A * (B^T) 
                   (A^T) * (B^T) 

               Default operation is A * (B^T) 

Copyright (c) 2026 DSP Concepts, Inc.